2

私は非常に基本的なロボット工学プロジェクトに取り組んでおり、音声認識を実装したいと考えています。複雑なことはわかっていますが、3つか4つのコマンド(または単語)だけでやりたいと思っています。

私はwavinを使ってオーディオを録音できることを知っています。しかし、オーディオ信号でリアルタイムの振幅分析を行いたいのですが、どうすればそれができるのでしょうか。波形は 8 ビット、モノとして入力されます。

信号を特定の時間のセットに分割し、さらに小さなサブセットに分割し、サブセットの平均 rms 値を取得してからそれらを合計し、実際に保存された信号とどれだけ異なるかを確認することを考えました。エラーがセットのすべて (またはほとんど) の許容値を下回っている場合は、その単語を出力します。

これはどのように実装できますか?他の提案も提供していただければ、それは素晴らしいことです。

前もって感謝します。

4

2 に答える 2

3

単語は基本的に時間と頻度で変化する一連の音素であるため、単語を認識する簡単な方法はありません。

従来の分離単語認識システムは、信号MFCC (ケプストラム係数) を入力データとして使用し、HMM (隠れマルコフ モデル) または DTW (動的タイム ワーピング) アルゴリズムを使用してパターンを認識しようとします。

録音ボタンが必要ない場合は、無音検出モジュールも必要になります。

たとえば、エジンバラ大学のツールキットには、これらのツールの一部が用意されています (適切なドキュメントが付属しています)。

「ゼロから」構築したくない場合、またはインスピレーションの源を持っていない場合はそのようなシステムの (古いが無料の) 実装 (独自のツールキットを使用) と、その方法に関する完全な説明と実用的な例を次に示します。動作します。

このシステムは LVCSR (Large-Vocabulary Continuous Speech Recognition) であり、そのサブセットのみが必要です。誰かがオープン ソースの語彙削減システム (シンプルな IVR など) を知っていれば、歓迎します。

独自の基本システムを作成する場合は、MFCC と DTW を使用することをお勧めします。

  • モデル化するターゲット単語ごとに:
    • 単語のいくつかのインスタンスを記録する
    • モデルを取得するために、単語を介していくつかの(たとえば、10msごとに)デルタMFCCを計算します
  • 信号を認識したい場合:
    • この信号のデルタ MFCC を計算する
    • DTW を使用して、これらのデルタ MFCC をモデル化された各単語のデルタ MFCC と比較します。
    • 最適な単語を出力します (しきい値を使用してガベージを削除します)
于 2011-04-02T21:27:34.010 に答える
1

いくつかのコマンドを認識したいだけの場合は、使用できる商用および無料の製品がたくさんあります。Linux用のテキスト読み上げおよび音声認識ツールが必要またはSystem.Speech.RecognitionとMicrosoft.Speech.Recognitionの違いは何ですか?を参照してください。またはiPhoneの音声認識。これらの質問への回答は、利用可能な多くの製品やツールにリンクしています。コマンドのリストの音声認識と理解は、商業的に解決される非常に一般的な問題です。あなたが呼ぶ音声自動電話システムの多くは、このタイプの技術を使用しています。同じテクノロジーが開発者にも利用可能です。

これらの質問を数か月間見てから、ほとんどの開発者の選択肢が次のように分類されるのを見てきました。

もちろん、これも役立つ場合があります-http://en.wikipedia.org/wiki/List_of_speech_recognition_software

于 2011-04-03T13:23:07.797 に答える