2

私の Android アプリケーションでは、ユーザーの音声をマイクからキャプチャしてサーバーに渡す必要があります。現在、私はMediaRecorderクラスを使用しています。ただし、現在の入力音の音量に基づいて光る効果を作りたいので、AudioStreamなどが必要なので、それは私のニーズを満たしていません。現在、私は以下を使用しています:

    this.recorder = new MediaRecorder();
    this.recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    this.recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    this.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    this.recorder.setOutputFile(FILENAME);

私は API レベル 7 を使用して書いているので、他の AudioEncoders は表示されませんが、AMR Narrow Band は表示されません。たぶんそれが私の録音で聞こえるひどいノイズの理由です.

私が直面している2番目の問題は、音質の悪さ、ノイズです。特にnoname中国語のタブレットでは本当にひどいので、それを減らしたい(キャンセル、抑制したい). 私の知る限り、多くのリソースが必要であり、最新のガジェット (特に noname の中国製タブレット) のすべてがそれを可能な限り高速に実行できるわけではないため、これはサーバー側である必要があります。サーバーで使用するプラットフォームは自由に選択できるので、ASP.NET、PHP、JSP など、サウンドを改善するのに役立つものであれば何でもかまいません。ASP.NET について言えば、NAudio というライブラリに出会いました。何らかの形で役立つかもしれません。ライブラリに組み込まれているノイズ削減ソリューションがないことはわかっていますが、それを使用した FFT と自動相関の例をいくつか見つけたので、役立つかもしれません。
正直なところ、これほど近くで音を扱ったことがなく、どこから始めればよいかわかりません。私はノイズリダクション技術、コード例について多くのことをグーグルで検索しましたが、何も見つかりませんでした. あなたたちは私の最後の希望です。
前もって感謝します。

4

3 に答える 3

8

この記事をご覧ください。

簡単に言えば、 AudioSource.MICの代わりにMediaRecorder.AudioSource.VOICE_RECOGNITIONを使用しているため、非常に良い結果が得られ、バックグラウンドのノイズが大幅に減少しました。

このソリューションの優れた点は、AudioRecord クラスと MediaRecorder クラスの両方で使用できることです。

于 2015-06-19T06:18:27.537 に答える
1

オーディオキャプチャには、AudioRecordクラスを使用できます。これにより、生のオーディオを録音できます。つまり、「ナローバンド」に制限されず、音量を測定することもできます。

于 2012-06-19T16:30:56.893 に答える
0

多くのスマートフォンには 2 つのマイクが搭載されていMICますCAMCORDER。両方からデータを取得して、ノイズ低減を行うことができます。複数のマイクを使用したオーディオ ノイズ リダクションについて言及している論文は数多くあります。

参照: http://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html

https://www.google.com/search?q=noise+reduction+algorithm+with+two+mic

于 2013-01-26T23:37:21.803 に答える