您的位置  > 互联网

PCM模拟信号数字化的一种基础技术

一、定义

PCM是音频模拟信号数字化的基本技术。 它将具有连续值的模拟信号转换为离散的数字信号。 熟悉ADC(模数转换)的人应该很了解。 这个过程就是采样、量化和编码。 脉冲编码调制是应用最广泛的调制方法。 在PCM调制过程中,输入模拟信号被采样、量化和编码。 该方法使用脉冲编码来表示采样的模拟信号的幅度。 即用二进制大小来表示采样信号幅度。 在接收端,这些编码的二进制数被恢复为原始的模拟信号。

(1) 抽样

使用固定频率从模拟信号中提取样本值。 人耳可感知的最高频率为20kHz。 根据奈奎斯特采样定律,速率仅需每秒40k个样本即可覆盖人耳的听觉范围。 ,也就是说,对于普通人来说,采样高于每秒40k时,听力基本没有任何改善。

人类语音的频率在300-3000赫兹之间,成年男性语音的基频为85-155赫兹,女性语音的基频为165-255赫兹。 同时,产生丰富的谐振频率。 在通信中,需要300-300Hz的频率范围才能满足要求。 正常的电话通话,对于这个频率范围,需要使用每秒8K的采样率。 普通手机采样率为 8k 和 16kHz。

日常音频信号常见的采样率有8K、16k、22.05k、32k、44.1k、48k、192k。 广播广播常见的最高采样率为22.05K,CD最高采样率为44.1k,DVD最高采样率为48k。 高分辨率音频采样率可高达 192k。

笔记:

共振:物体有自己的固有频率。 当外部振动频率与固有频率相同时,会产生最强的振动。 此时的振幅最大。 共振有不同的名称: 1. 在力学中,称为共振 2. 在声学中,称为共振 3. 在电学中,称为共振。

(2)量化与编码

量化和编码就是将采样的信号幅度转换为数字值(ADC),然后组织成固定大小的序列。 PCM实际上是一个大数组,数组中的每个值代表当前时间点的模拟强度。 ,在播放过程中的相应时间点转换为模拟输出(DAC)。 量化过程中会出现误差。 一般来说,ADC的精度越高,失真越小。 常见的量化位数有8bit、16bit、24bit。 模数转换会产生误差和本底噪声。 对于ADC来说,除了精度之外,转换实现方式、电压参考、电磁环境等都会影响转换效果。

2. 基本原则

PCM 是波形编码的一种形式。 它对模拟信号进行采样和量化,输出数字电平序列以获得二进制信号,然后通过并串转换器将其转换为串行脉冲信号,并用脉冲对模拟信号的幅度进行编码。 这就是脉冲编码调制。 下面是一个简单的PCM通信系统框图。

PCM信号是通过对量化的PAM信号进行编码得到的,即每个采样的量化样本值都由一组数据量来表示。 当然,每个量化级别的具体表示代码由设计者确定。 如表所示,它是一个具有8级量化并用格雷码表示的3位PCM代码的示例。

为了便于数字运算,输入的8位PCM码c(n)首先在编码器中转换为14位线性码s1(n)。 然后,通过减去相同的预测信号sp(n)来生成差信号d(n),然后对d(n)进行自适应量化以生成4位ADPCM码I(n)。 一方面将I(n)发送到解码器,另一方面对I(n)进行本地解码,得到量化差值信号dq(n),然后将其与预测信号sp(n)相加) 得到局部重构信号 sr 。 (n),自适应预测器使用二阶极点和六阶零点的混合预测器。 它使用 sr(n)、dq(n) 和前一时刻的值来预测下一时刻的信号 s1(n)。 +1) 预测并计算 sp(n+1)。 为了使量化器能够适应具有不同统计特性和幅度的输入信号,例如语音、带内数据和信令,自适应必须根据输入信号的特性自动改变自适应速度参数来控制幅度。 该功能由三个功能单元完成:量化器缩放因子自适应、自适应速度控制以及单音和过渡检测。

二、特点

2.DPCM(差分脉冲编码调制)

差分编码采用预测编码技术,从输入中减去预测值,然后对预测误差进行量化。 最终的编码是预测值和实际值之间的差异。 解码器使用先前的数据来预测当前样本,然后使用错误编码来重建原始样本。这种方法使用较少的比特。 但其性能取决于预测编码方法及其对信号变化的影响。

文化适应性。

PCM保存的是原始的模数转换结果,该结果是未压缩的。 数据量比较大,存储和通信会占用大量资源。 需要对数据进行压缩以减少通信带宽和存储资源消耗。

展开音频PCM数组,可以看到数据值和相邻值通常都是比较连续的,不会突然很高或者突然很低。 两点之间的差异不会太大,因此这个差异可以用几个位(例如4位)来表示。 这样,只需要知道起始点的值以及每个点之间的差值,就可以恢复原来的序列。 记录的差分序列是DPCM数据,所以数据量会小很多。 以8k采样率为例,如果量化精度为16bit,则1秒的数据量为8000*16bit=128kb。 如果用4bit来表达差异,那么PCM数据转换成DPCM只需要大约1秒的时间。 32kb。

DPCM 有问题。 虽然音频信号比较连续,但也存在差异较大的情况。 例如,如果差值超过4比特(-15、15)所表示的范围,则无法很好地恢复原始PCM序列。 如果增加差值宽度,例如用6bit或8bit表示,可以减少这个问题,但数据量也会增加。

ADPCM的出发点是解决DPCM的差分宽度问题。 通过定义差异表(例如IMA ADPCM使用89个固定差异值,范围从7到32767),将差异范围扩大到16位。 此时,差值数组中的个数只需要6位即可表示(0 - 88)。 此外,仅记录数字的变化值,从而将变化压缩为4位。

3. ADPCM(自适应差分脉冲编码调制)

一、定义

自适应差分脉冲编码调制是指具有自适应预测和量化功能的差分脉冲编码调制。 其量化器的量化级别(步距)可以随着信号值的变化而自适应调整,以提高量化信噪比; 同时,其预测器的预测系数可以随着信号统计特性的变化而自适应调整,以减少预测误差。 错误率,降低传输错误率。

自适应差分脉冲编码调制(ADPCM)是一种性能良好的波形编码算法,它结合了差分脉冲编码调制(DPCM)的差分特性和自适应脉冲编码调制(APCM)的自适应特性。 ADPCM具有算法相对简单、延迟低、重构新数时音质高等优点,因此在数字语音处理领域得到广泛应用。 ADPCM算法有效地将16位PCM采样数据压缩为4位ADPCM数据以便存储或传输。

2. 算法原理

ADPCM的核心思想:

首先,随着输入信号幅度的变化,自适应调整量化间隔的大小,以达到提高量化效果的目的;

其次,利用前面的样本值来估计后面输入样本值的预测值,使得实际采样值尽可能接近预测值,即差异尽可能小。

ADPCM算法的量化值并不代表采样点的幅度,而是代表该采样点的采样值与前一个采样点的预测值的差值。 ADPCM是一种利用输入信号的前向和后向相关性以及自适应量化间隔来压缩PCM数据的波形编码技术。 在实际的系统应用中,通常是根据多个先前的样本值来预测下一个输入样本值。 只有这样,才能得到更准确的预测值,减少误差。 由于每个样本都会产生非线性预测误差,因此称为自适应差分脉冲编码调制。 在算法完成过程中,选择了两个常数表,即量化步长索引调整表和索引值对应的量化步长表。 量化步长表的作用是以常数的形式确定量化步长值和下标; 索引调整表根据表中的误差值调整采样预测值的下标,进而调整预测值的大小。

3. 编码和解码

编码:

输入是16位采样的PCM信号X(n),通过编码器与上次采样的预测值n)相减,并将差值量化并输出,得到4位宽的ADPCM压缩码L( n)。 在输出L(n)的同时,用它来调整更新量化步长q(n+1),并计算当前样本在本次编码周期内的预测值X(n)(也是解码输出值)。 下一级PCM信号输入执行相同的操作,从而将PCM信号连续编码为ADPCM信号。 下面是ADPCM编码器的原理图。

图 1 显示了 ADPCM 编码过程的框图。 将线性输入样本 X(n) 与该输入样本 X(nl) 的先前估计值进行比较。 差值 d (n) 和当前步长 ss (n) 表示编码器逻辑。 下面描述的逻辑将产生示例 ADPCM 输出。 该输出样本还用于更新步长以计算 ss(n+1) 并提供给解码器以计算输入样本的线性估计。

编码器接受来自比较器的差值d(n)和步长,并计算4位ADPCM代码。 下面是伪代码中的计算表示。

伪代码实现:

让 B3 = B2 = B1 = B0 = 0

如果 (d(n) < 0)

那么B3 = 1

d(n) = ABS(d(n))

如果 (d(n) >= ss(n))

那么 B2 = 1 且 d(n) = d(n) - ss(n)

如果 (d(n) >= ss(n) / 2)

那么 B1 = 1 且 d(n) = d(n) - ss(n) / 2

如果 (d(n) >= ss(n) / 4)

那么B0 = 1

L(n) = (10002 * B3) + (1002 * B2) + (102 * B1) + B0

解码:

下面是ADPCM解码器的原理图。 可以看出,这是编码的逆过程。 输入是信号L(n),该信号和当前量化步长(第一个数字是初始量化步长)被发送到解码器。 编码器找出差异 d(n)。 同时,输入L(n)还用于计算和调整下一级的量化步长q(n+1)。 接下来,将差值d(n)与上一级预测值X(n-1)相加,得到16比特的PCM解码输出信号,并将该PCM输出信号作为下一级预测值。

无论编码还是解码,即PCM信号是否被压缩为ADPCM信号,都需要利用ADPCM的值来计算更新的量化步长q(n),这是通过两次查表来实现的。 首先通过量化步长索引调整表(表3.3)找出ADPCM值对应的量化步长索引值,然后将此索引值与之前的索引值相加,得到对应量化步长大小的下限值(表3.3) 3.4)。 下标,通过下标可以找到新的量化步长。 这样就完成了量化步长的调整。

图 2 显示了 ADPCM 解码过程的框图。 ADPCM 样本被提供给解码器。 解码器计算先前的线性输出估计和预期输出估计之间的差。 该差异被添加到先前的估计中以产生线性输出估计。 输入 ADPCM 样本也被提供给步长计算器以计算步长估计。

解码器接受 ADPCM 代码值、L(n) 和步长值。 它计算再现的差值并累积估计的波形值x。 这是一个伪代码算法:

伪代码:

d(n) = (ss(n)B2)+(ss(n)/2B1)+(ss(n)/4*BO)+(ss(n)/8)

如果 (B3 = 1)

那么 d(n) = d(n) * (-1)

X(n) = X(n-1) + d(n)

4.步长的计算

用于将2位码字()映射到量化步长索引,用于根据之前的量化样本计算当前样本的步长。 它是一个查找表,为每个可能的 2 位码字提供量化步长索引。 该表总共有 8 个条目,因为有 2^3 = 8 个可能的 2 位码字。

指定每个索引值的量化步长。 它是一个查找表,提供每个量化步长索引的步长大小。 该表共有 49 个条目,索引值范围为 0 到 48。步长以对数增量选择,因此较小的幅度使用较小的步长,较大的幅度使用较大的步长。 这样可以更有效地利用可用比特率,同时保持良好的信噪比。

对于编码和解码过程,ADPCM算法都会根据最新的ADPCM值来调整量化器的步长。 下一个样本的步长 n+l 使用以下公式计算:

该方程可以有效地实现为两级查找表。 首先,使用ADPCM码的大小作为索引来找到调整因子,如表1所示。然后使用该调整因子来移动表2中的索引指针。然后索引指针将指向新的步骤尺寸。 大于3的值会增加步长。 小于4的值会减小步长。

4. 抽样定理

存在一个时间连续信号f(t),其频带限于(0,fh)频率。 如果对信号进行等间隔采样,时间间隔小于或等于1/(2fh),那么根据得到的采样值就可以完全恢复原始信号。 换句话说,如果连续信号f(t)具有最高频率并且其值不超过fh,则该信号必定是周期信号。 当采样频率大于或等于信号最高频率的两倍(fS≥2fh)时,采样值包含了原始信号的全部信息,且信息不丢失。 当需要时,可以根据采样值信息恢复原始连续信号。 这就是抽样定理。

5. 脉冲幅度调制(PAM)

脉冲幅度调制(PAM)是一种脉冲载波的幅度调制方法,其幅度随着基带信号的变化而变化。 如果前面的采样定理是使用脉冲脉冲作为脉冲载波,那么此时的采样定理就是脉冲幅度调制。

PAM一般分为两种方法。 一是“曲顶”脉冲幅度调制,即采样信号fS(t)的脉冲顶部保持f(t)的变化模式; 另一种脉冲顶部不符合f(t)的变化规律,即“平顶”脉冲幅度调制。曲顶脉冲幅度调制采用的采样方法一般称为自然采样,而“平顶”脉冲幅度调制采用的采样方法称为自然采样。用于平顶脉冲幅度调制的称为瞬时采样。

图3-3(a)所示为平顶采样方法得到的采样信号。 可以看出,每个采样脉冲的幅度与瞬时采样值成正比,但采样脉冲都是矩形的。 图3.3(b)所示为采样信号的产生原理。 首先将原始信号f(t)与δT(t)相乘,得到理想的采样信号FS(ω),然后通过脉冲发生电路,输出就是所需的平顶采样信号fH(t) 。

6. 模拟信号的量化

对模拟信号进行采样后,得到的采样值随着原始信号幅度的变化而不断变化。 如果这些样本值直接通过噪声通道传输,接收端无法准确评估这些样本信号。 这里,要求发送端用指定的有限数量的数字电平来表示采样信号,并且电平间隔必须大于干扰噪声。 此时接收端就可以准确计算出发送的样本。

量化是将模拟信号的采样值用有限数量的数字电平来表示的过程,而这些数字电平是预先确定的。 简而言之,采样将具有连续时间和值的模拟信号转换为具有离散时间和连续值的采样信号,而量化则将连续采样信号转换为由有限数量的数字电平组成的离散采样信号。 。 由于量化的这一特性,不可避免地会存在量化误差,而必须对量化误差进行测量,一般采用均方误差法。 由于量化误差的影响相当于噪声干扰,因此也称为量化噪声。 下面描述了两种常见的量化方法。

(1)统一量化

(2)非均匀量化

与均匀量化相对应的是非均匀量化,即量化间隔的大小不是恒定的。 当输入信号样本值较小时,量化间隔也较小; 当输入信号样本值较大时,量化间隔也较大。 非均匀量化比均匀量化具有突出的优势。

首先,当输入量化器的信号的概率密度不均匀时,非均匀量化器可以产生非常好的平均信号量化噪声功率比; 其次,非均匀量化器的量化噪声功率的均方根与信号的采样成正比。 值的大小。 因此,无论是大信号还是小信号,它们的量化噪声都是大致相同的。 也就是说,如果输入是任意的非均匀信号,则量化水平可以保持近似恒定的信噪比。

在实际应用中,通常会先对采样值进行压缩,然后进行均匀量化,通过这种方式实现非均匀量化。所谓压缩实际上是一个非线性变换电路,可以将线性输入变量x转换为非线性变量输出变量y,如下式所示

7.WOX格式

一、定义

VOX 文件是一种声音文件格式,通常用于存储低质量音频数据,例如电话录音、语音邮件和语音提示。 VOX文件使用ADPCM编码来压缩音频数据,以减小文件大小并提高传输效率。

VOX文件的基本格式包括文件头和数据块。 文件头包含文件格式信息和声音参数,例如采样率、通道数、位深度和压缩类型。 数据块包含ADPCM编码的音频数据,以及用于解码音频数据的量化表和状态信息。

VOX 文件的编码是在 ADPCM 编码器中执行的。 编码器将原始音频数据转换为ADPCM编码输出,并将输出写入VOX文件的数据块中。 在解码VOX文件时,解码器会读取文件头和数据块,并使用量化表和状态信息来解码ADPCM编码输出并恢复原始音频数据。

由于 VOX 文件使用 ADPCM 编码进行压缩,因此其音质通常较低,但文件大小较小,适合在带宽和存储空间有限的环境中使用。 VOX 文件可以使用各种音频编辑器和播放器打开和编辑,但需要支持 ADPCM 解码的软件才能正确解码音频数据。

2.格式

T (i) 是从文件中字节号“i”处的文件开头开始的时间偏移量(以秒为单位)。 SR是每秒样本的采样率。

每个样本中的编码是自适应差分脉冲编码调制(ADPCM)。 这是一种差分编码方案,其中每个样本近似当前输入值和先前输入值之间的差。 差异的幅度分量的权重是自适应的(非线性)。 也就是说,它可以在每次采样后发生变化。

符号:正(0)或负(1)样本。

大小:与之前的示例相比发生了变化(0 到 7)。

2、将WAV文件转换为VOX文件需要以下步骤:

1. 使用音频编辑器或转换工具打开WAV 文件。

2. 根据VOX 文件的要求设置WAV 文件的采样率、通道数、位深等参数。 通常,VOX 文件的采样率为 8000 Hz、通道数为 1(单声道)以及位深度为 4 位。

3. 使用ADPCM编码器将WAV文件转换为ADPCM编码输出。 您可以使用现有的 ADPCM 编码器软件或实现您自己的 ADPCM 编码器。

4、将ADPCM编码输出写入VOX文件的数据块中,并添加文件头。 VOX 文件的文件头包含文件格式信息和声音参数,例如采样率、通道数、位深度和压缩类型。 您可以使用现有的 VOX 文件编辑器或实现您自己的 VOX 文件生成器。

5、保存VOX文件,使用支持ADPCM解码的播放器播放测试。