0

既存の音声認識と同様に動作するアプリケーションを作成していますが、音声データを独自のWebサービスに送信して、音声認識部分を実行します。音声認識に最適な標準のMediaRecord(AMR-NBエンコード)を使用しています。これによって提供される唯一のデータは、getMaxAmplitude()メソッドを介したAmplitudeです。

人が話し始めたときを検出して、人が約2秒間話しなくなったときに、音声データをWebサービスに送信できるようにしようとしています。現在、振幅のしきい値を使用しています。振幅が値(つまり、1500)を超えると、その人が話していると想定します。私の懸念は、振幅レベルがデバイス(つまり、Nexus One v Droid)によって異なる可能性があることです。そのため、振幅値から導き出すことができる、これに対するより標準的なアプローチを探しています。

PS私はグラフ化-振幅を見ましたが、それは振幅だけでそれを行う方法を提供していません。

4

3 に答える 3

0

1500は数が少なすぎます。振幅の変化を測定すると、より効果的に機能します。ただし、それでも誤検出が発生します。

この問題を解決する唯一の方法は、単にノイズを検出するのではなく、単純な単語やトーンを認識する方法を理解することだと思います。

于 2010-10-18T11:06:45.553 に答える
0

さて、これはあまり役に立たないかもしれませんが、アプリケーションによってデバイスのマイクによってキャプチャされたオフセットノイズを測定することから始めて、それに基づいて動的にしきい値を適用するのはどうですか?そうすれば、さまざまなデバイスのマイクや、特定の時間にユーザーが使用している環境に適応できるようになります。

于 2010-10-16T00:16:28.340 に答える
-5

ほとんどのスマートフォンには近接センサーが付属しています。Androidには、これらのセンサーを使用するためのAPIがあります。これは、あなたが説明した仕事には十分でしょう。ユーザーが電話を耳の近くに移動すると、アプリをコーディングして録音を開始できます。それは十分に簡単なはずです。

Android用センサークラス

于 2010-10-16T00:30:39.810 に答える