メモ:スタックチャンに関するまとめ (3)

現状はラジコンでしかない センスチャン を、どんなロボットにしていくか。

まずは本家である スタックチャン の機能を調査しました。

Moddable版ファームウェア (ししかわさん版)

  • Renderer: 顔の描画
  • Driver: モータ等の駆動
  • TTS: 音声合成
    • 事前生成 : ビルド時に生成した音声をスタンドアロンで再生
    • リモート : オンラインでTTSサーバに生成させた音声をストリーム
    • Google Cloud Text-to-Speech API, Coqui AI TTS, VoiceVoxなどに対応


AIスタックチャン (robo8080さん版)

  1. M5Stack内蔵マイクでウェイクワードを認識し音声認識を起動
  2. Google Cloud TTS または OpenAI Whisperで音声認識
  3. 音声認識結果をChatGPTへ送り応答を生成
  4. Web版VoicevoxでChatGPTの応答を音声合成
  5. M5Stackーavatarで顔の表示及び音声合成に合わせてリップシンク
  6. サーボモーター2軸でスタックチャンのパン/チルトを制御
  • 音声認識→応答を生成→音声合成 をWeb上のサービスを利用して実現している。
  • ウェイクワードの検出はエッジ側(M5Stack)でおこなっている。 (MFCC=メル周波数ケプストラム係数)
  • リップシンクは、再生中の音声レベルに比例して口を開ける。(Avatar::setMouthOpenRatio())


stackchan-arduinoライブラリ

  • 設定ファイルの読み込み機能 : SDカードからYAML形式の各種設定ファイルを読み込む
  • サーボのコントロール機能 : 3種類のサーボを設定で切り替えて使用可


で、センスチャン どうするか?

  • センスチャン はArduinoベースなので、主に参考にするのは AIスタックチャン および stackchan-arduinoライブラリ
  • Avatar::getGaze()に応じたパン/チルトの代わりに、車輪でうろちょろする。(まずはこれ)
  • ウェイクワード検出はしたい。(まずはAIスタックチャン相当の移植。SPRESENSEならもっと頑張れる?)
  • 野望としてはローカルでの音声合成。(AquesTalk pico がAVRで動くのだから理屈上は可能のはず。)
    • 日本語の読み方は辞書が必要でローカルでは難しそう。それらをリモートに頼るとしても文字データだけで済むから通信量は少なくて済むはず。
    • VoiceVoxみたいなのはスペック的にも到底無理。目指すのは AquesTalk pico のような方向性。
    • AquesTalk pico LSI外付けがお手軽だが、SPRESENSEでそれやるのは敗北感。