1

こんにちは、みんな!私の英語で申し訳ありません。:)

Echoprintコードで音声認識アプリを作ろうとしています。1 つのインスタンスは正常に動作しますが、複数の AudioRecord で同時に聞きたいと考えています。たとえば、認識のために曲の 20 秒を分析する代わりに、結果を改善するために、たとえば 3 つの一致で 3 つのオーディオ レコーダーを使用したいと考えています。

元。1 人は 0 から 20 まで、もう 1 人は 0 から 10 まで、もう 1 人は 10 から 20 までを聞いています。そうすれば、3 つの一致応答が得られます。これにより、短時間でオーディオを一致させる精度や可能性が高まることが期待されます (最大 5 ~ 15 秒で一致する必要があります)。

問題は、 http://masl.cis.gvsu.edu/2012/01/25/android-echoprint/のコードを持っていること です。すべてを作成するライブラリを呼び出すクラスがあります。クラスに複数のスレッドを作成しようとしたため、全員がライブラリ クラスの独自のインスタンスを持っていますが、 2 番目のAudioRecordのインスタンス化では常に失敗します。

new AudioRecord(MediaRecorder.AudioSource.MIC,FREQUENCY, CHANNEL, ENCODING, minBufferSize); 

最初のスレッドを終了させるために、2 番目のスレッドをスリープ状態にすれば、すべて問題ありません。問題はそのインスタンス化にあります...エラーは次のとおりです。

AudioRecord: レコード ソース 1 のオーディオ入力を取得できませんでした AudioRecord: AudioRecord インスタンスの作成中にエラーが発生しました: 初期化チェックに失敗しました。AudioRecord: [ Android.media.AudioRecord ] ネイティブ AudioRecord オブジェクトの初期化時のエラー コード -20

だから、私は2つの質問があります:

  1. 1 つは、複数の AudioRecords インスタンスを同時に聞くことができないという問題がある場合です。たとえば、リッスンするチャネル、デバイス、入力デバイス、ポートなどが 1 つしかなく、それがビジー状態の場合、audiorecord.release() を作成するまでクラッシュしますか? 両方で、私はマイクと同じチャンネルを使用していました....多分それが問題ですか?だとしたら…どうすればうまくいくのでしょうか?

  2. また、私はエミュレーターにいます...実際のデバイスでは機能しますが、エミュレーターでは機能しませんか?

よろしくお願いします。本当にありがとうございます。

4

0 に答える 0