HARD2021: Web Speech APIで音声認識しよう!

この記事はHARD2021(Home AI Robot Development)スプリングワークショップ用です。 Web Speech APIをご存知でしょうか。これを使うブラウザで音声認識が簡単にできます。今回は、Yuki Furuta (furushchev)さんが開発されたWeb Speech APIをROSで使うためのrwt_speech_recognitionパッケージを使って音声認識をします。この記事は、furushchevさんの解説記事を参考にしています。

作業環境

  • Ubuntu18.04
  • ROS Melodic
  • Google Chrome バージョン: 84.0.4147.135 (64 ビット)(他のブラウザやChromeの最新バージョンは対応してない)

visualization_rwt のインストール

  1. 以下のサイトのとおり実施した。推奨されているaptでのインストールはmelodic用のパッケージが見つけられなかったのでソースからビルドした。wstoolはワークスペースのバージョン管理システム。https://github.com/tork-a/visualization_rwt
  2. ワークスペースを初期化する。
    • $ cd ~/catkin_ws
    • $ wstool init src
  3. ワークスペースに新しいリポジトリを設定する。
    • $ cd src
    • $ wstool set visualization_rwt --git https://github.com/tork-a/visualization_rwt/

      • 次のように聞かれるので、y を入力する。
  4. ワークスペースのリポジトリをアップデートする。
    • $ wstool update
  5. 依存関係の解消
    • $ cd ~/catkin_ws
    • $ rosdep install --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} -r -y
  6. ビルド
    • $ catkin build

Google Chrome バージョン: 84.0.4147.135 (64 ビット)のインストール

  • 以下のサイトからGoogle Chrome Linux Version 64-bit deb for Ubuntu/Debian Version 84.0.4147.135 をダウンロードする。
  • ダウンロードしたファイル(google-chrome-stable_current_amd64_86.deb) のあるフォルダをファイルアプリで開き、そのファイルをダブルクリックするとインストールできる。

実行

  • 新しく端末を開き、以下のコマンドを実行する
    • $ roslaunch rwt_speech_recognition rwt_speech_recognition.launch
  •  以下のリンクをクリックするかChromeブラウザを起動し以下のアドレスを検索窓に入れる。
  • 音声認識をスタートさせるためには、以下のChrome画面で緑に塗られている[Start]ボタンをクリックする。
  • 次の許可を求めています「マイクを使用する」のウインドウが開くので「許可」をクリックする。
  • Chromeの画面のマイクに英語で話しかけ、認識結果が表示されていれば成功。日本語で話しかけたい場合はブラウザの[Language]を日本語にすればよい。デフォルトではROSの[Topic]が/Tablet/voiceになっているが、この画面から自由に変更できる。なお、連続して音声認識をしたい場合は[Mode]をContinuousにすればよい。
  • では、最後にトピックを確認しよう。別の端末を開き、以下のコマンドで認識結果のトピック/Tablet/voiceを表示する。
    • $ rostopic echo /Tablet/voice

  • うまくいかない場合は、インストールの4,5,6番の作業を繰り返してみよう。私の環境ではそれで問題が解決した。

カスタマイズ

  • デフォルトではトピック名が/Tablet/voiceになっている。変更したいときは以下のファイル29行目のvalueの値を変更する。
    • ~/catkin_ws/src/visualization_rwt/rwt_speech_recognition/www/index.html

ハンズオン

  1. 上の説明と動画に従って実行してみよう。試しに次のスティーブン・ジョブズのスタンフォード大学卒業生に向けた有名なスピーチの最後の部分を発話して認識させてみましょう。

    Beneath it were the words: “Stay Hungry. Stay Foolish.” It was their farewell message as they signed off. Stay Hungry. Stay Foolish. And I have always wished that for myself. And now, as you graduate to begin anew, I wish that for you.

  2. トピック “/Tablet/voice”をサブスクライブして、信頼度(confidence)の一番高い認識結果をパブリッシュ(トピック名 “speech_recog”)し、端末にも表示するプログラムを作ろう。
  3. 音声コマンドでGazebo上のルンバを動かすプログラムを作ろう。音声コマンドは何でもよいですが、このrwt_speech_recognitionパッケージは英語しか使えないので、音声コマンドは英語になります。例えば、”go forward” , “go backward”, ” turn left”, “turn right”, “stop”などが考えられます。

終わり

コメント

タイトルとURLをコピーしました