语音

语音

声音作为一种机械波,其基本物理属性是频率和振幅。频率指振动的快慢。振幅是指声波在某个位置上的瞬时强弱。有时候,人们用音高、音质和音强来描述声音的基本特征。实际上,这三个特征都归结为频率和振幅这两个基本属性。其中音高、音质与频率相关。

所谓分贝,是指两个相同的物理量(例A1A0)之比取以10为底的对数并乘以20(或10),即N = 20lg(A1/A0) 。通常,我们以20微帕斯卡(μPa)为基准值来度量其他声音的强弱,例如,火箭发射时产生的声音压力是2000帕斯卡,因此,其分贝值就是log20(2000/20x10-6),即160分贝。

采样频率:单位时间内采集的样本数,是采样周期的倒数。

常见的一些采样频率:CD-Audio 采样频率为44.1kHz,一般网络和移动通信采样的音频采样率为8KHz

量化深度:表示一个样本的二进制的位数,即样本的比特数。一般的网络音频(移动通信)应用采用了8位的量化深度,CD音频的量化深度则是16比特,而有些高级数字音频系统采用了32位的量化深度。

总之,采样是时间上的离散化,而量化则是空间上的离散化。

编码:PCM编码,增量调制编码

PCM编码(脉冲编码调制)的量化分为两种:一种是均匀量化(又称为线性量化),另一种称为非均匀量化(非线性量化)

均匀量化如下图

业界广泛采用了两种非均匀量化,一种称为μ律压扩(μ-Law)技术,另一种称为A律压扩(A-Law)技术。

增量调制编码

连续的1表示信号在上升,每次上升一个Δ;连续的0表示信号在下降,每次下降一个Δ;在信号的平缓部分,编码输出表现为01的交错,即数字化信号以阶跃Δ的大小上下起伏,用以记录模拟波形的平缓变化(对DM编码来说只能这样做)。

WAVE波形音频文件

WAVE文件,又称波形音频文件,是一种最为重要的用于存储PCM编码的数字音频数据的文件。WAVE文件作为多媒体应用中广泛使用的声波文件格式之一,是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,一个WAVE文件的最开头四个字节便是"RIFF"WAVE文件是由若干个Chunk(可以翻译为块)组成的。按照在文件中的出现位置,它们分别是RIFF WAVE ChunkFormat ChunkFact Chunk(可选)和Data Chunk。这四个块(Chunk)的排列方式如图4-1所示。

RIFF WAVE Chunk

ID = 'RIFF'

RiffType = 'WAVE'

Format Chunk ID = 'fmt '

Fact Chunk(optional) ID = 'fact'

Data Chunk ID = 'data'

除了Fact Chunk外,其他三个Chunk是必须具有的。我们看到,每个Chunk有各自的ID,均位于Chunk最开始的位置。ID作为标识,均为4个字节,实际上是4个字符,如"RIFF"。这4个字符合在一起被称为"四字符码"Four Character CodeFCC)。用"四字符码"作块ID,是RIFF文件的重要特点。紧跟在ID后面的是Chunk大小(注意,实际上是去除IDSize所占的字节数后剩下的其他字节数)4个字节,其中低字节表示数值低位,高字节表示数值高位。

下面具体介绍各个Chunk的内容。所有数值表示均为低字节表示低位,高字节表示高位。

RIFF WAVE Chunk

"RIFF"作为标识,然后紧跟着为size字段,该size是整个wav文件大小减去IDSize所占用的字节数,即FileLen - 8 = Size然后是Type字段,为'WAVE',表示是wav文件。

字段名称

所占字节数

具体内容

ID

4 Bytes

"RIFF"

Size

4 Bytes

由数据决定

Type

4 Bytes

"WAVE"

Data Chunk

Data Chunk 是真正保存 wav 数据的地方,以'data'作为该 Chunk 的标示。然后是数据的大小。紧接着就是 wav 数据。

字段名称

所占字节数

具体内容

ID

4 Bytes

'data'

Size

4 Bytes

音频数据的大小

data

最大不超过 size 所能表示的字节数

音频数据,是文件的主体

根据 Format Chunk 中的声道数以及采样 bit 数,wav 数据的 bit 位置可以分成以下 4 种形式

单声道

8bit 量化

样本 1

样本 2

样本 3

样本 4

声道 0(左)

声道 0(左)

声道 0(左)

声道 0(左)

双声道

8bit 量化

样本 1

样本 2

声道 0(左)

声道 1()

声道 0(左)

声道 1()

单声道

16bit 量化

样本 1

样本 2

声道 0(左)

(低位字节)

声道 0(左)

(高位字节)

声道 0(左)

(低位字节)

声道 0(左)

(高位字节)

双声道

16bit 量化

样本 1

声道 0(左)

(低位字节)

声道 0(左)

(高位字节)

声道 1(右)

(低位字节)

声道 1(右)

(高位字节)

双声道

将转码输出配置为未压缩的PCM格式音频,

即采样频率为44.1kHz、量化深度为16bits、双声道的波形音频,那么,缓冲区中的音频数据将按图4-39所示的方式排列。

 

样本 1

   

样本 2

 

左声道低位字节

左声道高位字节

右声道低位字节

右声道高位字节

左声道低位字节

左声道高位字节

右声道低位字节

右声道高位字节

现在我们利用pAudioData指针来做一项实验,即利用指针pAudioData,将输出PCM音频的左声道字节全部改写为0。这样,读者播放输出音频文件,将只能听到右声道的声音。这项实验有助于读者理解左右声道的概念。

混声

采取创建多个Media Session的技术路线即可实现上述目标。图4-26描述了多Media Session播放多音频文件的基本原理

我们利用三个Media Session同时启动三个音频文件的播放,三个声音都能够被听到。实际上,最后听到的声音,是一个混合后的声音,这是通过硬件(声卡)混声器(Mixture)实现的。需要指出的是,上述多音频文件播放的基本原理,正是游戏、动画等多媒体应用中的基本技术。理解这一点非常有用,读者今后完全可以利用该方法尝试开发类似的应用。

音频信号的三种编码方式

波形编码,参数编码,混合编码

猜你喜欢

转载自www.cnblogs.com/kexinxin/p/10049888.html
今日推荐