文章目录
- 前言
- 一、频率
- 连续时间信号的频率
- 数字信号的频率
- 二、模数转换过程
- A/D转换三步
- 三、采样
- 确定采样频率
- 数模转换中的插值
- 四、量化
- 量化过程
- 量化误差
- 五、编码
- 总结
前言
所有软件的运行都得益于硬件上的突破,数字信号是从40年前就开始高速发展的领域。得益于硬件上从一开始的中规模集成电路,到大规模集成电路,再到现如今的超大规模集成电路,促进了功率更小,体积更小,速度更快,价格更便宜的数字计算机。
硬件上的突破使得计算机可以执行复杂的数字信号功能和任务,当然并不是说数字信号就是解决所有信号的解决方案,对于一些需要及时处理的例如:带宽等信号,这种就需要模拟信号或者光信号。
而声音是一种波,恰恰可以将这种波转换成数字信号在软件中进行处理。
本篇文章借鉴了《数字信号处理》、《离散时间信号处理》、《信号与系统》,如果有写错的地方,是笔者个人能力不足,没有理解透彻,恳请告知笔者。
|版本声明:山河君,未经博主允许,禁止转载
一、频率
为了更好的了解数模转换的原理,我们最好先了解一下信号频率的概念。
其实在音频基础学习一——声音的本质、术语与特性这篇文章中,有介绍过:
频率——一秒钟内振动质点完成的全振动的次数叫振动的频率,其单位为赫
(
H
z
)
频率——一秒钟内振动质点完成的全振动的次数叫振动的频率,其单位为赫(Hz)
频率——一秒钟内振动质点完成的全振动的次数叫振动的频率,其单位为赫(Hz)
连续时间信号的频率
我们知道所有的信号都是由不同的波组成的,而通过傅里叶原理——所有的波形都可以拆解成不同的正弦波组成。声音当然也如此。
在音频基础学习二——声音的波形中,有举过最简单的正弦波数学公式
x
a
(
t
)
=
A
cos
(
Ω
t
+
θ
)
x_a(t)= A \cos(\Omega t + \theta)
xa(t)=Acos(Ωt+θ)
其中 A 是正弦波的幅度,也就是振幅, Ω 是弧度的频率,也就是 2 π f , θ 为相位 A是正弦波的幅度,也就是振幅,\Omega 是弧度的频率,也就是2\pi f, \theta为相位 A是正弦波的幅度,也就是振幅,Ω是弧度的频率,也就是2πf,θ为相位
例如一个正弦波图:
数字信号的频率
先复习一下:
上一篇文章音频进阶学习一——模拟信号和数字信号中,介绍了连续时间信号、离散时间信号、模拟信号、连续值信号、离散值信号以及数字信号。
而数字信号不仅要在自变量上(往往是时间),还要在一定范围内取值,也就是同时满足连续值信号和离散时间信号的特征。
在此也以一个正弦波举例,一个离散时间的正弦信号数学公式上为
x
a
(
n
)
=
A
cos
(
Ω
n
+
θ
)
x_a(n)= A \cos(\Omega n + \theta)
xa(n)=Acos(Ωn+θ)
此时n是一个整形变量,称为样本数,所以它的图形看起来是这样的:
二、模数转换过程
上篇文章说过,在实际应用中,我们感兴趣的信号大多是模拟信号,例如:声音、地震、生物、雷达、视频等。要通过数字方法处理模拟信号,需要先把模拟信号转换成数字形式,这一过程称为模数转换(A/D)
。
A/D转换三步
从概念上,A/D转换分为三步:
- 采样:这是连续时间信号到离散时间信号的转换过程,通过对连续时间信号在离散时间点处取样本值获得。因此,如果x(t)是采样器的输人,那么输出是x(nT)≡x(n),其中7称为采样间隔。
- 量化:这是离散时间连续值信号转换到离散时间离散值(数字)信号的转换过程。每个信号样本值是从可能值的有限集中选取的。未量化样本(n)和量化输出x(n)之间的差称为量化误差。
- 编码:在编码过程中,每一个离散值x(n)由b位的二进制序列表示。
看到这里大家应该也就明白pcm数据中采样率,字节数是从何而来的了。
A/D转换图解如下:
三、采样
而模拟信号通过A/D转换成数字信号后,再由D/A转换成模拟信号,从而被听到、看到。如何保证它的精度呢?这个就需要对于一对连续的样本进行插值,从而保持零阶保持或者阶梯近似。
例如:
那么在A/D过程中如何确定采样的次数,在D/A过程中什么时候插入值呢?
确定采样频率
之前我们了解到,任何模拟信号都可以看作不同振幅、频率和相位的正弦信号的和,最终从数学上得到公式为:
对于语音信号中最重要的频率范围(即语音的主要频带)通常集中在 300 Hz 到 3400 Hz 之间。根据采样定理,要无失真地捕捉频率为
f
m
a
x
f_{max}
fmax的信号,采样频率 应该至少为
2
×
f
m
a
x
2×f_{max}
2×fmax。因此,语音信号常用的采样频率有 8 kHz(电话通信)、16 kHz、22.05 kHz、44.1 kHz(CD质量)等。
这就是采样率的由来。
数模转换中的插值
根据采样定理:如果包含在某个模拟信号
x
a
(
t
)
x_a(t)
xa(t)中的最高频率是
F
m
a
x
=
B
F~max~ = B
F max =B,而信号以采样率
F
s
>
2
F
m
a
x
=
2
B
F_s>2F~max~ = 2B
Fs>2F max =2B采样,那么 x(t)可以从样本值准确恢复,插值函数为:
g
(
t
)
=
sin
2
π
B
t
2
π
B
t
g(t)= \frac{\sin 2 \pi Bt}{2\pi Bt}
g(t)=2πBtsin2πBt
例如:
四、量化
量化过程
上文说过,在D/A过程中,数字信号将转换回模拟信号,并且要达到零阶保持或者阶梯近似的状态,那么就需要A/D过程中取值时要达到一定的精度。
通过把每个样本值表示为一个有限(而不是无限)的数字,将一个离散时间连续幅度信号转换成数字信号的过程,称为量化。
值得注意的是:取值量化过程并不是直接通过数学公式直接取模拟信号的值,而是保持阶梯取值,如同下图:
其中:
- 黑点是量化取值
- 白点是实际值
- 黑点和白点一一对应
- 两个黑点之间的距离称之为量化步长或者分辨率
量化误差
从这里就可以看出取值量化过程中存在量化误差,也叫做量化噪声,存在误差是因为需要对于量化的值进行四舍五入的保留有效数字。
比如,现在量化的精度是0.1,而下图有量化的点在0.6和0.7之间
四舍五入的标准:
五、编码
在一个 A/D转换器中的编码过程为每一个量化级别赋予一个唯一的二进制数。如果有L级那么我们至少需要L个不同的二进制数。如果字长为bit位,那么我们可以生成 2 b 2^b 2b个不同的二进制数。
因此有 2 b ≥ L 2^b≥L 2b≥L,或者等价有b≥bL。商业上可用的 AD转换器可以是bit=16位或更小的有限精度。一般来说,采样率越高及量化越精细,设备就越昂贵。
总结
由于知识储量和工作原因,很长一段时间没有写过关于音频的博客了,后面希望能够有充分的时间和大家一样多多提升自己,并能够分享自己整理觉得有意义的东西。
如果对您有所帮助,请帮忙点个赞吧!