キノコの自省録

日々適当クリエイト

Witch Criedについて 音声認識編

プレイ環境が超限られるゲーム「Witch Cried」の音声認識についてのお話し。


最近では、Google音声認識やSiriを始め、音声認識エンジンの競争が活発化しています。
このような既存の素晴らしい音声認識エンジンがあるので、こういうゲームを作る場合、当然それをありがたく使わせていただいて作ろうと考えると思います。
自分もそうでした。
しかし、魔法詠唱という用途には微塵も役に立たないことに、5分とかからず気づきました。
理由は以下の通り。

  1. 自然な言語しか入らない
  2. ネットワークが必要で、レスポンスも遅くなる
  3. 勝手に打ち切られる
  4. iOSだとGoogle音声認識が使えず、SiriもAPI公開していない

自然な言語しか入らない

音声認識の主目的は検索なので当然といえば当然。
ファイアのような普通の単語なら当然入りますが、よくわからない言語や、言い回しが特殊なものは、まともに認識されません。
ずっと同じ認識結果なら、百歩譲って使えるかもしれませんが、1文字違うだけで、その魔法を発動すべきか否かの判断が難しくなります。日本語なら漢字がある分尚更大変です。
この1つ目の問題の時点で、もう既存の音声認識エンジンを使用するのは無理です。

ネットワークとレスポンス

最近のスマホでは、ローカル音声認識が入っていたような覚えもありますが、ネットワーク環境じゃないと基本使えなかった気がします。逆にネットワーク介してしまうと、間違いなくレスポンスが悪くなります。ゲームとしてはかなり致命です。やっててイライラするでしょう。

勝手に打ち切られる

間が空くと、勝手に終話と判断されてしまいます。この欠点に目をつぶったとしても、今度は秒数制限に引っかかります。つまり長い詠唱も打ち切られてしまいます。このゲームでは、これは結構致命的です。

iOS問題

Androidアプリという策もありますが、Androidはハードウェア使うアプリは鬼門なので、
あまりやりたくないというのが本音。
iOSと一緒ならともかく、単独リリースは避けたい。

ということで

既存の音声認識エンジンは、目的に合わないため、仕方なく自作。
といっても、そんな大層なことはやっていません。
DTW(Dynamic Time Warping, 動的時間伸縮法)を使って振幅スペクトルを比較することをベースにした、
音声認識の古典的手法を取っています。
現代の音声認識は、特徴抽出+言語辞書を利用するのが一般的だと思いますが、
言語辞書を噛ませた時点で、目的と合わなくなります。
そのため、音響特徴抽出を、ダイレクトに類似計算しているのが、今回の音声認識エンジンです。


あ、ちなみにこの魔法回路を魔道エンジンと呼んでいます。
どうでもいいですね。

課題

未公開アプリなので、話者協力を集うことができず、ほとんど自分の声のみでテストしています。
正直不安です。特に女性の声。
シャウトアラームがめざましテレビで紹介された時、
筧さんの声があまり認識されていなかったのをみて、周波数帯域を絞り込み過ぎたことに気が付きました。
実家に帰ったときに姉の協力を得て若干調整しましたが、調整しきれたかどうか、というところ。


アルゴリズム自体の改良や、ノイズリダクションなど、他にもやりたいことはあるのですが、
一人じゃ手が回りません。