HARD2021:軽量ROSパッケージpicottsを使い音声合成しよう!

HARD2021(Home AI Robot Development)スプリングワークショップ用です。今回は、オンライン、オフラインの色々な音声合成エンジンをサポートしているArnaud Rameyさんが開発したROSパッケージpicottsを紹介します。残念ながら日本語は対応していません。

サポートしているエンジン

  • オフライン:espeak, Festival, GNUstep, MaryTTS, pico2wave, speech_dispatcher
  • オンライン:AT&T, Google TTS, Ivona, Microsoft

インストール

  • picottsの取得
    • $ cd ~/catkin_ws/src
    • $ git clone https://github.com/arnaud-ramey/picotts.git
  •  各エンジン
    • MaryTTS(オフラインの中ではとてもクオリティが高い)
      • $ sudo apt install mplayer (mplayerは他のエンジンでも使うので必須)
      • $ cd ~/src (~/srcがない場合はmkdir srcで作成してください)
      • $ sudo apt install default-jre
      • $ wget https://github.com/marytts/marytts/releases/download/v5.2/marytts-5.2.zip
      • $ unzip marytts-5.2.zip
      • $ cd marytts-5.2
      • $ wget https://github.com/marytts/voice-upmc-pierre-hsmm/releases/download/v5.2/voice-upmc-pierre-hsmm-5.2.zip
      • $ unzip voice-upmc-pierre-hsmm-5.2.zip
    •  GNUstep
      • $ sudo apt install gnustep-gui-runtime
    • speech_dispatcher
      • $ sudo apt install speech-dispatcher
  • 必要なファイルのインストール
    • $ source ~/.bashrc
    • $ cd ~/catkin_ws/src
    • $ rosdep install picotts --ignore-src
    • ビルド
      • $ cd ~/catkin_ws
      • $ catkin build picotts
  • エラーが出る場合
    • rosdepとビルドで以下のようなエラーが出る場合は、
      • ERROR: Rosdep cannot find all required resources to answer your query
        Missing resource picotts
        ROS path [0]=/opt/ros/melodic/share/ros
    • 次のコマンドを実行してビルドを再実行する。
      • $ cd ~/catkin_ws
      • $ rosdep install --from-paths src --ignore-src -r -y

実 行

  • MaryTTSを使う場合(使わない場合は次へ進む):以下のコマンドによりローカルでサーバーと設定用のクライアントを起動する。
    • $ cd ~/src/marytts-5.2/bin
    • $ ./marytts-server
    • 別の端末を開き、同じディレクトリにあるクライアントプログラムを起動する。
      • $ cd ~/src/marytts-5.2/bin
      • $ ./marytts-client
  •  もう一つ、別の端末を開き、次のコマンドを実行してROSマスターを起動する。
    • $ roscore
  • 別の端末を開き、次のコマンドでpicottsを実行する。
    • $ rosrun picotts picotts.exe

テスト

  • 別の端末を開き、次のコマンドを実行。音が聞こえたら成功!
    • $ rostopic pub /tts std_msgs/String "My name is Happy Robot"
  • エンジンの切り替え: 別の端末を開き、ネットに接続しているときはMicroSoftがクオリティが高いのでおすすめ。
    •  Microsoft (オンライン)
      • $ rostopic pub /picotts/engine std_msgs/String "microsoft"
    • MaryTTS (オフライン)
      • $ rostopic pub /picotts/engine std_msgs/String "pico"
      • $ rostopic pub /picotts/engine std_msgs/String "marytts"

トピック

  • /tts  [std_msgs/String]  発話される文字列
  • /picotts/engine  [std_msgs/String]  使用されるエンジン。picottsノード実行中に変更可能

その他

ハンズオン

  1. デフォルトのエンジンで、次の文章を発話させてみよう。次に、エンジンをMicrosoftに変えて発話させてみよう。

    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. rostopic pubコマンドを使って”My name is Happy Robot”と発話させましたが、これをpythonプログラムで実装しよう。
  3. オウム返しのpythonプログラムを作ろう。あなたの発話を音声認識エンジンで変換して、認識結果をトピック名/tts、メッセージ型std_msgs/Stringでパブリッシュします。次に、picottsノードを使い、その認識結果をコンピュータに発話させましょう。
  4. 日本語の発話をしたい場合は、PythonのgTTSライブラリがあります。SpeechRecognitionをROS化した要領でROS化してみましょう。なお、Yuki Furutaさんがros_gttsパッケージを公開されていますので、ソースコードを読んでみましょう。

以上

コメント

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