python wave音频库使用(一)

image.png

目录

python wave音频库使用(一)
python wave音频库使用(二)

wave

wave主要作用是操作WAV格式文件。

什么是WAV格式文件?

WAV是最常见的声音文件格式之一,是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。
[图片上传中...(image.png-fc53c5-1587727221744-0)]

WAV是意义上的无损音乐格式,简单说就是CD里文件的数字化格式。

但WAV文件有一个致命的缺点,就是它所占用的磁盘空间太大(每分钟的音乐大约需要12兆磁盘空间)。


image.png

WAV音频相关因素

采样频率

每秒钟采集音频数据的次数.

采样频率越高,音频保真度越高。

计算机广泛配置的16位声卡,使用的采样频率通常包括11025Hz、22050Hz、44100Hz和48000Hz四种。

采用11025Hz采样的声音效果相当于电话声音的效果;
采用22050HZ采样的声音效果相当于FM调频广播的效果;
采用44100HZ采样的声音效果相当于CD声音的效果。

image.png
采样位数(振幅采样精度)

采样值或取样值,是用来衡量声音波动变化的一个参数,也是声卡的分辨率。

它的数值越大,分辨率也就越高,发出声音的能力越强。目前计算机中配置的16位声卡的采样位数包括8位和16位两种。

声道数

有单声道和立体声之分。

单声道的声音只能使用一个喇叭发声(有的声卡也将单声道信息处理成两个喇叭同时输出),立体声的WAV可以使两个喇叭都发声(一般左右声道有分工),这样更能感受到音频信息的空间效果。

显然,双声道数据还原特性更接近人们的听力习惯,但采集得到的数据量会增加1倍。

WAV格式大小计算

采样频率一般是44.1K,16bit采样精度

WAV格式大小 = 44.1KHz(采样频率) X 16bit(采样位数) X 2(双声道) X 播放时间

WAV格式是没有压缩无损的,MP3格式是按1:12压缩保存的,所以MP3格式大小等于上式的1/12

wav文件格式

WAVE文件是非常简单的一种RIFF文件,它的格式类型为"WAVE"。

什么是RIFF文件

RIFF全称为资源互换文件格式(ResourcesInterchange FileFormat),RIFF文件是windows环境下大部分多媒体文件遵循的一种文件结构。

能以RIFF文件存储的数据包括:

data res
音频视频交错格式数据 .AVI
波形格式数据 .WAV
位图格式数据 .RDI
MIDI格式数据 .RMI
调色板格式 .PAL
多媒体电影 .RMN
动画光标 .ANI
其它RIFF文件 .BND

RIFF是由chunk构成的,chunk是RIFF组成的基本单位,每个CHUNK可看作存贮了视频的一帧数据或者是音频的一帧数据,所以下面我们来讨论一下chunk的结构是怎么样的.


image.png

CHUNK的结构如下:

数据 说明
FOURCC 使用4字节的ASIIC字符标识类型
SIZE 数据的大小
DATA 用于存放数据

代码如下:

struct chunk
{
    uint32_t id;   // 块标志
    uint32_t size; // 块大小
    uint8_t data[size]; // 块数据
};
二进制分析
偏移地址 字节数 数据类型 内容
00H 4 char “RIFF”; RIFF标志
04H 4 long int 0x00 01 06 0A(注意数据存储顺序); 文件长度
08H 4 char “WAVE”; WAVE标志
0CH 4 char “fmt ”; fmt标志,最后一位为空
10H 4 long int 0x12; sizeof(PCMWAVEFORMAT)
14H 2 int 1(WAVE_FORMAT_PCM); 格式类别,1表示为PCM形式的声音数据
16H 2 int 2; 通道数,单声道为1,双声道为2
18H 2 int 44100; 采样频率(每秒样本数)
1CH 4 long int 0x10B10000; 每秒数据量;其值为通道数×每秒数据位数×每样本的数据位数/8。播放软件利用此值可以估计缓冲区的大小。
20H 2 int 数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整。
22H 2 int 每样本的数据位数,表示每个声道中各个样本的数据位数。如果有多个声道,对每个声道而言,样本大小都一样。
50H 4 char “data”; 数据标记符
54H 4 long int 0x00 01 05 D8; 语音数据大小

参考

百度百科
wav音频文件格式解析【个人笔记】(自用)
Python处理wave文件
RIFF文件是什么
RIFF和WAVE音频文件格式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。