#M5StackLLM wakeupレスポンス音声を入れ替える

 ウェイクワードがデフォルトではHELLOWなのだけど、これがすこぶる認識しにくい。

 根本的に私の発音がよろしくないのだろうけど、Google翻訳でHellowを音声にして流すと100%認識するので悔しい。

 中の人から、HELOとかHELLOにすると認識しやすくなるというアドバイスをもらったのだけど、変更しても反応はあまり変わらない。Google翻訳のHellowにも反応しなくなるので、ちょっとつらすぎた。

 ChatGPTにウェイクワードとして適切なものを考えてもらった。

 検出しやすい単語の特徴としては、以下の特性があるそうな。ホントかよw

  ・母音が多い(特に「a」「o」「e」など口の開きが大きい音)

  ・音の長さが短すぎず長すぎない(2~3音節程度が理想)

  ・子音のコントラストが明確(特に破裂音「p」「t」「k」や摩擦音「s」「sh」)

  ・日常会話で頻出しすぎない(誤検出を防ぐ)

 提案で出てきたのが以下。

"OKAY"(オーケー)

"HEY"(ヘイ)

"ECHO"(エコー)

"ALPHA"(アルファ)

"NOVA"(ノヴァ)

"TANGO"(タンゴ)

"MILO"(マイロ)

"VIVA"(ヴィヴァ)

 試してみると、ECHOが認識率が高いようだ。それでも、1/2くらいだけどw

 さて、ウェイクワードを認識すると、おっさんの「ハィ!」って音声が流れる。再生しているのはこのファイル。

/opt/m5stack/data/audio/wakeup_en_us.wav
/opt/m5stack/data/audio/wakeup_zh_cn.wav

 ボイスアシスタントの音声が巻き舌強めの小さい女の子とという感じの音声になるので、声での反応は似た声を作るのが難しいのでやめておく。電子音くらいでいいだろう。フリーの音源などを回ってみたけど、どうもそれっぽいいい音がない。

 こちらもChatGPTに音声ファイルを作ってもらう。便利だな... wavファイルの候補が3つほどできた。無難な感じのものを選んでターゲットにダウンロードして差し替える。

% adb shell
sh-5.1# mv /opt/m5stack/data/audio/wakeup_en_us.wav /opt/m5stack/data/audio/wakeup_en_us.wav.org
sh-5.1# ls /opt/m5stack/data/audio/
hashes.txt  hashes_.txt  wakeup_en_us.wav.org  wakeup_zh_cn.wav
sh-5.1# exit
exit
% adb push ~/Downloads/ksw_multi_beep.wav /opt/m5stack/data/audio/wakeup_en_us.wav
/Users/kinneko/Downloads/ksw_multi_bee...ped. 38.1 MB/s (57374 bytes in 0.001s)

 差し替えで応答は変わったのだけど、なんか、すごく間延びした感じに聞こえる。これが、ALSAドライバのパッチが引き起こしている問題なんだろうか?

sh-5.1# file wakeup_en_us.wav
wakeup_en_us.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 44100 Hz
sh-5.1# file wakeup_en_us.wav.org
wakeup_en_us.wav.org: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 16000 Hz

 あー、なるほど。変換しないとダメか。VLCで変換しようとしたら、サンプリングレートで16000Hzとか選べないじゃん...

 なんか、可能なパラメータで変換するとホワイトノイズっぽい音しか再生されない。

 なんか、面倒になったので、これでいいかw

      100円投げ銭  https://kinneko.booth.pm/items/1963720


オリジナル投稿:
#M5StackLLM wakeupレスポンス音声を入れ替える|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/9382713