搜索
bottom↓
回复: 64

安卓音质变差,与系统音频架构有关的一些基础知识

  [复制链接]
头像被屏蔽

出0入0汤圆

发表于 2013-7-20 11:14:13 | 显示全部楼层 |阅读模式
▲测试使用E-MU 0404专业声卡
  以下的图片测试使用电脑E-MU 0404 PC专业声卡作为输入声卡(目前价格1500元左右),采用cool edit pro来录音。当然,这是一个比较便宜的方法,由于测试环境并不是十分专业可能会有少量的噪音引入,而图像也不是十分完美,但也可以反映出问题。 使用几十万元的音频分析系统,当然会更加理想。


▲E-MU 0404专业声卡


▲E-MU 1616专业声卡






  Android 基于Linux,我们先来了解一下Linux的特点。Linux使用ALSA作为其音频架构,其全称Advanced Linux Sound Architecture,即高级Linux声音架构的意思,在2.6核心之后,ALSA成为了Linux系统默认的音频子架构。取代了之前的OSS[Open Sound System,开放式声音系统]。



▲Linux ALSA音频架构示意


  ALSA并不太好理解,它首先是一个驱动库,包含了大量的声卡设备的开源驱动,并提供了核心层API与ALSA库通信,而ALSA库则是应用程序访问和操控音频硬件的中间层,这个中间层有标准接口,开发者可以无须考虑硬件差异性进行开发,它对提升开发效率是大有帮助的。ALSA可以向下兼容OSS,因为OSS已经被淘汰,其兼容的工作模式不再讨论。




▲Android 系统下的ALSA库文件


  这个体系被继承到了Android当中。在Android2.2[含2,2]之前,系统文件夹中能找到一个LibAudioALSA.so的文件,这就是ALSA库文件,其他应用程序调用它,与声卡设备进行指令和数据通信。Android音频架构与Linux的并无本质区别。
  在桌面版本的Linux当中,为了兼容各类声卡,Linux也设置了一个SRC[Sample Rate Converter,采样频率转换]的环节,当当前采样率低于48kHz时强制SRC到48kHz输出。这个SRC环节位于ALSA的插件模块中的混音器部分。Android针对这个进行了改进。
  什么是SRC?SRC即Sample Rate Converter,中文意思为采样频率转换。它被声卡爱好者所关注,大部分发烧友视SRC为音质杀手。




  Android增加了一个AudioFinger,这个可以简单的理解为Android的ALSA音频子系统的标准化的插件模块,它包含了AudioMixer[混音器]、AudioResampler[重采样]等子模块,AudioResampler即我们理解的SRC,Android换了一个新名称而已。针对SRC,Android做了改进,但改进并不是以去除SRC为目的,而是修改了默认的输出频率,Android的SRC目标采样率为44.1kHz,非该值的采样率都将SRC处理。例如播放48kHz采样率的信号,输出的最终是44.1kHz,这对音质将产生负面影响。这个可以通过测试证明。




▲理想的频率扫描波形





▲Meizu 魅族 M9 智能手机-48kHz频率扫描,录音端增益20dB


  对比这一组结果就能看出SRC对音质的破坏性。




▲Huawei 华为 U8800 智能手机-48kHz频率扫描






▲Lenovo 联想 乐Pad 平板电脑-48kHz频率扫描






▲Malata 万利达 Zpad T8 平板电脑-48kHz频率扫描





▲SmartQ 智器 T10 平板电脑-48kHz频率扫描


  这问题不只是魅族 M9存在。几乎存在于所有的Android设备当中。




  ALSA是一个针对Linux 桌面版本设计的音频架构,它实际上是不适合智能终端设备的,起码里面大量的开源驱动代码是可以去除的,对与Android来说,这些都是废代码。从Android2.3起,启用了一个新的音频架构。它放弃了一直使用的ALSA架构,因此系统文件夹中,也不再有LibAudioALSA.so这个文件。




▲Android2.3的系统文件夹下已经没有了ALSA库文件





▲Android 2.3后的音频架构示意


  Android2.3起,架构已经做了修改,在针对内部代码进行了优化,去除了冗余代码,理论上让系统能变得更加高效,可以将新架构理解为一个精简的或者为智能终端设备定制的ALSA架构。遗憾的是,它同样存在SRC严重劣化的问题,通过测试可以证明。




▲HTC HD2 @Android 2.3 智能手机-48kHz频率扫描


  测试可以发现,Android 2.3的新架构对音质起不到正面作用。




▲ASUS 华硕 Eee Pad Transformer TF101 平板电脑-48kHz频率扫描


  Android 3.0专门为平板电脑设计,影音体验变得更加重要了,是不是新系统在音质方面会有新的的进步呢,测试结果依然是令人失望的。




  Android系统将采样率同一为44.1kHz输出,这造成了诸多限制,它将无法实现96kHz、192kHz高清音频节目的良好回放,大量视频节目源自DVD或者蓝光碟,其采用率多为48kHz,Android设备在回放这些视频节目时,音质也将大打折扣。


  理论上软件SRC可以通过更换算法来实现音质提升,但却不太现实,智能终端所采用的CPU多为ARM,ARM芯片的浮点运算力有限,而SRC需要大量的浮点运算的资源,即便有了高质量的SRC算法,其运算也是以牺牲设备性能和耗电量为代价的,实用性差。
  从Android的音频架构及流程分析,可以认为,播放44.1kHz采样率的音乐节目时,不会引发SRC,音质因此可以获得保证,理论上确实如此。但它同样存在问题,不管是之前的ALSA架构还是Android2.3之后改良的架构,其驱动库都位于核心层,也就意味着音频设备厂商、用户无法象PC平台那样安装驱动来改善音质。实际测试也表明,Android设备音质普遍偏差,Soomal有大量测试可以证明。
  我们再把目光投向iOS,iOS非常封闭,我们甚至无法获知其架构的具体构成,但iOS设备不存在硬件设备多样性的问题,因此要实现更好音质也会更加简单。iOS可以实现针对性的开发和改良,以实现更好的音质。实际情况也是如此,目前为止,还没有一款Android设备的音质可以媲美任意一款iOS设备,这种差距,我们认为不是来自硬件,而是操作系统。




▲Android高清影音播放器


  Android音频架构的局限性也使得其难以成为优质的影音平台,如果你希望设计一款基于Android的高清影音播放器,那么首先需要做的不是设计硬件,而是去修改现有架构的不足,或者干脆设计一个专用的架构来取代Android的通用架构。从源代码分析,Android和原生的Linux底层能支持各种采样率,开源也使得其具有改造基础,因此,在技术实力强劲的公司手里,Android也可以乌鸡变凤凰。



正在编写与整理 ....

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2013-7-20 11:14:45 来自手机 | 显示全部楼层
搬板凳听课

出0入93汤圆

发表于 2013-7-20 11:26:31 | 显示全部楼层
搬板凳听课+1

出0入0汤圆

发表于 2013-7-20 11:49:59 | 显示全部楼层
听课 学习+1

出0入0汤圆

发表于 2013-7-20 12:01:58 | 显示全部楼层
本帖最后由 qfmcu 于 2013-7-20 13:25 编辑

poweramp  这个软件可以提高安卓手机的听音乐效果,老外弄得。可是需要购买付费激活,可以装个试用版试试效果。

出0入0汤圆

发表于 2013-7-20 12:02:34 | 显示全部楼层
高通芯片组在Android系统音频架构下的发展和改进总结
http://www.soomal.com/doc/10100004121.htm

出0入0汤圆

发表于 2013-7-20 12:34:20 | 显示全部楼层
最近观察到的一份基于alsa的音频芯片驱动,确实存在强制src的问题。
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2013-7-20 12:51:01 | 显示全部楼层
brahen 发表于 2013-7-20 12:34
最近观察到的一份基于alsa的音频芯片驱动,确实存在强制src的问题。

能详细的描述一下吗?

出0入0汤圆

发表于 2013-7-20 13:02:12 | 显示全部楼层
确实感觉到安卓手机的音乐不怎么好听。

出0入618汤圆

发表于 2013-7-20 13:03:01 | 显示全部楼层
armok 发表于 2013-7-20 12:51
能详细的描述一下吗?

多任务共享的底层音频驱动都存在SRC需求,因为多个应用程序要同时输出音频,所以要将多个音频流混合后再输出到DAC,假设一个应用请求8k采样率(例如操作提示音),而另一个应用请求44.1k采样率,这时你就需要对8k采样率做SRC提升到44.1k才能进行合并。
因为音频驱动层无法知道应该以哪个应用为参考,所以一般是统一一个目标采样率,例如电脑的AC97采用48k,而Android选择了44.1k。
其实不只是Android手机,大多数电脑板载声卡都存在SRC问题,只有少数支持ASIO的专业级声卡才能在硬件架构和软件驱动上都绕开SRC,声卡驱动需要设置为独占模式,这样比如听歌时再看网络视频就没声音了。

出0入0汤圆

发表于 2013-7-20 13:12:31 | 显示全部楼层
gzhuli 发表于 2013-7-20 13:03
多任务共享的底层音频驱动都存在SRC需求,因为多个应用程序要同时输出音频,所以要将多个音频流混合后再 ...

再次膜拜。我只知代码锁定,却没分析锁定的原因。

出0入0汤圆

发表于 2013-7-20 13:30:53 | 显示全部楼层
armok 发表于 2013-7-20 12:51
能详细的描述一下吗?

没有那么复杂。
首先音频芯片本身是支持8000,16000,32000,44100,48000采样率的,但是我留意到那份驱动里没有做采样率的自动适应。
也就是无论音源是32000,还是44100,都默认44100采样率输出。
这就要求上层的播放软件需要将32000转成44100,否则无法正确播放。
事实上alsa并不是不知道你的音源是什么采样率的。但是为了适应gzhuli说的那个问题,选择了采样率锁定。

gzhuli大神实在太厉害了,我从硬件一路膜拜到软件。

出0入0汤圆

发表于 2013-7-20 13:44:38 | 显示全部楼层
问题:
即使可以避开SRC问题,DAC芯片(或模块)能否直接输出44.1K采样信号?晶振分频可以得到精确的44.1kHZ?还是DAC芯片内部又做了转换,把44.1K采样转成了48KHz采样。

另希望能给出非安卓系统,比如ios、mp3播放器、电脑声卡输出声音的图谱,作为对比

出0入618汤圆

发表于 2013-7-20 14:19:27 | 显示全部楼层
zhujinliang2124 发表于 2013-7-20 13:44
问题:
即使可以避开SRC问题,DAC芯片(或模块)能否直接输出44.1K采样信号?晶振分频可以得到精确的44.1kHZ ...

晶振分频是否精确的44.1k和这个没关系,44.1k和44.2k的差别没有对比人类是分不出来的,这是另一个范畴的问题:相噪。
大多数消费级多采样率CODEC都采用fractional PLL来产生多种采样率的参考时钟,相噪指标一般来讲是fractional PLL > integer PLL > XO。但相噪的影响比SRC小得多,假如100个普通消费者经过简单讲解后有10个人能听出SRC对音质的影响,估计只有1个人能听出相噪的影响。

然后是DAC这块,电脑目前是统一成了AC97和HDA,其中AC97就曾经因为强制SRC到48k而广为诟病,后来HDA不再强制规定,但不少CODEC仍然沿袭AC97的做法。
手机SoC则依然是厂商自己制订架构,例如高通就强制SRC到48k,Tegra 3也有硬件音频混合器,毫无疑问也需要强制SRC,但能否设置SRC频率就不清楚了。

出0入0汤圆

发表于 2013-7-20 14:28:28 | 显示全部楼层
gzhuli 发表于 2013-7-20 14:19
晶振分频是否精确的44.1k和这个没关系,44.1k和44.2k的差别没有对比人类是分不出来的,这是另一个范畴的 ...

拜一下大神

顺便请教,最近看到WM8804有带小数分频PLL,可以用10MHz的时钟输入,产生所需的MCLK/BCK/WS等。10MHz!有很多二手的OCXO!我在考虑,能不能达到最终目的,OCXO经过PLL后,是不是变成一堆垃圾?

出0入618汤圆

发表于 2013-7-20 15:08:44 | 显示全部楼层
mowin 发表于 2013-7-20 14:28
拜一下大神

顺便请教,最近看到WM8804有带小数分频PLL,可以用10MHz的时钟输入,产生所需的MCLK/BCK/WS ...

虽然PLL除了VCO相噪外也会放大参考频率的相噪所以XO的相噪还是越低越好,但小数分频PLL自身的相噪已经没必要用OCXO了。

出0入0汤圆

发表于 2013-7-20 15:43:15 | 显示全部楼层
刚才看了6楼的连接,文中提到了小米2、nexus4、sony的Zl36H采用高通APQ8064CPU已经没有SRC问题。我说怪不得我的nexus4音质还算可以。

出0入0汤圆

发表于 2013-7-20 15:50:17 来自手机 | 显示全部楼层
小米2的音质依然很垃圾,和爱疯不是一个档次

出0入0汤圆

发表于 2013-7-20 16:00:26 | 显示全部楼层
如果是重采样带来的音质差,那只要不支持多个流混合,软件很容做到不重采样输出的.
如果支持多个流,又不想重采样,只能硬件支持多个流了.
硬件支持多个流,android4.2支持直接输出,不重采样的.
主要工作在hal和驱动上.

出0入0汤圆

发表于 2013-7-20 17:56:02 | 显示全部楼层
gzhuli 发表于 2013-7-20 14:19
晶振分频是否精确的44.1k和这个没关系,44.1k和44.2k的差别没有对比人类是分不出来的,这是另一个范畴的 ...

感谢大师讲解
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2013-7-20 18:20:19 | 显示全部楼层
lookavr 发表于 2013-7-20 15:43
刚才看了6楼的连接,文中提到了小米2、nexus4、sony的Zl36H采用高通APQ8064CPU已经没有SRC问题。我说怪不得 ...

高通的600有没有SRC问题? 步步高XPLAY就是使用600CPU的, 我的三星移动版,也是使用这个CPU.

出0入0汤圆

发表于 2013-7-20 21:49:01 | 显示全部楼层
此贴大神回复很多

出0入0汤圆

发表于 2013-7-20 23:23:13 | 显示全部楼层
进来听课

出0入93汤圆

发表于 2013-7-20 23:32:36 | 显示全部楼层
看后长姿势了

出0入0汤圆

发表于 2013-7-20 23:44:20 | 显示全部楼层
这是莫大旗下工作室推出的文章吗?

出0入0汤圆

发表于 2013-7-20 23:45:47 | 显示全部楼层
gzhuli 发表于 2013-7-20 13:03
多任务共享的底层音频驱动都存在SRC需求,因为多个应用程序要同时输出音频,所以要将多个音频流混合后再 ...

我的声卡实用ASIO输出时就只能听歌,其他系统声音都没有了。

出0入0汤圆

发表于 2013-7-22 09:18:04 | 显示全部楼层
armok 发表于 2013-7-20 18:20
高通的600有没有SRC问题? 步步高XPLAY就是使用600CPU的, 我的三星移动版,也是使用这个CPU.

...

看该网站采用高通600芯片的机型,应该不存在SRC问题了,下面几款相关的采用600芯片的机型供阿莫参考。不过同样采用600芯片的机型,音质也不尽相同,好像htc one的音质是最好的,排序是htc one > nexus 4>Z L26H >mi 2S

LG E960 Google Nexus 4 智能手机音质测评报告
http://www.soomal.com/doc/10100003880.htm

MI2S 小米2S 智能手机音质测评报告
http://www.soomal.com/doc/10100003952.htm

SONY 索尼 Xperia Z L36H智能手机音质测评报告
http://www.soomal.com/doc/10100003961.htm

HTC One [M7/802T] 智能手机音质测评报告
http://www.soomal.com/doc/10100004058.htm

出0入0汤圆

发表于 2013-7-22 09:38:20 | 显示全部楼层
SONY的音乐做得那么好,为什么SONY的安卓机没有改掉这个问题呢?

出0入0汤圆

发表于 2013-7-22 10:14:30 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2013-7-31 12:23:59 | 显示全部楼层
前排小板凳学习!虽不明但觉厉!

出0入0汤圆

发表于 2014-1-5 20:15:21 来自手机 | 显示全部楼层
拜大神,不明觉历。

出0入4汤圆

发表于 2014-3-12 13:23:27 | 显示全部楼层
学习了。

出0入0汤圆

发表于 2014-3-12 14:11:36 | 显示全部楼层
来上课            

出0入0汤圆

发表于 2014-3-12 16:43:04 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2014-3-14 22:01:22 | 显示全部楼层
顶起来            

出0入0汤圆

发表于 2014-3-27 16:56:00 | 显示全部楼层
据闻是ac97问题。

出0入0汤圆

发表于 2014-3-27 17:32:13 | 显示全部楼层
听课 学习

出0入0汤圆

发表于 2014-3-27 17:33:24 | 显示全部楼层
听课 学习

出0入0汤圆

发表于 2014-3-31 04:08:14 | 显示全部楼层
这个是好知识,学习~~

出0入0汤圆

发表于 2014-9-29 19:48:38 | 显示全部楼层
听大师讲课,认真学习...

出0入0汤圆

发表于 2014-10-22 15:09:45 | 显示全部楼层
听课

出0入0汤圆

发表于 2014-10-22 15:52:30 | 显示全部楼层
听课,膜拜大神

出0入0汤圆

发表于 2014-11-11 17:10:56 | 显示全部楼层
HTC  ONE的音质可以啊

出0入0汤圆

发表于 2014-11-11 19:01:33 | 显示全部楼层
谢谢分享!!!!!!

出0入0汤圆

发表于 2014-11-11 20:50:48 | 显示全部楼层
gzhuli 发表于 2013-7-20 13:03
多任务共享的底层音频驱动都存在SRC需求,因为多个应用程序要同时输出音频,所以要将多个音频流混合后再 ...

原来如比!谢谢解释。

我看的一头雾水,自己又肤浅啦。

出0入0汤圆

发表于 2014-11-11 21:20:05 | 显示全部楼层
安卓好像不知道从那个版本开始 采样率就提高了。具体哪个版本忘记了

出0入0汤圆

发表于 2014-11-12 10:29:20 | 显示全部楼层
听 课,认真学习

出0入0汤圆

发表于 2014-11-12 10:35:02 | 显示全部楼层
认真听课

出0入0汤圆

发表于 2014-11-12 12:22:47 | 显示全部楼层
高大上!

出0入0汤圆

发表于 2014-11-12 13:38:51 | 显示全部楼层
不明觉历,搬凳版学习

出0入0汤圆

发表于 2014-11-12 15:05:08 | 显示全部楼层
在坛里逛一逛,总会涨点知识

出0入0汤圆

发表于 2014-11-12 21:05:44 | 显示全部楼层
顶起         

出0入0汤圆

发表于 2014-11-12 23:18:06 | 显示全部楼层
感觉很高深啊!

出0入0汤圆

发表于 2014-11-13 08:58:25 | 显示全部楼层
听课+1 长知识ing

出0入0汤圆

发表于 2014-11-13 09:10:02 | 显示全部楼层
好专业啊

出0入0汤圆

发表于 2014-11-13 09:29:51 | 显示全部楼层
过来长知识了!不过看这个文章音质问题出在操作系统上,楼上说的某某CPU已经没有SRC问题是不是也不起作用啊!

出0入0汤圆

发表于 2014-11-13 09:31:52 | 显示全部楼层
很专业,搬凳子来听课

出0入0汤圆

发表于 2014-11-13 11:15:44 | 显示全部楼层
太高端了,只能慢慢的看,慢慢的听。。。。多测试几个手机看看

出0入0汤圆

发表于 2014-11-14 11:57:43 | 显示全部楼层
很专业啊,学习了!

出50入0汤圆

发表于 2014-11-14 12:06:39 | 显示全部楼层
这个太专业了,认真学习之

出0入0汤圆

发表于 2014-11-14 12:14:37 | 显示全部楼层
涨知识   听说vivo优化的不错

出0入0汤圆

发表于 2014-11-25 09:08:34 | 显示全部楼层
莫大兴趣广泛,了解很深入啊~以专业的方法面对兴趣爱好,赞

出0入42汤圆

发表于 2014-11-25 10:06:30 | 显示全部楼层
太专业,有点看不懂。

出0入0汤圆

发表于 2014-12-22 04:07:20 | 显示全部楼层
本帖最后由 xieyudi 于 2014-12-22 04:15 编辑

只要存在混音器, 必定会有个全局的采样率... Linux也好, Windows也好, 都有. 我认为Android的问题是, 开发者没有留出改变ALSA采样率的接口 (可能他们认为不重要).

Windows的控制面板里边一般都能根据驱动支持的采样率来设置混音器的采样率, ALSA通过改asound.conf也可以.

我使用视频播放器和音频播放器一直都是绕过系统混音器, 即独占模式, 这样才可能通过设置, 保证DAC的采样率和播放内容的采样率一致 (当然别的都不能发声了).
这样还有个好处: 保证了音量衰减也是使用硬件的 (应该在DAC的输出级上), 而不是通过混音器软件调节.


Android (Linux) 下也可以通过下面命令来确定ALSA的采样率:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-12-22 10:16:34 | 显示全部楼层
太专业了,云里雾里
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 05:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表