エンジニアブログ

音声認識による3Dコントロールを作ってみました 2

こんにちは、開発本部の0009です。
今回は音声認識による3Dコントロールのパート2です。
「右~」と語尾を伸ばす具合で、3Dモデルが移動する量を調整できるようにしてみました。
(@中の人補足:「みぎいぃぃ」という感じです。)

↓[VR] ボタンを押してみてください
↓画面左下に3つのボタンとスライダーが現れると思います
↓各ボタンを押すと、今回の3Dコントロールが開始できます
↓対応している環境では, マイクの共有が求められます

3Dコントロールは、それぞれ次の言葉が認識されたときに作動します。
・3Dモデル移動(6種類) : [上][下][左][右][前][奥]
語尾を伸ばしてみてください。[右]の場合では、「右~」にようにです。
伸ばしている間、3Dモデルが移動し続けます。時間当たりの移動量を、音声の音量と連動させています。
音声認識結果を右上の窓に、音声認識APIの状態を左上の窓に出しています。
左上の窓に speechstart が表示されている時、音声が発話中であると認識されています。

音声認識によるコントロールでは、認識できた言葉に対応するコマンドを実行するのが主です。
一方、3Dモデルの移動などでは、どのコマンドを実行するかだけでは物足りません。
“どれだけ”の情報も欲しくありませんか?
マウスでの操作では、ボタンを押し続けている間、マウスを移動した方向に移動します。
これと同じことを音声でもできないかと考えました。私が行きついた答えは「右~」でした。

さて、3つのボタンでは作りが異なります。やりたいことができている順に左から並んでいます。
・[認識+音響] : 音声認識と音響処理を並行処理
・[認識->音響] : 音声認識完了後、音響処理に切り替え
・[認識] : 音声認識での発話区間検出による簡易版

3バージョン作成した理由は、環境ごとのWeb APIの動作状況の違いです。
今回用いているAPIは、次の2つです。
・音声認識:Web Speech API の Speech Recognition
・音響処理:Web Audio API
つまり、これまで作成した2つのコンテンツを合体させるだけでできます。
音声認識による3Dコントロール
音量による3Dコントロール
いいえ、できませんでした。
例えば、Android の Chrome では、Web Speech API と Web Audio API が同時に利用できませんでした。

ちなみに、もう1バージョン簡易版を作成していました。
Web Audio API にて簡易版の母音検出を行う、Web Speech API が使えない環境向けです。
「あー」「いー」「うー」「えー」「おー」「んー」で操作します。
社内でデモしたところ、「恥ずかしい」との評判でした。残念。
このような紆余曲折があり、思い付いてからこの記事までにちょうど1年かかりました。
もちろん担当業務がありますので、全然断続的にですけれども。
シンプルで滑稽なアイデアであっても社内に相談できる方もおり、ありがたい環境であるなと思います。


<参考にした記事>
Web Speech API
Web Audio API