前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python wave音频库使用(一)

python wave音频库使用(一)

作者头像
李小白是一只喵
发布2020-04-27 10:34:13
2.1K0
发布2020-04-27 10:34:13
举报
文章被收录于专栏:算法微时光

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

用于存放数据

代码如下:

代码语言:javascript
复制
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音频文件格式

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • wave
  • WAV音频相关因素
    • wav文件格式
    • 参考
    相关产品与服务
    文件存储
    文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档