Android 10を搭載した一部のデバイスでは、MediaRecorder.AudioSource.VOICE_COMMUNICATIONを使用して録音されたオーディオが空になる


10

次のコードを使用して、アプリでボイスメッセージのオーディオを録音しています。

MediaRecorder audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
audioRecorder.setOutputFile(audioRecordingFile);
audioRecorder.prepare();
audioRecorder.start();

MediaRecorder.AudioSource.MICの代わりにMediaRecorder.AudioSource.VOICE_COMMUNICATIONを使用すると、前処理されたクリーンなオーディオを録音するのに非常に役立ちます。

しかし最近、記録されたファイルが空であるといういくつかの問題が最近Android 10に更新されたいくつかのデバイスで報告されていることに気付きました。すべてのAndroid 10デバイスにこれらの問題があるわけではなく、いくつか、つまりNokia 6.1とミA2。

エラーや例外はなく、空のオーディオ出力ファイルのみです。

MediaRecorder.AudioSource.MICを使用した場合、問題は発生しません。

Android 10とVOICE_COMMUNICATIONに関連する次の情報が見つかりました。Android10 リリースには、VOICE_COMMUNICATIONでキャプチャするための次の要件が含まれています。

これに基づいて、次のコードを使用して、AcousticEchoCanceler、AutomaticGainControl、およびNoiseSuppressorの可用性を確認しました。

AcousticEchoCanceler.isAvailable()
AutomaticGainControl.isAvailable()
NoiseSuppressor.isAvailable()

そして、Android 10搭載のMi A2とOnePlus 6でも同じ結果が見つかりました。どちらのデバイスでも、AcousticEchoCancelerとNoiseSuppressorが利用可能であり、AutomaticGainControlが利用不可能であることが示されています。

この問題はすべてのAndroidデバイスに存在するわけではないので、MediaRecorder.AudioSource.MIC)の使用に頼りたくありません。同時に、MediaRecorder.AudioSource.MICにフォールバックするタイミングを通知するエラー、例外、または差別化要因はありません。

更新: この問題は、Mi A2でGoogleアシスタントをオフにすると解決します。これはポインタである可能性があります:https : //developer.android.com/guide/topics/media/sharing-audio-input

これに関するどんな助けでもありがたいです。



1
リンクした投稿はMediaRecorder.AudioSource.VOICE_CALLについて語っています。私が使用しているのはMediaRecorder.AudioSourceです。音声通信。多少の違いはあると思います。また、通話の録音は行っていません。通常の音声メッセージをメッセージングアプリで録音しています。また、すべてのAndroid 10デバイスで問題が発生したわけではなく、前述のようにいくつかのデバイスでのみ問題が発生しています。
binaryKarmic

回答:


1

私はすべてのAndroidバージョンでMediaRecorder.AudioSource.VOICE_COMMUNICATIONの代わりにMediaRecorder.AudioSource.VOICE_RECOGNITIONを使用することになりました。

15以上の異なるデバイスでサンプルを取得することになり、MediaRecorder.AudioSource.VOICE_RECOGNITIONがハイエンドやミッドレンジの電話を含むほとんどのデバイスで最適に動作することがわかりました。

私の理解によると、一部のデバイスのいくつかのデバイスで発生した元の問題は、Android 10およびVOICE_COMMUNICATION https://source.android.com/devices/audio/implement-pre-processingに関するOEMによる実装の問題のようです


私はNokia 6.1でもまったく同じ問題に直面しましたが、確かにGoogleアシスタントをオフにすると役立ちます。しかし、本当にVOICE_COMMUNICATIONオーディオソースを使用したい場合はどうなりますか?クライアントにアシスタントを無効にするよう依頼することはできません。アコースティックエコーキャンセレーションなどのオーディオ前処理機能を使用できるようにしたいと考えています。多分私は手動で別のオーディオfxを設定できますが、他にアドバイスがあればそれはありがたいです)
Alexey Ershov

1
あなたがどこから来たのか理解しました。ここでの問題は、OEMによるバグの多い実装のようであり、将来的には修正される可能性もあるので、それに依存しても意味がありません。あなたは数秒後に録音された音声を観察するようないくつかのカスタム修正を行うことができます。空白でOSバージョンが10を超える場合は、VOICE_RECOGNITIONを使用して、アシスタントをオフにするか、わずかに低品質に切り替えるオプションをユーザーに提供します。
binaryKarmic
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.