簡単な音声コマンド検出

簡単な音声コマンド検出

マイクで簡単な単語やフレーズを検出し、そのフレーズに基づいてアクションを実行したいと思います。 PythonライブラリとGoogle Text to Speechを見ましたが、これらは過剰であるようです1。英語のすべての音素や単語を認識できるものは必要ありません。 「go to bed」や「sleep」などの特定のフレーズを検出して、コンピュータをスリープモードに切り替えたいだけです。

あれこれ検索してみましたが、ほとんど10年前の口述プログラムと投稿だけを見つけましたね。

1. 例えば、偶然発見した。この記事Webサービスに依存するか、Sphinxなどの重機をインストールしてください。可能なすべてのフレーズの代わりに特定のフレーズに応答するようにモデルを訓練することはできませんか?

答え1

これは機械学習/ニューラルネットワークを自分で学習できる面白いプロジェクトですが、これがどれほど難しいかを過小評価することができます。 「羊」、「つぼみ」、または「急な」と言うとき(またはテレビで音声を認識している場合)、システムがシャットダウンしたくありません。 「アレクサ」はランダムに選ばれたものではありません。 「ksssa」の長い歯垢音は意図的に高周波で明確に区別されます。 Alexaは、新しいサンプリングイベントの開始を通知するためにのみ存在します。連続音声を処理することは追加の問題です。

通常、FFTを介して音声サンプルを配置してスペクトル画像を取得し、ピークボリュームに基づいて正規化し、慎重に選択した周波数でサンプリングします。コンピュータは最初に合理的に正規化されていないと、生の波形を処理できません。

次に、必要なトレーニング範囲外の音の例だけでなく、各単語やフレーズの多くの例が必要です。 「上記の項目のうちなし」というトレーニングカテゴリがない場合は、「最も近い」音を推測します。いくつかのスペル修正リストが次のように始まっても、どれほど役に立たないかを考えてみましょう。テキスト入力する。

自分の声で訓練する方がはるかに簡単です。商業システムはまた、地域のイントネーション、声のトーン(男性/女性など)、バックグラウンドノイズ(非線形マイク応答を含む)をフィルタリングする必要があります。

「sleep」と言ってアプリに「cmd 19: 72% match: sleep」などの内容が表示されるようにしても、これを一種のメニュー項目として使用して、その機能を実装したりサービスを提供するために必要なすべてのコマンドを実行する必要があります。 。対応するアクション。

関連情報