以下讨论均基于脉冲编码调制(Pulse Code Modulation,PCM)

在回答这个问题之前,首先需要回答的是:高采样率有什么好处?

高采样率的好处主要有以下三点:

1、能记录更高带宽的音频信号;

2、能降低对抗混叠滤波器和抗镜像滤波器的性能要求;

3、能提高信噪比;

下面我们基于以上三点来分析44.1KHz是否够用。


一、采样率与带宽的关系

根据香农采样定理,采样率44.1KHz的数字音频格式可以无损地记录22.05KHz以下频率的音频信号(假设量化精度足够高),不理解的推荐看看这个科普视频:

为什么24位音频毫无意义 - 模拟信号的数字表示_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com

而人耳的听觉极限大约只到20KHz:

实验证明人的听觉无法感知20KHz以上的超声波成分

也就是说,理论上40KHz采样率的带宽对于绝大部分人来说就已经足够了,更别说44.1KHz。

二、采样率与滤波器的关系

实际歌曲制作中,经麦克风录制得到的模拟信号需要经过模数转换(ADC)转成数字信号,模数转换包括采样量化两大步骤,采样前必须对模拟信号进行低通滤波处理,以避免模拟信号中存在高于奈奎斯特频率(采样率的一半)的频谱内容而导致采样后产生混叠失真,这个滤波被称为抗混叠滤波

为什么需要抗混叠滤波?​www.360doc.com

不难想象,一个理想的抗混叠低通滤波器应该能够完全去除被采样信号中奈奎斯特频率以上的频谱内容,同时完美保留奈奎斯特频率以下的音频信息,也就是说,它应该具有“砖墙式”的频响特性。然而这样的理想滤波是不存在的,实际情况如下图所示:

可以看到,实际的低通滤波无法实现理想的衰减特性,而是会存在一个衰减过渡带,为了确保低通滤波在奈奎斯特频率处有充分的衰减,就必须在奈奎斯特频率前留出一部分频带作为过渡带,要求抗混叠滤波器必须在该频带内实现通带到阻带的过渡

不仅如此,实际的低通滤波器还可能在通带内存在幅度波动、相位非线性等问题,造成通带内的信号失真,这就要求抗混叠滤波器还必须在通带内具有平直的频响曲线与相位曲线

由于我们只关注20000Hz以内的信号,那么对于44.1KHz采样率,20000Hz-24100Hz就是为滤波衰减过渡提供的头部余量,抗混叠滤波器不仅要保证24100Hz以上具有足够的衰减,还要保证20000Hz以内有平直的频率响应。

然而,并不是所有的低通滤波器都能很好地满足这一要求,以最小相位低通滤波器为例:

最小相位IIR低通滤波器的频率响应特性

可以看到最小相位IIR低通滤波器虽然可以实现几乎完美的衰减特性,但会在奈奎斯特频率附近产生严重的相位失真,这是最小相位系统的固有特性,狭窄的过渡带不足以在20KHz内排除该影响。显然最小相位低通滤波器不适合作为44.1KHz采样率的抗混叠滤波器。

为了避免相位失真,数字抗混叠滤波器一般使用线性相位FIR低通滤波器,以专业音频软件Adobe Audition中的为例:

线性相位FIR低通滤波器的频率响应特性

这样的滤波器几乎能够完美地满足44.1KHz采样率的抗混叠滤波需求。

不过以上展示的都是数字滤波器,模拟滤波器就远没有这么好的性能了。模拟滤波器很难实现足够短的过渡带和足够大的阻带衰减,且不容易在带内保持足够的线性度,难以满足44.1KHz采样率的抗混叠滤波需求。但是,模拟滤波又是模拟信号转换成数字信号的必经之路,因此即便采样率本身够用,但受限于模拟滤波器的性能,实际的情况是在模数转换中,44.1KHz确实是不够用的

为了降低模拟滤波对保真度的负面影响,模数转换中需要使用非常高的采样率。采样率越高,奈奎斯特频率就越高,采样后的基带镜像频谱所处的频带也就越高,从而高采样率能够给滤波器过渡带留出更多的头部余量,大大降低了对模拟抗混叠滤波器的性能要求。

得到超高采样率的数字音频信号之后,就可以使用高性能的数字抗混叠滤波器进行下采样,最终获得高质量的目标采样率音频信号。

这种巧妙绕开模拟滤波器性能短板的技术,称为过采样技术,如今早已广泛应用于专业声卡等ADC中。

ADC采样得到的还只是原始录音素材,为了保证充足的操作余量,音频素材乃至母带一般使用采样率较高的音频格式作为载体(例如96KHz或更高),最终还需要再经过一次采样率转换得到低采样率的发行版本。目前绝大多数的歌曲成品格式都是16bit 44.1KHz。

在音频播放时,电脑、手机等平台的系统音频还会面临多采样率问题,为了兼容不同采样率音频的播放,系统音频必须对不同采样率的音频流进行实时采样率转换,统一转成与输出设备匹配的采样率。

采样率转换(Sample Rate Convertor,SRC)本质上是一个二次采样量化过程,最基本的SRC算法是以两个采样率的最小公倍数作为临时的高采样率,将采样源插值(插0)升频到临时采样率产生中间信号,并以两个采样率中较低者的一半对该信号进行抗混叠低通滤波处理,最后从中按固定间隔抽取样本产生目标采样率信号。

对于该算法,当原采样率与目标采样率呈整数倍关系时,最小公倍数等于二者中较大者,可以跳过插值或抽取过程,性能开销很低;当原采样率与目标采样率呈非整数倍关系时,二者的最小公倍数可能非常大,以96KHz下采样到44.1KHz为例,它们的最小公倍数高达14112000,即需要高达14.112MHz的中间采样率,并要求抗混叠滤波器的通带小于π/320,实现难度急剧上升,特别是对于实时采样率转换的情形。

好的SRC算法可以克服非整数倍采样率转换的难题,目前大多数算法使用多相滤波器直接输出目标采样率信号,绕过了显式的临时升频处理,因此SRC的性能主要还是取决于量化精度和数字抗混叠滤波器的设计。

各种SRC算法的性能对比可以参考这个网站:

SRC Comparisons​src.infinitewave.ca

简单举一些栗子:

上:Avid Pro Tools 2018 下:Adobe Audition 2019

作为行业标准级DAW,Avid Pro Tools的SRC量化误差很低,但是却有一定的混叠失真,这显然是其抗混叠滤波器没能充分滤除奈奎斯特频率以上成分导致的:

上:Avid Pro Tools 2018 下:Adobe Audition 2019

再来看看Windows 10系统默认音频的实时SRC表现:

上:Windows 10默认音频DirectSound 下:Adobe Audition 2019
上:Windows 10默认音频DirectSound 下:Adobe Audition 2019

从图上来看,Win10系统默认音频的SRC似乎非常差劲,非线性失真异常严重。不过,这其实并不是SRC的锅。

根据本人实测,当音频样本幅度值超过大约-0.13dBFS时,就会触发Win10系统默认音频的压限处理,造成非线性失真显著上升。例如输出一个满幅度的1KHz正弦波信号:

是不是和上面的图如出一辙?为了避免这个莫名其妙的压限问题,可以使用Equalizer APO对系统音频施加一个统一的负增益,例如-0.15dB。

下面来看看Win10默认SRC的真实水平:

Windows 10 DS resampler 1KHz Tone 96KHz to 44.1KHz
Windows 10 DS resampler 抗混叠滤波响应 96KHz to 44.1KHz
Windows 10 DS resampler Sweep 96KHz to 44.1KHz

如图所示,Win10默认SRC的非线性失真其实很低,抗混叠滤波响应虽然不太理想,但20KHz以内的混叠失真控制得很好(<120dB),整体上丝毫不虚Pro Tools。

可见,只要正常一点的SRC算法都不会成为44.1KHz的音质瓶颈。

最后,在音频回放阶段,数字音频信号还需要经过数模转换(DAC)转成模拟信号,这一过程中的最后一步同样是低通滤波处理。

理想DA转换器的输出是与数字信号中各个采样点相对应的一系列冲激脉冲串,其中不仅包含原始的信号,还包含了无数的高频镜像频谱成分,为了从中准确还原出原始信号,就需要使用低通滤波器滤除高频镜像,这类低通滤波器被称为抗镜像滤波器

尽管对于44.1KHz采样率来说,高频镜像成分位于人的听觉范围之外,但这些成分有可能会在下游设备中引起调制导致带内失真,因此依然有滤除的必要。

不过理想的DA转换器是不存在的,实际的DA转换器一般是零阶保持模型(Zero-order hold),即采样点的值会在一个采样周期内被保持,最终重建出阶梯状的模拟波形:

由于该模型的脉冲响应是一个宽度等于采样周期的矩形,其频率响应是sinc函数,因此会导致包括通带在内的高频响应衰减,在奈奎斯特频率处的衰减大约为-3.9224dB,对应sinc(π/2) = 2/π。这个通带内衰减补偿既可以在DA转换器前用数字滤波器实现,也可以在最后的模拟抗镜像滤波器实现。

抗镜像滤波器的设计需求与抗混叠滤波器是类似的,但抗镜像滤波器位于DAC之后,因此只能使用模拟滤波器。由于44.1KHz对模拟滤波器的要求过为苛刻,因此也需要使用软件升频或过采样等技术,以绕开模拟滤波器的性能限制。

如今,过采样技术同样广泛应用于DAC设备,因此回放阶段的抗镜像滤波一般也不会成为44.1KHz的音质短板。

总的来讲,只有在ADC、DAC中不得不使用模拟低通滤波器时,44.1KHz才确实是不够用的,不过借助过采样技术,从高采样率下采样到44.1KHz时,高采样率的好处几乎能在44.1KHz中完整保留,再考虑到绝大多数数字低通滤波器性能表现良好的事实,可以说44.1KHz作为音频信号的载体是非常够用的。

三、采样率与信噪比的关系

很多人可能还不理解,信噪比不是取决于位深么,跟采样率有什么关系?

事实上在一些情况下,采样率是可以置换成位深的,通过均值滤波将多个低位深采样点进行均值,可以得到一个等效高位深的采样点,从而有效提升动态范围,降低量化噪声,相信这在直观上是非常好理解的吧。

本质上,均值滤波其实就是一种低通滤波,因此该方法能生效的前提条件是信号中的一部分噪声分布在音频频带以外的高频区域,从而低通滤波能在不影响音频信号的情况下滤除高频噪声,进而提高信噪比。显然只有较高的采样率才能满足这一点。

那么,具体哪类噪声才能通过这种方法减弱或消除呢?

信号处理过程中往往不可避免会引入噪声,信号采样自然也逃不过这点。哪怕在采样前使用一个理想低通滤波器彻底滤除了奈奎斯特频率以上的成分,采样过程中依然会有高于奈奎斯特频率的噪声成分产生,例如数字域中的量化噪声,以及模拟域中ADC的jitter噪声热噪声等等,这些噪声的高频部分会在采样后叠回带内产生混叠失真。因此理论上采样率越高,混叠失真分布的带宽往往就越宽,从而更容易被低通滤波滤除

下面着重讲讲量化噪声:

量化噪声 - 图文 - 百度文库​wenku.baidu.com

正如Bennett所指出的(参考文献1),量化噪声近似于高斯分布,几乎均匀地分布于从DC至fs/2的奈奎斯特带宽。这里假设量化噪声与输入信号不相关。在某些条件下,当采样时钟和信号通过谐波相关时,量化噪声将与输入信号相关,能量集中在信号的谐波中,但均方根值仍然约为q/√12。

量化噪声的总功率主要取决于位深,当量化噪声与输入信号不相关时,随着采样率提高,量化噪声会被均匀分散到更宽的频带,由于其总功率不变,相对来讲20KHz以内的量化噪声功率就会降低,从而低通滤波能在不影响音频信号的情况下滤除量化噪声的高频部分,降低量化噪声总功率,这就等价于提高了量化位深。

然而,只有对于大幅度的复杂信号,信号与量化噪声才是几乎不相关的。随着信号的幅度越来越小,量化噪声与信号的相关性越来越强,即量化噪声会越来越集中在音频频带内,因此低通滤波的过滤作用越来越小;直到信号的幅度小于1/2 LSB时,量化噪声与信号完全相关,即量化噪声就是信号本身的反相,直观原因就是PCM编码无法对小于1/2 LSB的幅度进行量化,只能采样到一串值为0的样本,此时采样率再高也无济于事了。

有一种方法可以神奇地让量化噪声与信号完全去相关,那就是抖动(Dithering)

抖动处理的原理是随机共振,即人为地给原始信号添加一个微弱的随机性噪声信号(例如峰-峰值2 LSB的三角形概率密度抖动),这一操作使量化噪声与信号完全去相关,使量化过程线性化,当然代价是轻微的信噪比损失(峰-峰值2 LSB的三角形概率密度抖动的功率是量化噪声的2倍):

Major:信号的抖动处理​zhuanlan.zhihu.com

抖动处理能够突破位深极限,对小于1/2 LSB的微小幅度变化进行有效编码,其本质是将小于1/2 LSB幅度区间的量化转变为脉冲宽度调制(Pulse Width Modulation,PWM),通过低通滤波就可以从PWM中还原出原始波形:

引用自《数字音频技术(第6版)》

所以别看16bit的理论动态范围只有大约96dB,实际上在抖动的加持下,16bit可以有效编码幅度低至noise floor的微弱信号(约-125dBFS)。

通过调整抖动的频谱(例如高通抖动),还可以进一步降低抖动的可闻性。

总而言之,借助抖动处理,可以使量化噪声与信号完全去相关,从而通过提高采样率+低通滤波的方式,几乎可以无限制地降低量化噪声,提升量化精度,这就是采样率能够置换位深的基本原理。

过采样技术能够提高信噪比的原理正是如此:

过采样技术与SNR的关系_公子小白_城南_新浪博客​blog.sina.com.cn

既然高采样率能够提高量化精度,那是不是采样率越高越好呢?——并不是。

相比直接提高量化位深,通过提高采样率换取量化精度的做法是极其低效的。采样率每翻一倍,仅相当于提高0.5bit,如果想要提高8bit的量化精度,这个倍数会是2的16次方,即采样率要翻65535倍!这完全是不现实的。

因此,仅从量化精度来考虑音频编码效率的话,量化精度应该通过量化位深来获得,而采样率应该在带宽足够的前提下尽量地低。从这一点来看,44.1KHz其实是非常合理的。

不过,虽然数字域的量化噪声可以靠提高量化位深来降低,但模拟域产生的噪声就只能通过提高采样率来减弱了,因此ADC中使用远高于44.1KHz采样率的过采样技术在这方面也是非常有意义的。好在和低通滤波一样,通过数字下采样,44.1KHz同样可以受益于高采样率在信噪比方面的好处,所以44.1KHz作为音频信号的载体不仅非常够用,同时还是非常合理的。


综上,只考虑采样率本身的话,44.1KHz毫无疑问是够用的,因为它的带宽完全可以满足记录音频信号的需求。但是实际情况中不能一概而论,起码还要把滤波器性能、信噪比等其他因素考虑进来,当其他因素存在难以改善的不足时,就可能有必要通过提升采样率来弥补,此时44.1KHz就不一定够用了。

好在44.1KHz不够用的情况基本只存在于ADC、音频制作和DAC等专业领域中,而对于普通用户最终拿到手的音频载体而言,44.1KHz已经是非常够用的了。硬要说的话48KHz可能会更好些,因为如今的录音行业更多使用48KHz、96KHz、192KHz的HD音频标准,而非44.1KHz、88.2KHz、176.4KHz的古老CD标准,因此48KHz可以避免非整数倍SRC,降低对SRC算法的要求。比这再高的采样率就几乎没有什么意义了,只会徒增文件容量而已。

pcm 采样率转换_44.1KHz够用吗?我们是否需要更高的采样率?相关推荐

  1. MACbook安装双系统,启动转换助理提示“需要64位windows10或更高版本的ISO文件”

    MACbook安装双系统,启动转换助理提示"需要64位windows10或更高版本的ISO文件" 1,MACbook为2018年后15.6寸 2,使用了2019年windows会出 ...

  2. php能转换音频采样率吗,音频采样频率怎么设置-音频采样率转换软件下载

    如果你是一个音乐爱好者,又或者是你很喜欢听音乐,那么你应该会注意到歌曲的采样率,很多的歌曲的采样率是不一样的,不过大部分来说都是48000Hz的.那么音频采样率是什么?音频采样率跟音质有什么关系吗?又 ...

  3. php转换音频采样率,音频采样率转换 如何转换音频采样率

    如果你是一个音乐爱好者,又或者是你很喜欢听音乐,那么你应该会注意到歌曲的采样率,很多的歌曲的采样率是不一样的,不过大部分来说都是48000Hz的.那么音频采样率是什么?音频采样率跟音质有什么关系吗?又 ...

  4. pcm 采样率转换_Audio ABC | CD为何是44.1KHz采样率?

    旧文排版重发,略作修改. 小朋友英语学习的培训教材中附送了一张音频CD,作者在鼓捣这张CD的时候,忽然一个问题冒了出来:为什么CD采用了44.1KHz的采样率?为什么不是48KHz?毕竟48这个数字看 ...

  5. ffmepg把PCM文件转换成AMR

    项目中需要把PCM文件转换成AMR,考虑使用ffmpeg转换格式 ffmpeg -f s16le -ar 8.0k -ac 1 -i say_you_say_me_8k.pcm -ab 12.2k s ...

  6. 语音处理:Python实现wav与pcm文件格式转换

    语音处理:Python实现wav与pcm格式转换 知识点 wav转pcm pcm转wav 参考资料 知识点 wave包的读写及参数设置 文件路径操作拼接 音频相关参数了解 wav文件存储的参数信息有: ...

  7. webrtc 渲染_[WebRTC架构分析]采样率转换

    本文使用 Zhihu On VSCode 创作并发布 前言 观察 WebRTC 的源码,关于采用率转换的实现有很多,在 m68 版本中用的是基于 sinc 函数的实现.要想理解音频重采样,需要掌握一定 ...

  8. 使用ffmpeg进行音频采样率转换

    最近有需求要对一部分语音进行识别分析语音内容,供应商提供的接口对采样率有要求,指定8k或16k采样率,我们的语音采样率各不相同,所以需要一个工具进行统一的采样率转换.使用的是ffmpeg程序进行转换. ...

  9. matlab采样率什么意思,求教。音频文件的位数,码率,采样率都代表什么意思啊?...

    把连续的物理信号(well,硬要跟我说普朗克常数的话...)存储在计算机中,必须要将他变成数字信号.在声学上,所为数字信号就是用数字代表每个时间点声波的振幅. 声波是纵波,很难画出,下图用横波代替(纵 ...

最新文章

  1. 合并果子_tyvj1066_vijos1097_codevs1063_贪心+堆
  2. 全国一等奖,他的学习之路。
  3. 文件大小图形化软件 SpaceSniffer(转载)
  4. sql update date类型_数据工厂可视化操作与SQL查询——1.基础篇
  5. 查看svn服务器上的文件,如何在命令行通过SVN命令筛选出修改过的文件并递交
  6. 机器学习之支持向量回归(SVR)
  7. 7-7 选民投票 (20分)(不区分大小写投票)
  8. android 重力模拟,android的模拟器怎样仿真重力感应器
  9. usb中cdc dfu hid msc的区别
  10. 计算机中汉字的顺序用什么牌,中国汉字的写做顺序,你知道吗?
  11. Limit CPUID MAX
  12. Linux部署Oracle11gR2 RAC详细教程
  13. 如何用计算机语言表达我想你,表达我想你的句子情话
  14. mongodb 表结构导出,索引检查
  15. 雨流计数法及matlab代码【转载】
  16. Nacos2.0.3集群搭建
  17. 江苏农信金融云热点问答:银行如何统筹推进私有云和行业云建设?
  18. 简单的说一下人脸识别的过程及前端实现
  19. Java 代码如何获取CPU核心数和定义线程池的核心数
  20. 让技术更有温度,腾讯Light 点亮公益之光

热门文章

  1. sklearn 笔记整理:sklearn.mertics
  2. CMA-ES 算法初探
  3. tableau可视化数据分析60讲(二十二)-tableau常见面试题目
  4. 【毕业求职季】-听说你想去大厂看学妹,带你看看腾讯微信产品岗面经(已offer)
  5. window下Java的环境变量的配置
  6. MapReduce编程实战之“高级特性”
  7. Hadoop学习之HDFS架构(一)
  8. sql server修改索引名称_索引基本知识和索引优化
  9. 日语输入法电脑版_日语输入法下载及使用教程【建议收藏】
  10. Windows任务管理器 explorer 进程