Python解析Wav文件并绘制波形的方法

本文详细介绍了如何使用Python解析WAV文件,包括WAV文件的RIFF格式、CHUNK结构、PCM编码等内容,并展示了如何用Python的Wave库提取信息以及结合numpy和matplotlib绘制波形图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

资源下载

#本文PDF版下载

Python解析Wav文件并绘制波形的方法

#本文代码下载

Wav波形绘图代码

#本文实例音频文件night.wav下载

音频文件下载 (石进-夜的钢琴曲)

前言

在现在繁忙的生活中,我们经常会听些歌来放松一下自己,我们经常会从各种播放软件中听自己喜欢的歌,并且往往我们会下载一部分歌曲,而现在音频的种类也相当繁多,像是Wav,Mp3,FLAC,AAC等等很多格式,最近由于需要做一个能够分析Wav格式音频的波形来取得一些数据比如获取人录音时是否说完等等用途.本周先对解析Wav并用Python绘制其波形进行了一些探索.

 

Wav文件格式

我们先来看看wikipedia上对于wav音频格式的解释:

「Waveform Audio File Format(WAVE,又或者是因为扩展名而被大众所知的WAV),是微软与IBM公司所开发在个人电脑存储音频流的编码格式,在Windows平台的应用软件受到广泛的支持,地位上类似于麦金塔电脑里的AIFF.此格式属于资源交换档案格式(RIFF)的应用之一,通常会将采用脉冲编码调制的音频资存储在区块中。也是其音乐发烧友中常用的指定规格之一.由于此音频格式未经过压缩,所以在音质方面不会出现失真的情况,但档案的体积因而在众多音频格式中较为大.」

我们可以看到上面提到了两个个关键词RIFF和脉冲编码调制.所以我们接下来先解释一下 RIFF「资源交换档案格式」是什么.

 

RIFF格式

我们同样的来看一下wikipedia对RIFF的解释
「 Resource Interchange File Format(简称RIFF),资源交换文件格式,是一种按照标记区块存储数据(tagged chunks)的通用文件存储格式,多用于存储音频、视频等多媒体数据.Microsoft在windows下的AVI、ANI 、WAV等都是基于RIFF实现的.

RIFF是由Microsoft和IBM于1991年,在windows 3.1中引入的,作为windows 3.1默认的多媒体文件格式。RIFF是参考Interchange File Format来的,二者主要的区别是字节序大端、小端的问题.在基于IBM的80x86系列主机下,RIFF的字节序是小端的;而在IFF原有的格式中是按照大端存储整型数据的.」

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

CHUNK的结构

CHUNK总共由三个部分组成:

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

结构示意图如下:

CHUNK结构

           CHUNK的结构

  • CHUNK在一般情况下不能嵌套,但是当CHUNK的FOURCC为“RIFF”或者是“LIST”的时候可以嵌套数据.
  • “RIFF”的第一个CHUNK的FOURCC一定是“RIFF”,所以LIST为FOURCC的一定是子CHUNK及SUBCHUNK.

下面是一个包含了子CHUNK的结构示意图:

包含子CHUNK的示意图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值