电力电子技术
直播中

爱与友人

9年用户 1000经验值
擅长:可编程逻辑 模拟技术 存储技术
私信 关注
[问答]

如何去降低Android音频系统的底噪问题

耳机可以分为哪几种?
Android音频播放外接模拟耳机时,音乐播放过程是怎样的?
Android音频播放外接数字耳机时,音乐播放过程是怎样的?

回帖(1)

吕品

2021-8-9 10:00:31
  开发小哥认真研究了Android USB耳机播放,同时也研究了大家反馈比较多的某APP USB独占模式。发些这其中有一些误解,同时也确实存在一些问题(对技术兴趣不大的兄弟,可以直接跳到最后看结论)。在进一步说明之前,让我们先来对耳机类型做一个说明:
  数字耳机还是模拟耳机?
  从接口看,有线耳机主要有两种接口,3.5mm接口和USB接口耳机。
  从手机输出信号来分,耳机又可以分为数字耳机和模拟耳机。顾名思义,模拟耳机接收模式信号,数字耳机接收信号数字。耳机的发声单元接收的是模拟的电信号,它把电信号转换声波,才能被人耳听到。因此数字耳机里会有一个DAC(digital analog convert),它负责把数字信号转成模拟信号后送给发声单元。
  一般而言,3.5mm耳机是模拟耳机,USB接口耳机是数字耳机。但是加上USB转接头或者USB声卡后情况就变得很复杂了,为了方便大家确认自己的耳机类型,下面做了个简单分类:
  摸拟耳机:3.5mm接口耳机,小米USB转接头+3.5mm耳机
  数字耳机:小米USB数字耳机,HTC数字转接头+3.5mm耳机,USB外置声卡+3.5mm耳机
  再啰嗦一句就是,要站在手机的角度来区分耳机类型。比如3.5mm耳机加上HTC数字转头,这个组合对手机来说是数字耳机,同样的3.5mm耳机加上小米USB转接头,这个组合对手机而言就是模拟耳机。
  然后讲一下Android音频播放:
  
  当外接模拟耳机时,音乐播放过程如下:
  音乐APP把数字信号送给Android音频系统,经过Android音频系统处理后通过音频接口送给音频CODEC,经过CODEC内部的DAC转成摸拟信号后送给耳机。
  当外接数字耳机时,音乐播放过程如下:
  音乐APP把播放的数字信号送给Android音频系统,经过Android音频系统处理后通过USB接口送给数字耳机,通过耳机内部的DAC转成摸拟信号后送给发声单元。
  当我们谈到Android手机音质时,大家都会把锅甩给Android音频系统,这个已经谈论得很多了,这里我们再拿出来说一次,下面是Android音频系统的一个简单示意图。
  
  里面主要有两个模块,SRC和Mixer:
  SRC:sample rate conversion(采样率转换);
  Mixer:混音,把多个音源混在一起。
  这么设计是为了应对手机上的复杂场景,想象一下:你快乐的打着游戏(APP2),放着happy的音乐(APP1),这时还来了一个QQ通知(APP3),这些声音要经过Mixer混在一起后输出。Android混音后输出的采样率固定为48k,如果某个APP输出的声音格式和混音输出结果不一样,就需要做SRC,这对音质是一个大大的损伤。
  那么独占是怎么做的呢?还是来看下示意图:
  
  APP工作在USB独占模式时,会直接把数字信号直接送给USB系统,通过USB接口送给数字耳机。这么做的好处是显示易见的:它避开Android音频系统,没有音质上的任何损失。不过它的副作用也同样明显:独占APP占用USB系统后,Android音频系统的声音就没办法再送到USB系统了,因为USB系统没有Mixer,没有人帮忙做混音,所以这时手机上其他APP都是没有声音的。
  分析了音乐播放的原理,实际上很多结论就很清楚了
  不存在不使用数字耳机内部DAC的情况;
  数字耳机只能接收数字信号,必须通过数字耳机内部的DAC做数模转换;
  没有所谓的“全局DAC模式”,独占模式只是为了绕开Android的音频系统,这种模式下,其他APP会没有声音,没办法避免。
  要想音质好,又要“全局DAC”必须满足下面两个条件:
  避免对数字信号做造成音质损失的处理;
  要有混音模块。
  基于上面两条,我们重新优化了Android音频系统,使得不管是QQ音乐、网易云音乐这类三方APP,还是系统自带小米音乐,音质都得到了提升,特别是对反馈比较多的底噪问题改善尤其明显。同时我们对游戏底噪也进行了优化。这些优化不光只针对数字耳机,对模拟耳机和扬声器也适用。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分