1

私の声を認識してテキストに変換し、トーストで話した内容を表示する Android アプリケーションを構築したいと考えています。音声認識を起動するボタンを使用してこれを行うことができます。でも今は自分の声だけをベースに動かしたい。

アプリケーションは音声認識をトリガーし、私が話し始めたときにのみ私の声を聞き始め、無音を感知すると聞くのを停止する必要があります。トーキングトムアプリケーションの機能と同じです。そこに音声が録音されますが、音声認識を使用して認識したいです。このようなもの:

if(no silense)
   Launch Recognizer
else if(silence)
   Stop Recognizer
Show toast

主な問題は、音声認識エンジンを起動する前に、ユーザーが何かを話しているかどうかをどのように感知できるかということです。ノイズの強さを感知する方法はありますか..??

第二に、バックグラウンドで音声認識を起動する方法はありますか??

バックグラウンド サービスで音声信号 (誰かが話し始める) を検出できれば、音声認識エンジンがすぐに起動して音声を認識できますか?

4

2 に答える 2

2

ほとんどの音声認識エンジンには、音声の開始と終了を検出するためのエンドポイントが既に備わっています。エンドポイント担当者は通常、周囲の騒音レベルを読み取って無音のベースラインを決定し、信号対雑音比を適応させようとします。ただし、入力ノイズ レベルが変化すると、エンドポイントの発話がトリガーされる可能性があります。敏感なマイクを使用して常に聞いている場合、エンドポイントはあなたの代わりにあなたの隣で話している誰かを拾うかもしれません.

そのため、スピーチ ボタンを使用して、話したいときにアナウンスすることをお勧めします。レコグナイザーに常にリッスンさせようとすることは、おそらくやりたいことではないか、研究者に任せるべきです。

于 2012-06-15T19:54:24.783 に答える
1

わかりました。mediaRecorderこれにはクラスを使用しました。アプリケーションが起動したら、オーディオの録音を開始しmediaRecoderます (または、プロセス全体を開始および停止するボタンを提供できます)。mediaRecorder によって録音されている音声の振幅を確認します。振幅が事前定義されたしきい値を超えると、記録を一時停止してVoice Recognition activity. 私はOnActivityResult再びレコーダーを再開します。

if(mRecorder != null){
        int i= mRecorder.getMaxAmplitude();   // Getting amplitude 
        Log.d("AMPL : ", String.valueOf(i));

        if(i>20000){      // If amplitude is more than 20000
            onRecord(false);    //Stop recording before launching recognizer
            Intent intent=new Intent(this,VoiceRecognizer.class);   //Launch recognizer activity
            startActivityForResult(intent, 12112);
        }

または、このSO 投稿で参照されているRecognitionListenerインターフェイスを使用することもできます。

于 2012-06-21T15:15:13.440 に答える