• wave文件头之笔记


    工作中接触到ASR(音频转文本),所以在网上查阅了相关资料,给自己做个笔记。

    我们用的科大讯飞的私有云,其中音频格式大部分是PCM编码格式,在转为wave文件时,需要加上一个文件头,这个文件头为44个字节。

    (1)wave是文件的格式,只要有一个符合格式的“头”和大量的”数据块“按要求组成文件就可以了。它并没有详细规定数据块中的数据采用哪种编码。
    PCM就是一种编码格式,保存为WAV文件的音频可以有多种编码格式,既可以是PCM也可以是ADPCM、A-Law、u-Law等等。常见的WAV可用编码格式还有:IEEE浮点、GSM6.1甚至MpegLayer-3。没错,就是MP3。
    所有,有时会内看到这个WAV能播放,另一容不能播放,但是换一台电脑又可以播放了的情况。这是因为第一台电脑上没有安装对应的解码器。

    (2)透过脉冲编码调制PCM(Pulse Code Modulation)将声音数字化,即模拟音频信号经模数转换(A/D变换)直接形成二进制序列,该文件没有附加的文件头和
    文件结束标志,windows的Convert工具能够把PCM音频格式的文件转换成Microsoft的WAV格式的文件。

    (3)计算:
    总区块大小:36+子区块2大小 或者 4+(8+子区块1大小)+(8+子区块2大小);
    注:如果为PCM,子区块1大小为16

    传输速率取样率*声道数*每个样点对应的位数(位元深度)/8 单位:Byte/s;

    一个样点的字节数:声道数*每个样点对应的位数(位元深度)/8;

    子区块2大小(实际样本数据的大小):秒数*声道数*每个样点对用的位数(位元深度)/8

    文件所占容量:采样频率*采样位数*声道*时间/8

    (4)wave文件格式解析:
    wave格式,是微软开发的一种文件格式规范,整个文件分为两部分,第一部分是“文件头”,记录重要的参数信息,对于音频而言,
    就包括:采样率、通道数、位宽等等;第二部分是“数据块”,即一帧一帧的二进制数据,对于音频而言,就是原始的 PCM 数据。
    所以wave格式 = Header(44 bytes) + data;每个wave文件的头四个字节便是”RIFF“。


    关于文件头:一般分为三个部分
    第一:RIFF 共三个属性,分别是“RIFF”、所有数据总长度、“WAVE”

    第二:fmt 共两个属性,分别是“fmt"、子区块1大小,

    注意:https://blog.csdn.net/Sssssusu/article/details/70184147中的例子里,fmt分别为66、6d、74、20,后面有个20不代表任何属性且值不定,是个过度字节;

    第三:data 共八个属性,分别是编码格式(wFormatTag)、声道数(nChannels)、取样率(nSamplesPerSec)、传输速率(nAvgBytesPerSec)、一个样点的字节数(nBlockAlign)、

    位元深度(wBitsPerSample)、”data"、子区块2大小(cbSize)

    (5)各属性的解释:
    声道数:有单身道和立体声之分,单声道的声音只能使用一个喇叭发声(有的也处理成两个喇叭输出同一个声道的声音),立体声的pcm可以是两个喇叭都发声。

    采样位数:即采样值或取样值(就是将采样样本幅度量化),指的是描述数字信号所使用的位数。它是用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率,他的数值越大,

          分辨率也就越高,所发出声音的能力越强。计算机中通常有8、16位。

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

          由于人耳的分辨率很有限,太高的频率并不能分辨出来,所以不是采样频率越高越好。

    比特率:指经过编码后的音频数据每秒钟需要用多少个比特来表示

    干货:https://www.cnblogs.com/ngcheck/articles/2891666.html

    ASCⅡ码:
    A - 65(十进制) - 0x41(十六进制)
    Z - 90(十进制) - 0x5A(十六进制)
    a - 97(十进制) - 0x61(十六进制)
    z - 122(十进制) - 0x7A(十六进制)


    这里附上一个关于wave文件头的参数解析:

      

    乾坤未定,你我皆是黑马
  • 相关阅读:
    [ 转载 ] Mysql 远程连接+开放80和3306端口 常用配置
    [ 转载 ] Mysql 数据库常用命令
    [ 转载 ] Centos 安装mysql后启动失败 出现 ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
    [2020多校联考]手套
    [2020多校联考]糖果机器
    [2020多校联考]染色相邻的边
    [2020多校联考]四个质数的和
    [2020多校联考]简单题
    [2020多校联考]MC
    [2020多校联考]进化
  • 原文地址:https://www.cnblogs.com/liuqijia/p/12731753.html
Copyright © 2020-2023  润新知