Audio HAL 通话录音上下行分离

本文详细探讨了在Android设备上实现通话录音上下行分离的两种方法,包括修改AudioRecord立体声录制方案和使用MediaRecorder分别录制VOICE_DOWNLINK和VOICE_UPLINK。通过分析Audio HAL源代码,作者发现底层缓冲区导致了录音文件内容相同的问题。最终,通过AudioRecord获取原始PCM数据并按8位分离成功实现了上下行分离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景需求

做语音识别和答录功能的app大都需要将通话录音上下行VOICE_DOWNLINK/VOICE_UPLINK单独分离实时转义识别。

两个解决方向:

1、AudioRecord 方法的立体声录制PCM数据混合音源了,二进制文件无法区分哪些数据是左声道,哪些是右声道。

通过修改AudioRecord立体声PCM录制方案,每8位一组数据,左声道8位在前,右声道8位在后。

2、使用两个实例同时运行MediaRecorder的VOICE_UPLINK,VOICE_DOWNLINK录制上行或下行数据,且数据不重用。

基于这两个方向我们都需要去看 Audio HAL 代码。

最终结论

一开始从方向二出发,由于安卓本身的录音机制同一时间只允许一个应用录音,首先需要破解这个机制,

Android Audio - 支持多应用同时录音_Android8.1修改方法 参考这个修改后,确实可以同时 start 两个 MediaRecorder。但最终问题是不管如何设置 AudioSource

VOICE_DOWNLINK 和 VOICE_UPLINK,保存录音文件内容都是一样的,依旧是上下行混在一起。最终发现底层 buffer 是同一个

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cczhengv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值