语音识别相关概念

声音如何保存成数字信号?

声音是听觉对声波产生的感知,而声波是一种在时间和振幅上连续的模拟量,本质是介质的振动,,比如空气的振动。那么只需要把这个振动信号记录下来,并用一串数字来表达振动信号振动的快慢和振动的幅度,就可以实现声音的记录

以前的留声机就是通过唱片上凹槽的深浅、长短来表征声音的振幅和持续时间。


而通过麦克风来采集声音步骤如下:

  • 首先,声波通过空气传播到麦克风的振膜
  • 然后,振膜随空气抖动的振幅大小产生相应的电学信号。我们把这种带有声学表征的电学信号叫做模拟信号(Analog signal)。
  • 最后,通过A/DC(模数转换器)将模拟信号转换成数字信号(Digital signal)。即通过脉冲编码调制(Pulse Code Modulation,PCM)对连续变化的模拟信号进行抽样、量化和编码转换成离散的数字信号

PCM编码过程如下图所示:

PCM编码过程

(1) 采样
将时间连续的模拟信号按照采样率提取样值,变为时间轴上离散的抽样信号的过程

人耳可以听到的声波频率范围是 20Hz~22.05kHz,因此44.1kHz/16bit的音频数据被认为是无损音频

(2) 量化
抽样信号虽然是时间轴上离散的信号,但仍然是模拟信号,其样值在一定的取值范围内,可有无限多个值。显然,对无限个样值给出数字码组来对应是不可能的。为了实现以数字码表示样值,必须采用“四舍五入”的方法把样值分级“取整”,使一定取值范围内的样值由无限多个值变为有限个值。这一过程称为量化。

量化后的抽样信号与量化前的抽样信号相比较,当然有所失真,且不再是模拟信号。这种量化失真在接收端还原模拟信号时表现为噪声,并称为量化噪声。量化噪声的大小取决于把样值分级“取整”的方式,分的级数越多,即量化级差或间隔越小,量化噪声也越小。

(3) 编码
量化后的抽样信号就转化为按抽样时序排列的一串十进制数字码流,即十进制数字信号。简单高效的数据系统是二进制码系统,因此应将十进制数字代码变换成二进制编码。这种把量化的抽样信号变换成给定字长(采样位数)的二进制码流的过程称为编码

经过上面的PCM编码过程得到的数字信号就是PCM音频数据

PCM文件

PCM文件就是未经封装的音频原始文件或者叫做音频“裸数据”。涉及3个基本概念:采样位深、采样率和通道数。

采样位深
采样位深也就是每个采样点用多少bit来表示

从物理意义上来说,位深代表的是振动幅度的表达精确程度或者说粒度。

假设数字信号是一个1到-1的区间,如果位深为16bit,那么第1个bit表示正负号,并且剩下的15个bit可以表征0~32767个数,那么振幅就可以精确到1/32768的粒度了。

一般在网络电话中用的就是16bit的位深,这样不太会影响听感,并且存储和传输的耗费也不是很大。而在做音乐或者更高保真度要求的场景中则可以使用32bit甚至64bit的位深来减少失真(高采样位深可以减少失真)。

题外话:有的音乐就追求这种模糊感,所以“8bit”有的时候也代表一种听感朦胧的音乐艺术类型。

采样率
采样率就是1秒内采集到的采样点的个数(赫兹Hz)。常用为 16kHz和48kHz。

根据奈奎斯特采样定理在进行模拟/数字信号的转换过程中,当采样频率fsf_sfs大于信号中最高频率fmaxf_{max}fmax的2倍时采样之后的数字信号才可以完整地保留原始信号中的信息。也就是说采样率和保留的声音频率基本上是2倍的关系。

下图的频谱图对比16kHz采样率和48kHz采样率的音频:

16kHz采样率的音频在8kHz以上的频谱基本是没有能量的(黑色),也就是说这部分高频的信息由于采样率不够已经丢失了。从听感上来说人耳可以听到的频率范围大概是20~20kHz之间。如果采样率不够,那么和实际听感比起来声音就会显得“低沉”或者说“闷”

采样率的选择依据场景决定:

  • 如果只是为了听见人声、听懂对方在说什么,那么为了节省传输码率我们可以把采样率降到8kHz(比如打电话)。
  • 而在网络音视频会议场景需要平衡音质和传输带宽消耗,一般可以使用16kHz或者32kHz的采样率。
  • 如果是开线上音乐会或者音乐直播,我们通常会用较高的采样率来保证音质,比如44.1kHz或者48kHz。
  • 更极端一点,在音乐制作录音的时候,会采用96kHz甚至更高的采样率来方便后续的调音和制作。

通道数

在平时买音响的时候听过2.1声道或者5.1声道等名词,这些数字代表了有多少个播放单元。
比如,2.1声道中的2指的是左右两个音箱,1指的是中间一个低音音箱。每个音箱都会播放一个单独的音频,这时候就需要同时有3路音频信号同时播放,或者叫通道数为3。

由于编/解码器能力的限制(比如使用了单通道编/解码器),或者采集设备能力的限制(只能采集单通道的信号),音频信号通常为单声道的

听歌的时候,戴上耳机如果听到左右耳朵是不一样的,能够感觉到声音是从不同方向传过来的,那么就说明这个音频是双声道。我们通常也把这种双声道音频叫做立体声(stereo)。

除了播放需要多声道以外,采集也可能采集到多通道的数据。比如麦克风阵列采集到的原始信号,有多少个麦克风就会有多少个通道的音频信号。因此,这里通道数的物理含义其实就是同一时间采集或播放的音频信号的总数

假设有一个立体声的PCM音乐文件,它记录了1分40秒的采样率为48kHz的音频,如果这个文件的采样位深是16bit,那么这个立体声文件应该占用多大的存储空间呢?如果不经过压缩实时传输播放,又至少需要多少的带宽呢?
一个PCM音频文件的存储大小就是采样位深、采样率、通道数和持续时间的累乘

16×48000×2×100=1.53∗108bit=18.31MB16\times 48000\times 2\times 100=1.53*10^{8}bit=18.31MB16×48000×2×100=1.53108bit=18.31MB

实时传输所需的带宽就是它每秒所需的比特带宽

16×48000×2=1.53∗106bps16\times 48000\times 2=1.53*10^{6}bps16×48000×2=1.53106bps

PCM音频数据的存储方式

采集的PCM音频数据是需要保存到本地文件中,如果用单声道采集的,则按时间的先后顺序依次存入,如果是双声道的话则按时间先后顺序交叉地存入,如下图所示:

PCM音频数据一般无法通过播放器直接播放。可以使用 ffplay 或者 Audition 工具进行播放:
ffplay -f s16le -ar 44100 -ac 1 -i raw.pcm

  • f s16le:设置音频格式为有符号16位小端格式(signed 16 bits little endian),对应Android中的AudioFormat.ENCODING_PCM_16BIT
  • ar 44100:设置音频采样率(audio rate)为44100
  • ac 1:设置声道数(audio channels)1,单声道为1,双声道为2
  • i raw.pcm:设置输入的pcm音频文件

通常将PCM音频数据转化为WAVE文件就可以用播放器直接解析播放,WAVE是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。它符合资源互换文件格式(RIFF)规范。

音频的封装

平时经常看到的音频文件格式,比如MP3、FLAC和WAV等,它们有什么区别?它们所需的存储空间一样么?

有损和无损音频编码封装格式
有损的音频封装格式主要是通过压缩算法把文件大小尽量减少,但是在解压缩的时候却无法完美还原音频原来的数据(即有损)。比如MP3、AAC、AMR和WMA等编码封装格式。

有损音频格式比如MP3一般可以达到1:10的压缩比,即存储体积为未压缩音频的十分之一。但在听感上和无损格式比起来,如果不是专业人士很难听出区别。

无损音频封装则采用可完美还原的压缩算法,比如FLAC和APE等编码封装格式。FLAC与APE的压缩比基本相同,其中FLAC的压缩比为58.70%,而APE的压缩能力则要更高一些,压缩比为55.50%。它们都能压缩到接近源文件一半大小。无损封装甚至还可以不压缩编码,直接加个文件头作为封装,比如WAVE格式的封装。

WAVE文件的封装
WAVE文件作为多媒体中使用的声波文件格式之一,文件后缀名为.wav。它是以RIFF(Resource Interchange File Format)的缩写。因此,每个WAVE文件的头四个字节便是“RIFF”

WAVE文件由WAVE文件头部分和WAVE文件数据体部分组成,其中0~43字节存放采样率、通道数、数据部分的标识符等头信息,44字节以后的就是数据部分。简单地理解就是PCM文件加一个文件头描述文件的基本信息

什么是分贝?

分贝除了用于声学领域之外,在NVH测量领域,到处可见分贝。它不是一个单位,它是个无量纲。我们经常在声学、振动、电子学、电信、音频工程&设计等领域见到它。

分贝最初使用是在电信行业,是为了量化长导线传输电报和电话信号时的功率损失而开发出来的。是为了纪念美国电话发明家亚历山大·格雷厄姆·贝尔(Alexander Graham Bell),以他的名字命名的。分贝定义为1/10贝尔(Bel)。

1.分贝定义
分贝(dB)定义为两个数值的对数比率,这两个数值分别是测量值和参考值(也称为基准值)。存在两种定义情况。

一种为功率之比:1dB=10log⁡10(WW0)1dB=10\log_{10}(\frac{W}{W_0})1dB=10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值