本文主要是介绍“声音”背后的原理(2):采样、量化和编码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
采样、量化和编码
- 1. 模拟信号数字化
- 1.1 采样
- 1.2 量化
- 2. 编码
音频处理的大致流程:
音频
——(采集设备)
——模拟信号(连续)
——(模数转换器ADC)
——数字信号(离散)
——编码
——储存于计算机
1. 模拟信号数字化
1.1 采样
采样的原理很简单,就是按照固定的频率对模拟信号的振幅进行取值。这个频率,便是采样率,单位为赫兹,表示每秒钟取得的采样的个数。
对于一个周期信号,至少需要采样两次:波峰和波谷各采样一次。
因此,给定一个采样率,我们能重建的周期信号的频率是该采样率的一半(这个频率叫做奈奎斯特频率)
好像讲的比较清晰,但是其定义依旧比模糊,脑海里也很难形成一个具体的概念,比如,每次采样到底做了什么事?采样的对象具体来说是什么,是一个质子还是全部的质子?具体是如何采样的?采样的时候波形是静止的还是不断变化的?一次采样能采多大的范围?
我想,这些归根到底是对波形图的理解不透彻造成的:
波形图的横坐标其实是质子的“坐标”,其纵坐标是质子的振幅。
波形图表现的是在某一时刻各个质子不同振幅(位移量)曲线。更多可以查看:音频特征(3):各种波形图像的小结
其实,音频的采样是按照固定的频率,在时间轴上对模拟信号的振幅进行取值。
所谓采样率就是在某个坐标轴上均匀地做采样的频率。
音频是在时间轴上对振幅进行采样
图片是在 X Y轴上对颜色进行采样
视频是在时间轴上对图片进行采样
运动捕捉就是在时间轴上对XYZ采样
关于采样率 :
参考知乎某答(1):
音频属于波,属模拟信号,采样是把它变成离散的量。
如果波相当于曲线,采样就相当于用N个点来描述这个曲线。
点越多(间隔是相同的),线就越平滑,越接近于最初的曲线。
音频 - 曲线
采样率 - 单位间隔点的个数
音质 - 相似度
参考知乎某答(2):
声音是连续的,连续就是可以切成1秒一段,然后再切成0.1秒一段,然后可以无限切下去都不会到尽头。但是电脑记录声音是用数字,一组数字只能保存某一时刻或瞬间的声音(时刻,就是一个无限小的时间点),所以电脑记录声音只能在0.0001秒(打个比方,不准确)的时候记录一次,然后0.0002秒的时候再记录一次,0.0003秒的时候再记录一次……这样可以把声音保存下来。这里的采样率就是10000次/秒。
最后用一张图的理解:
音频(波形)可以理解为一个固定的参考,我们需要的描绘出这一个波形,我们可以做的是每间隔一段时间(可能是0.0002秒),描绘波形图上的一个点。上图所表示得到是:
- 较高的解析度采集的样本点就会被描绘地更准确;
- 较高的采样率就会使得采样的时间间隔非常短,最后会使得最后的曲线越来也平滑(趋近连续)
在语音信号中,绝大部分的信息在10000Hz
以下,所以通常20000Hz
的采样率足以保留这些信息。但是,采样率越高,也往往意味着越大的计算量、储存量以及网络传输数据量。目前,16000Hz
的采样率应用十分的广泛。使用16000Hz
采样率储存的音频已经能够非常好地保留绝大部分语音信息。激光唱片(CD)通常采用44100Hz
的采样率,从而能够对高频信号进行效果比较好的保真。
(说白了,本质上来看,采样也就是对音频模拟信号的一种“降维”吧)
1.2 量化
为了更高效地保存和传输每个采样点的数值,将这些振幅值进行规整,这一过程称为量化。
量化的过程会损失一定的精度,按照精度可以将量化分为8位量化
、16位量化
、32位量化
等。
注:量化的精度等于相邻两个整数所表示的实数的差值(标准),如果两个实数之间的差距小于这个差值,他们便会被量化为同一个整数。(可以看文章开头的那张图,连续的信号号最后被转变为了阶梯状的图像)
2. 编码
将量化后离散整数序列转化为计算机实际储存所用的二进制字节序列的过程叫做音频编码。反之,将二进制字节恢复成音频信号的过程称为解码。
(具体细节暂略)
参考:
- 《声纹技术》
- 什么是音频的采样率?采样率和音质有没有关系?
- 详解音频编解码的原理、演进和应用选型等——很强大的系列连载
这篇关于“声音”背后的原理(2):采样、量化和编码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!