web-dev-qa-db-ja.com

改善Androidオーディオ録音品質?

高品質でオーディオを録音する方法はありますか?

そして、ユーザーが何かを言っているという情報をどのように読むことができますか?オーディオ録音アプリケーションでは、そのようなインジケーターが表示されます(正しい名前はわかりません)。

23
Lyubomyr Dutko

録音および監視の場合:サウンドレコーダーアクティビティを使用できます。コードの抜粋は次のとおりです。

Intent recordIntent = new Intent(
                MediaStore.Audio.Media.RECORD_SOUND_ACTION);
            startActivityForResult(recordIntent, REQUEST_CODE_RECORD);

入力モニターを含むオーディオを録音する方法の完璧な実例については、オープンソースのRingdroidプロジェクトをダウンロードしてください: https://github.com/google/ringdroid

スクリーンショットを見ると、モニターが表示されます。

オーディオをより高品質にするには、より優れたマイクが必要です。内蔵マイクはそれほど多くをキャプチャすることはできません(これはそれほど良くありません)。もう一度、ringdroidプロジェクトを見て、そこからいくつかの情報を収集します。その時点で、サウンドを改善するためにいくつかの正規化および増幅ルーチンを実装できます。

18
Donn Felker

現時点では、Androidでの録音品質が低い主な理由は、MediaRecorderクラスで使用されるコーデック(AMR-NBコーデック)です。ただし、非圧縮オーディオには、 AudioRecordクラスを作成し、それをファイルに直接記録します。

Rehearsal Assistant app これを行って非圧縮オーディオをWAVファイルに保存します RehearsalAudioRecord クラスのソースコードを見てください。

RehearsalAudioRecordクラスはgetMaxAmplitudeメソッドも提供します。これを使用して、最後にメソッドを呼び出してからの最大オーディオレベルを検出できます(MediaRecorderもこのメソッドを提供します)。

31
Stjepan Rajko