RIFF文件简介

来源:互联网 发布:科学计算 python 编辑:程序博客网 时间:2024/05/16 17:44
音频处理基础知识:
------------------------------------------------------------
RIFF 简介:
------------------------------------------------------------
RIFF全称为资源互换文件格式(ResourcesInterchange FileFormat),
RIFF文件是windows环境下大部分多媒体文件遵循的一种文件结构,
RIFF文件所包含的数据类型由该文件的扩展名来标识,
能以RIFF文件存储的数据包括如下:
音频视频交错格式数据(.AVI)
波形格式数据(.WAV)
位图格式数据(.RDI)
MIDI格式数据(.RMI)
调色板格式(.PAL)
多媒体电影(.RMN)
动画光标(.ANI)
其它RIFF文件(.BND)

------------------------------------------------------------
2.  FOURCC: 一个FOURCC(four character code)是一个占4个字节的数据
------------------------------------------------------------
RIFF文件格式中,FOURCC非常普遍,structchunk 中的id成员,'LIST','RIFF'的type成员
FOURCC一般是四个字符,如'abcd'这样的形式,也可以三个字符包含一个空格,如'abc'
'RIFF',FileType,'LIST',ListType,ChunkID都是FOURCC,即使用4字节的ASIIC字符标识类型。


------------------------------------------------------------
3. CHUNK
------------------------------------------------------------
chunk是组成RIFF文件的基本单元,它的基本结构如下:
struct chunk{
u32 id; /* 块标志 */
u32 size; /* 块大小 */
u8 dat[size]; /* 块内容 */
};
chunk块中有且仅有'RIFF'和'LIST'类型可以包含其他块,而其它块仅能含有数据
RIFF文件块的数据结构如下:
'RIFF' FileSize FileType FileData
'LIST' ListSize ListType ListData
RIFF文件的FileData部分由若干个'LIST'及chunk组成,
而'LIST'的ListData又可以由若干个'LIST'及chunk组成,即'LIST'是可以嵌套的。

structchunk{
u32 id; /* 块标志 */
u32 size; /* 块大小 */
/*此时的dat = type + restdat */
u32 type ; /* 类型 */
u8 restdat[size] /* dat中除type4个字节后剩余的数据*/
};
可以看出,'RIFF'和'LIST'也是chunk,只是它的dat由两部分组成type和restdat。
如果和文件系统作比较,
"RIFF"chunk就好比是硬盘的根目录,
而"L1ST"chunk即为其下的子目录,其他的chunk则为一般的文件。
至于在RIFF文件的处理方面,微软提供了相关的函数。


A "RIFF" chunk consists of a four-byte chunk identifier (type FOURCC),
followed by a four-byte chunk size (type DWORD),
followed by the data portion of the chunk,
followed by a null pad byte if the size of the data portion is odd.
If the chunk identifier is "RIFF" or "LIST",
the first four bytes of the data portion of the chunk are a form type or list type (type FOURCC).

------------------------------------------------------------
4. wave 文件格式
------------------------------------------------------------
WAVE文件是非常简单的一种RIFF文件,它的格式类型为"WAVE"。
RIFF块包含两个子块,这两个子块的ID分别是"fmt"和"data",
其中"fmt"子块由结构PCMWAVEFORMAT所组成,其子块的大小就是sizeofof(PCMWAVEFORMAT),
数据组成就是PCMWAVEFORMAT结构中的数据。
"data"子块包含WAVE文件的数字化波形声音数据,其存放格式依赖于"fmt"子块中wFormatTag成员指定的格式种类,
在多声道WAVE文件中,样本是交替出现的。

------------------------------------------------------------
4. 编码类型
------------------------------------------------------------
G.711(PCM方式:PCM=脉码调制 :Pulse Code Modulation)
采样率:8kHz
信息量:64kbps/channel
理论延迟:0.125msec
品质:MOS值4.10

G.729(CS-ACELP方式:Conjugate Structure Algebraic Code Excited Linear Prediction)
共轭结构的代数码激励线性预测


------------------------------------------------------------
5. 声纹识别(应用)
------------------------------------------------------------
声纹识别(Voiceprint Recognition,即VPR),通常也被称为话者识别(Speaker Recognition),
分为两类,即话者辨认(Speaker Identification)和话者确认(Speaker Verification)。
前者用以判断某段语音是若干人中的哪一个所说的,是“多选一”问题;
而后者用以确认某段语音是否是指定的某个人所说的,是“一对一判别”问题。
不同的任务和应用会使用不同的声纹识别技术,
如缩小刑侦范围时可能需要辨认技术,而银行交易时则需要确认技术。
不管是辨认还是确认,都需要先对说话人的声纹进行建模,这就是所谓的“训练”或“学习”过程

声纹识别有文本相关的(Text-Dependent)和文本无关的(Text-Independent)两种。
与文本有关的声纹识别系统要求用户按照规定的内容发音,每个人的声纹模型逐个被精确地建立,
而识别时也必须按规定的内容发音,因此可以达到较好的识别效果,但系统需要用户配合,
文本无关的识别系统则不规定说话人的发音内容,模型建立相对困难,但用户使用方便,可应用范围较宽。
两种是有不同的应用范围的。
比如,在银行交易时可以使用文本相关的声纹识别,因为用户自己进行交易时是愿意配合的;
而在刑侦或侦听应用中则无法使用文本相关的声纹识别,因为无法要求犯罪嫌疑人或被侦听的人配合。

GMM(Gaussian Mixture Model)
UBM(Universal Background Model) UBM 其实就是一个大型的 GMM 模型


0 0
原创粉丝点击