简述pcm数字化音频的主要原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述pcm数字化音频的主要原理相关的知识,希望对你有一定的参考价值。

PCM(Pulse Code Modulation)脉冲编码调制是一种模数转换的最基本编码方法。

它把模拟信号转换成数字信号的过程称为模/数转换,它主要包括三在版块: (1)采样:在时间轴上对信号数字化。(2)量化:在幅度轴上对信号数字化。(3)编码:按一定格式记录采样和量化后的数字数据。

编码的过程首先用一组脉冲采样时钟信号与输入的模拟音频信号相乘,相乘的结果即输入信号在时间轴上的数字化。然后对采样以后的信号幅值进行量化。最简单的量化方法是均衡量化,这个量化的过程由量化器来完成。

对经量化器A/D变换后的信号再进行编码,即把量化的信号电平转换成二进制码组,就得到了离散的二进制输出数据序列x ( n ),n表示量化的时间序列,x ( n )的值就是n时刻量化后的幅值,以二进制的形式表示和记录。

PCM文件:模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。Windows的Convert工具可以把PCM音频格式的文件转换成Microsoft的WAV格式的文件。   

将音频数字化,其实就是将声音数字化。最常见的方式是通过脉冲编码调制PCM(Pulse Code Modulation)。运作原理如下。

首先我们考虑声音经过麦克风,转换成一连串电压变化的信号,如图一所示。这张图的横坐标为秒,纵坐标为电压大小。要将这样的信号转为 PCM 格式的方法,是使用三个参数来表示声音,它们是:声道数、采样位数和采样频率。

采样频率:即取样频率,指每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多。

由于人耳的分辨率很有限,太高的频率并不能分辨出来。在16位声卡中有22KHz、44KHz等几级,其中,22KHz相当于普通FM广播的音质,44KHz已相当于CD音质了,目前的常用采样频率都不超过48KHz。

采样位数:即采样值或取样值(就是将采样样本幅度量化)。它是用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率。它的数值越大,分辨率也就越高,所发出声音的能力越强。

声道数:很好理解,有单声道和立体声之分,单声道的声音只能使用一个喇叭发声(有的也处理成两个喇叭输出同一个声道的声音),立体声的pcm可以使两个喇叭都发声(一般左右声道有分工) ,更能感受到空间效果。

参考技术A

音频数字化简单原理: 

从字面上来说,数字化 (Digital) 就是以数字来表示,例如用数字去记录一张桌子的长宽尺寸,各木料间的角度,这就是一种数字化。跟数位常常一起被提到的字是模拟 ( Analog/Analogue) ,模拟的意思就是用一种相似的东西去表达,例如将桌子用传统相机 将三视图拍下来,就是一种模拟的记录方式。

两个概念:
1、分贝(dB):声波振幅的度量单位,非绝对、非线性、对数式度量方式。以人耳所能听到的最静的声音为1dB,那么会造成人耳听觉损伤的最大声音为100dB。人们正常语音交谈大约为20dB。10dB意味着音量放大10倍,而20dB却不是20倍,而是100倍(10的2次方)。

2、频率(Hz):人们能感知的声音音高。男性语音为180Hz,女性歌声为600Hz,钢琴上 C调至A调间为440Hz,电视机发出人所能听到的声音是17kHz,人耳能够感知的最高声音频 率为20kHz。

将音频数字化,其实就是将声音数字化。最常见的方式是透过 PCM(脉冲) 。运作原理如下。首先我们考虑声音经过麦克风,转换成一连串电压变化的信号,如下图所示。这张图的横座标为秒,纵座标为电压大小。要将这样的信号转为 PCM 格 式的方法,是先以等时距分割。

检测音频信号中的数字削波

【中文标题】检测音频信号中的数字削波【英文标题】:Detecting digital clipping in audio signal 【发布时间】:2013-05-17 22:04:36 【问题描述】:

在python中给定一个音频字节数组data

inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NONBLOCK, card)

# Set attributes: Mono, 48000 Hz, 16 bit little endian samples
inp.setchannels(1)
inp.setrate(48000)
inp.setformat(alsaaudio.PCM_FORMAT_S16_LE)
l, data = inp.read()

如何检测数字剪辑,data 必须超过哪个值才能确保它被数字剪辑?

【问题讨论】:

超速是什么意思?数字剪辑?对于超过两个或三个样本,数据必须等于 16 位有符号整数的最大值或最小值,才能进行裁剪。 当您收听过载的音频时,如果人们触摸麦克风或电路在某处短路或大声喊叫,它会失真。我想这被称为数字剪辑。 @RobertHarvey 所以基本上介于 -32.768 和 32.767 之间?所以如果我使用 if audioop.max(data,2) >= 32767 ||如果 audioop.max(data,2) 音频信号链中的任何位置都可能出现过载音频。有时这是故意的,尤其是在电吉他放大器中。数字剪辑是不同的;当没有更多的位可以表示信号的幅度时,就会发生这种情况。 是的,基本上就是这样。如果您在 -32768 处看到三个或更多连续样本,或者在 32767 处看到三个或更多连续样本,则可能发生了削波。 【参考方案1】:

过载基本上是增益失真。它将电压升高到驱动器刚刚切断顶部并因此扭曲信号的程度。如果您需要以数字方式对此进行测试,那将是硬剪辑。因此,您需要搜索通过最大阈值的值。对于 16 位音频文件,剪辑本质上将是 0db。因为如果没有更多的位可以保存,那么软件会自动将其切掉到 16 位整数可以容纳的最大值。不幸的是,如果轨道之前已经失真,然后降低了音量以便更好地融入混音,你可能找不到它。除非那是,您正在检查的是轨道上唯一的声源,在这种情况下,只需找到轨道的最大值并将其设置为您的阈值。我可以说,尽管硬削波显示为方波,因此您可以在比普通可听波更长的时间段内搜索连续相同的值(以忽略合法的方波音调)。不过,这就是我能为你做的最好的事情了。

【讨论】:

以上是关于简述pcm数字化音频的主要原理的主要内容,如果未能解决你的问题,请参考以下文章

PCM格式音频

基于RK3399OpenHarmony富设备软件音频解码方案

昨晚回顾:数字传输系统中PCM-脉冲编码调制体制简述

PCM文件格式简单介绍

什么是pcm基群

数字信号处理傅里叶变换性质 ( 傅里叶变换频移性质示例 | PCM 音频信号处理 | 使用 matlab 进行频移操作 )