在某些装有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.VOICE_COMMUNICATION而不是MediaRecorder.AudioSource.MIC)在录制经过预处理的纯音频方面非常有帮助。

但是,最近我发现在一些最近更新到Android 10的设备上报告了一些录制文件为空的问题。应该注意的是,并非所有Android 10设备都存在这些问题,只有少数设备(例如诺基亚6.1和小米A2。

没有错误或异常,只有空的音频输出文件。

如果我使用MediaRecorder.AudioSource.MIC),则不会出现此问题。

我发现以下与Android 10和VOICE_COMMUNICATION 有关的信息。Android 10发行版包含以下与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 Assistant时,此问题已解决。这可能是指针:https : //developer.android.com/guide/topics/media/sharing-audio-input

任何有关此的帮助表示赞赏。



1
您链接的帖子讨论了MediaRecorder.AudioSource.VOICE_CALL。我正在使用的是MediaRecorder.AudioSource。VOICE_COMMUNICATION。我相信其中有些不同。另外,我没有录音。我在消息传递应用程序中记录通常的音频消息。此外,它并非在所有Android 10设备上都成功,而在我前面提到的少数设备上都没有失败。
Karmic

Answers:


1

我最终在所有android版本上都使用MediaRecorder.AudioSource.VOICE_RECOGNITION而不是MediaRecorder.AudioSource.VOICE_COMMUNICATION

我们最终在15多种不同的设备上进行了采样,结果发现MediaRecorder.AudioSource.VOICE_RECOGNITION最适合大多数设备,包括高端和中档手机。

据我了解,某些设备上的少数设备所面临的原始问题似乎是OEM对于Android 10和VOICE_COMMUNICATION https://source.android.com/devices/audio/implement-pre-processing的实施问题


我在Nokia 6.1上遇到了完全相同的问题,确实关闭了Google Assistant帮助。但是,如果我真的想使用VOICE_COMMUNICATION音频源怎么办?我不能要求我们的客户禁用其助手,并且希望能够使用音频预处理功能,例如回声消除。也许我可以手动设置其他音频fx,但是如果您有其他建议,将不胜感激)
Alexey Ershov

1
我知道你来自哪里。这里的问题似乎是OEM实施的错误程序,它们将来可能会或可能不会修复,因此没有必要依赖它。您可以进行一些自定义修复,例如几秒钟后观察所录制的音频。如果为空白并且操作系统版本高于10,请为用户提供使用VOICE_RECOGNITION关闭“助手”或切换到质量略低的选项。
binaryKarmic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.