Android-Android使用AudioRecord类实现录音时,如何避免直流偏移?

发布于 2016-10-26 03:38:18 字数 291 浏览 1720 评论 3

小米3升级系统到Android 4.4.2之后,使用AudioRecord录到的音(WAV格式,16KHz采样、16bit位宽、单声道)长这个德行(Cool Edit Pro查看的效果):

波形图

我想咨询一下,为什么开始和中间位置,会出现大的零点漂移(好像是直流偏移);使用AudioRecord类进行录音时,如何避免出现该问题呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

瑾兮 2017-06-30 13:19:51

录音时引入了直流分量,这应该是硬件问题,比如偶尔的静电串入。你首先应该检查这个问题有没有普遍性。

至于去除直流分量,这属于数字信号处理范畴的问题。笼统的说:信号分量在正、负两个方向上是基本均衡的,所以,直接计算信号在时域上的平均值,由于正常的信号统计平均值似于0,这个平均值就是直流分量,从信号中减去即可。

但看你的波形图,这个直流分量是不稳定的,这种去直流分量的算法难以应用。一定要用的话,可以考虑去直流分量后再做高通滤波处理,可能会有改善。

无论如何,硬件问题去查硬件(比如在线路中串一个容值合适的电容,即可有效去除直流分量),这可能更合适些。
——————————————————————————————

对了,另一个思路:考虑信号的带宽情况,比如从 200hz ~ 20000hz,那么首先以最低频信号的周期为窗口,逐窗口减去本窗口的算术平均以去除直流分量;然后做一个带通滤波,或许可以比较完美的去除直流分量。两项处理的顺序也可以换一下试试。纯构想,没算过更没试过。

清晨说ぺ晚安 2016-11-21 20:35:52

自问自答一下:录双声道语音的话,不存在直流偏移。说明可能小米硬件或者ROM在到单声道录音方便存在缺陷。
为了避免直流偏移,首先,录双声道语音;然后,只取奇数位short的数据,拼接成单声道语音(因为对于双声道语音,左右声道产生的数据一般是按序成对儿出现,而且数值大多相同)。

虐人心 2016-11-09 12:39:15

我遇到的也是在小米上的音频处理问题,https://www.wenjiangs.com/group/topic-5670.html ,能否劳您大驾,帮忙看看

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文