独自の音声認識コードの作成[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 問題の説明 ハードウェアプロジェクトの一部として音声認識を使用したいのですが、完全に自己完結型にしたいです(ArduinoやRaspberry Pi、Kinectsなどの小さな低電力、低速のデバイスを使用しています。 OSが関係しているため、クローズド/自己完結型プロジェクト)。 音声認識は、希望する洗練度によっては非常に複雑になる場合があります。私は、比較的単純な要件のセットを信じています。自分の声だけを認識したいのですが、認識したい20語ほどの小さな辞書があります。したがって、複雑な音声テキスト変換や音声認識ライブラリや、インターネット検索エンジンで見つけた優れたサードパーティソフトウェアは必要ありません(これらに不足はありません!)。私の要件は「十分に単純」で(理由の範囲内で)、自分のソリューションをコーディングできると考えています。私は誰かがこのような独自のプロセスを書いているのだろうかと思っていますが、私の方法は非常に欠陥がありますか?高レベルの数学を必要とせずに、または複雑なアルゴリズムを記述する必要なく、これを行うより良い方法はありますか? それが私が以下で考えようとした解決策です。 ソリューションの説明 私はこれをCで書くつもりですが、言語にとらわれないプロセスについて議論し、そのプロセスに焦点を当てたいと思います。可能な場合は無視してください。 1 話されている単語と一致するように単語の辞書を事前に記録します。20の異なる単語の20の録音、または2つまたは3つの単語の短いフレーズまたは文章があると想像できます。これにより、実際にオーディオをテキストに変換して2つの文字列を比較するよりも、2つの録音ファイルを比較するプロセスが簡単になると思います。 2。コードを実行しているハードウェアデバイスにマイクが接続されています。[1]。コードは、たとえば長さが10ミリ秒の固定長のサンプルを連続的に取得し、たとえば循環ログ形式で10の連続したサンプルを保存します。[2]。(これらの数字を頭の外で発明しているので、これらはプロセスを説明するための例にすぎません)。 [1]これはおそらく、辞書録音が行われるように、バンドパスフィルターとオペアンプを介して接続され、保存および収集されたオーディオサンプルを小さく保ちます。 [2]サンプルをどのように取得するか正確にはわかりません。10msecサンプル(おそらくCRC値)のオーディオを表す数値(整数/浮動小数点/倍精度)を生成していましたが、メソッドを実行する必要がありますまたはオーディオサンプルのMD5合計など)、または数字のストリーム(おそらく周波数のオーディオ測定値のストリーム)。最終的に、「サンプル」は数値または数字になります。この部分は、はるかに多くのハードウェアが関係するため、ここでの説明にはあまり適していません。 3。コードは、10個の連続したサンプルが格納されていることを確認し、単語またはフレーズが言われていることを示すボリュームの増加(無音からの中断)を探してから、たとえば500個のサンプルなどの連続したサンプルを収集します。つまり、10ミリ秒のサンプルで5秒間のオーディオをキャプチャします。 保存されたサウンドとキャプチャされたサウンドを比較するのは、これらのサンプルまたは「スライス」です。キャプチャされたサンプルの十分に高い割合が、保存されている同等のサンプルと一致した場合、コードは同じ単語と見なします。 The start of a store recording of the world "hello" for example, stored words are split into 10 msec samples also Stored Sample No | 1| 2| 3| 4| 5| 6| 7| …