地平线双麦-支持第三方录音

最近在全志平台做一个地平线双麦、多麦方案(底层用AC108 ),由于地平线降噪算法是在上层, 所以需要将多个麦的通道数据传到上层。 所以不支持第三方APP录音。需要自己开发audio-hal层,实现当第三方录音的时候只传单通道、或者双通道的数据上去, 还要根据上层请求的采样率作上传数据的逻辑更改。

因为之前在RK平台上做过多麦方案(底层ES7210)的 audio-hal层 多通道数据的裁剪、拼接需求。所以这次的需求搞起来不算太难, 用大概2周时间, 终于达到测试稳定的效果。 

大概逻辑是这样:以双麦AC108 -4CHANNEL为例, 先用pcm_read()采集到原始音频,然后丢给通道识别函数,分别识别出4个channel,然后根据是当前录音模式(地平线还是第三方app)、采样率、请求的通道数, 将对应的通道的数据传上去即可。主要的耗时在于第3方APP录音, 采样率不一致,需要重采样的时候, 出现了声音变快、异响等问题。

还有在每次采集数据之间的衔接也是耗时不少,如果衔接不好,上层录到的音频就会导致有异常响声,这个可以通过播放1KHZ的音频,然后再录音,可以容易听出来。

另外AC108的 Encoding 模式, 此模式传输时 AC108 I2S 模块会占用有效采样位数的低 4bit 来进行通道编号传输,以保证上层应用可以识别具体哪个通道编号的数据与实际的硬件 MIC 对应。通道编号从 0 开始,TX1~TX4 的通道编号为 0~3,TX5~TX8 的通道编号为 4~7,如此类推。 当用16bit录音时, 由于原始数据的低4位被占用了, 但是这会导致地平线的唤醒不工作。所以只能使用32位进行录音, 然后再截取高16位数据。

先记录这么多...待续。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值