您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > fengpipi_本文分析了Android系统下播放8KH170157
本文分析了Android系统下播放8KHz采样率音频文件、8KHz采样率音频流导致模拟音频输出失真的问题。本文仅代表个人观点,如有谬误欢迎大家斧正!1.为什么android统一使用44.1KHz音频?Android是为手机和平板电脑设计的操作系统,在手机里会有各种音频流,例如:铃声、音乐、短信提示、来电提示、警告音、闹铃音、还有各种游戏和应用的音频流,为了能同时对各路音频文件进行混频(Mixer),Android规定数字音源统一使用44.1KHz采样率!统一44.1KHz采样率方便了Android对音频管理,但同时也导致了另外一个问题,即任何采样率不是44.1KHz的音频流,必须通过“重采样算法”转换为44.1KHz的音频采样率,才能送入mixer进行混频输出!但遗憾的是android自己都没处理好音频重采样算法,我测试了nexus3、nexus4都是一塌糊涂!Android混频器统一使用44.1KPCM2.8KHz采样率音频,播放失真是如何产生的?如上文所述,android系统会把所有的音频重采样为44.1KHz的音频流,重采样算法的MixerMP3解码44.1KhzPCM音乐播放器视频音频解码Ogg解码AudioTrack铃声、短信提醒、游戏音等等AudioTrackVOIP8KHz音频流8KHzPCM音频重采样算法8KTO44.1KALC5633CodecAoutPCM码流音源优劣就直接影响音频输出质量!常用的音频重采样算法大概有以下三种:线性插值(LineInterpolation)、正弦插值(SincInterpolation)、立方插值(CubicInterpolation),其运算复杂度线性插值最低、正弦插值次之、立方运算最为复杂。出于效率和功耗方面考虑google采用线性插值,但线性插值对离散音频信号的重构有很大的局限性,高于1/4Samplaterate的信源很难重构!下图列出了三种算法对2.5KHz信源8KHz采样率的音频样进行本进行重采样处理后的输出信号。各种插值算法比较从上图比较可以看出,线性插值虽然算法简单,但是插值的效果非常不理想,波形严重失真,高次谐波很大!正弦插值在曲线拟合方面比较圆润,高次谐波比线性插值要小许多,但是波形失真还是很严重!立方插值,相对于前两面两种算法效果好很多,从波形上看基本还能算一个正弦波,只是上面叠加了一些插值引入的高频干扰!立方插值后的频谱特性从频谱分析器我们可以看出,低频部分功率主要分布在2.5KHz左右,我们只要对插值信号进行数字低通滤波处理,应该就能重现原始信号!3.数字低通滤波器的设计从上面的频谱分析中我们可以看到6K、12K、15K、25KHz部分的功率还是比较大,接下来我们设计一个数字低通滤波器,把4KHz以上的高频部分干扰滤除掉。设计工具选择MATLAB2010b,为了提高运算效率、节约运算时间,我们选择了20阶凯撒窗数字低通滤波器,滤波器参数选择16位带符号整形数,而不使用浮点数!因为浮点运算需要大量的时间,会对音频造成延时,同时也会对系统产生一定的影响!但是整形数带了了另外一个问题就是:输入信号不能太大(小于-6db)否则会产生溢出,导致运算错误!滤波器参数设置未添加数字滤波的频谱未加数字滤波的光谱特性立方插值,添加数字滤波器,输出波形(2.5KHz)添加数字滤波后的频谱特性添加数字滤波后的光谱特性从上图的比较分析中,我们可以看到:立方插值后,添加数字滤波器可以比较完整的重构原始信号。4.为什么RK平台8KHz采样率音频播放很差?从原厂发出来的SDK来看,RK只实现了线性插值,因此对8KHz的音频流支持的不是很好!当然这不关RK的事情,因为Google也是这么干的!!5.针对当前平台,如何进行改进?从上面的分析中我们可以看出,导致8KHz音频流播放失真的主要问题是:Android的音频重采样算法!改进方法有两个:一.在Framwork里重写AndroidResample算法,这要对android系统的代码进行很大的改动,我个人评估了一下,工作量很大,而且有可能会影响系统的稳定性!二.在APP层对8KHz的音频进行重采样处理,然后直接把重采样后的44.1KHz音频直接送给Android的mixer,进行混频后输出到CodecALC5633。这种方法调试方便,而且不会影响系统稳定性,同时又很大程度改善音频质量。如果能使用FastMixer的话,还能缩减音频时延(建议使用这种方法)。关于在APP层做插值和滤波,我写了一个小软件,测试效果还可以,但是没有做过大量数据测试,不知到会有多少bug!!作者:韦茂贵2013-08-17
本文标题:fengpipi_本文分析了Android系统下播放8KH170157
链接地址:https://www.777doc.com/doc-2871639 .html