OpenHRIサンプルシステムを動かす

このドキュメントでは、OpenHRIAudio、OpenHRIVoice、SEATSATのRTコンポーネントを使ったシステムの説明をします。

※ 動作確認で音声入力を行うためマイクをご用意ください。ヘッドホンもあるとより音声確認しやすくなります。

サンプルシステムの概要

サンプルシステム「音声合成システム」は、マイクからの入力された日本語の発話音声を認識し、その結果を発話するようなシステムです。

以下のOpenHRIのコンポーネントとサンプルデータopenhri_sample.zip を使って実現します。

サンプルシステムの構成

「音声合成システム」に必要なRTコンポーネントは、OpenHRIAudio、OpenHRIVoice、SEATSATパッケージに含まれています。

サンプルモデルデータOpenHRI_sample.zipはリンクからダウンロードし、適当なディレクトリに解凍しておきます。

※ このドキュメントはUbutnu12.04の場合で説明します。Ubuntu14.04の場合、portaudioinputとportaudiooutputはpulseaudioinputとpulseaudiooutputに読み替えて操作します。

  • portaudioinput
  • portaudioinputコンポーネントはマイクから音声データを取得し出力するコンポーネントです。 Ubuntu14.04の場合、pulseaudioinputを使用します。
  • portaudiooutput
  • portaudioinputコンポーネントは音声データをマイクやスピーカに出力するコンポーネントです。 Ubuntu14.04の場合、pulseaudiooutputを使用します。
  • juliusrtc
  • Juliusコンポーネントは文法ファイルを元に日本語・英語の音声を認識するコンポーネントです。 起動時に音声認識文法モデル(XXX.grxml)を読み込んで起動します。
  • seat
  • seatコンポーネントは文法ファイルを元にパラフレーズマッチングする対話制御コンポーネントです。起動時に状態遷移モデルファイル(XXX.seatml)を指定して起動します。
  • openjtalkrtc
  • openjtalkコンポーネントは日本語音声合成エンジンopenjtalkを使用した音声合成コンポーネントです。
  • sample.grxml
  • Juliusコンポーネントが起動時に読み込む音声認識文法モデルです。
  • 詳細な内容は次の項で解説します。
  • sample.seatml
  • SEATコンポーネントが起動時に読み込む状態遷移モデルです。
  • 詳細な内容は次の項で解説します。

サンプルデータの確認

sample.grxml

Juliusコンポーネントが起動時に読み込む音声認識文法モデルです。入力は「こんにちは」「こんばんわ」「さようなら」「おはよう」を定義しています。

<?xml version="1.0" encoding="UTF-8" ?>
<grammar xmlns="http://www.w3.org/2001/06/grammar"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.w3.org/2001/06/grammar
                             http://www.w3.org/TR/speech-grammar/grammar.xsd"
         xml:lang="jp"
         version="1.0" mode="voice" root="command">
 
  <rule id="command">
    <one-of>
      <item>こんにちは</item>
      <item>こんばんわ</item>
      <item>さようなら</item>
      <item>おはよう</item>
    </one-of>
  </rule>
 
</grammar>

次の依存パッケージのインストールを完了した後、コマンドを実行してウィンドウで状態遷移モデルの構造を確認してみましょう。:

$ sudo apt-get update graphviz
$ srgstojulius sample.grxml | juliustographviz | dot -Txlib
alternate text

sample.grxmlのグラフ表現

sample.seatml

SEATコンポーネントが起動時に読み込む状態遷移モデルです。「こんにちは」のとき「ハロー」、「こんばんわ」は「グッドイブニング」、「さようなら」は「シーユー」、「おはよう」は「グッモーニング」をspeechoutポートから出力します。

<?xml version="1.0" encoding="UTF-8"?>
<seatml>
  <general name="flaggame">
    <agent name="speechin" type="rtcin" datatype="TimedString" />
    <agent name="command" type="rtcout" datatype="TimedString" />
  </general>
  <state name="sample">
    <rule>
      <key>こんにちは</key>
      <command host="command">はろー</command>
    </rule>
    <rule>
      <key>こんばんわ</key>
      <command host="command">ぐっいぶにんぐ</command>
    </rule>
    <rule>
      <key>さようなら</key>
      <command host="command">しーゆー</command>
    </rule>
    <rule>
      <key>おはよう</key>
      <command host="command">ぐっもーにんぐ</command>
    </rule>
  </state>
</seatml>

次のコマンドを実行後、ウィンドウで状態遷移モデルの構造を確認してみましょう。:

$ seatmltographviz sample.seatml | dot -Txlib
alternate text

sample.seatmlのグラフ表現

次の項からシステム構築を始めます。

RTSystemEditerの準備

RTコンポーネントを操作するために、RTSystemEditer が必要です。

インストールが完了していない場合は、 こちら RTSystemEditerのインストール を参考にインストールを完了します。

※ リンクは現在のウィンドウで開くため「 RTSystemEditerのインストール 」が終了した後に、ブラウザの「戻る」でこのドキュメントに移動します。

インストールが完了したら、RTSystemEditerを起動し「コンポーネントを起動・操作する」に進みます。

コンポーネントを起動・操作する

サンプルコンポーネントは/usr/binディレクトリにインストールされますので、次のコマンドでどのディレクトリからでも起動できます。:

OpenHRIのインストールが完了していない場合は、 ` こちら <http://openrtc.org/OpenHRI/install/OpenHRI_linux.html>`_ を参考にインストールを完了します。

※ リンクは現在のウィンドウで開くためインストールが終了した後に、ブラウザの「戻る」でこのドキュメントに移動します。

コンソールを起動して各コンポーネントを起動します。:

$ /usr/bin/portaudioinput
$ /usr/bin/portaudiooutput
$ /usr/bin/openjtalkrtc
$ /usr/bin/juliusrtc -g
  (起動後、ファイル選択ウィンドウを表示するので、sample.grxmlを選択します。
   選択後もウィンドウは閉じないので、最小化ボタンをクリックします。)
$ /usr/bin/seat -g
  (起動後、ファイル選択ウィンドウを表示するので、sample.seatmlを選択します。
   選択後もウィンドウは閉じないので、最小化ボタンをクリックします。)

RTSystemEditerを表示し、ネームサービスビューにあるネームサーバとコンテキストの[横向き▲]ボタンをクリックし、実行ファイルを表示します。

.

alternate text

ネームサービスビューの画面

.

ネームサーバが表示されていない場合は、次の操作を行って表示しましょう。

ネームサービスビューの[ネームサーバを追加]ボタンをクリックし、「ネームサーバへ接続」ウィンドウを表示します。”localhost”または”127.0.0.1”と入力した後に[OK]をクリックし、ネームサーバを登録します。

.

alternate text

ネームサーバの追加

.

次に実行ファイルをドラッグアンドドロップし、[System Diagram]に表示します。

.

alternate text

ドラッグアンドドロップ

.

実行ファイルを接続します。

次の画像と設定を参考にRTコンポーネントの出力ポートと入力ポートをドラッグアンドドロップします。データポートからドラッグを始めると線を表示します。接続先のポートでドロップすると、Connector Profileウィンドウを表示するのでそのまま[OK]を押下します。

portaudioinput(AudioDataOut)---(data)juliusrtc
juliusrtc(result)---(speechin)seat
seat(command)---(text)openjtalkrtc
openjtalkrtc(result)---(AudioDataIn)portaudiooutput

.

alternate text

サンプルシステム構成

.

接続が完了したら、[All Activate]ボタンをクリックして、実行ファイルをアクティベートします。 実行ファイルが、青から緑色に変更になったらアクティベートは成功です。マイクから音声を入力すると、スピーカ又はヘッドホンで音声を確認できます。

音声入力が「こんにちは」の場合「ハロー」、「こんばんわ」の場合「グッイブニング」、「さようなら」の場合「シーユー」の音声が確認できます。

お問い合わせ先

不明な点や不具合が起きた場合、OpenRTM-aistのフォーラムまたはメーリングリストにご連絡ください。