質問

既存の音声認識と同様に振る舞いますが、音声データを独自のWebサービスに送信して音声認識部分を実行するアプリケーションを作成しています。私は、音声認識に最適であると思われる標準のMediarecord(AMR-NBエンコード)を使用しています。これによって提供される唯一のデータは、 getMaxamplitude() 方法。

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

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

役に立ちましたか?

解決

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

他のヒント

1500は数が少なすぎます。振幅の変化を測定すると、うまく機能します。ただし、それはまだミスの検出をもたらします。

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

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

Androidのセンサークラス

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top