美文网首页
python画WAVE文件波形图

python画WAVE文件波形图

作者: 铭小汁儿 | 来源:发表于2018-04-20 22:38 被阅读0次

WAV音波档案格式(Wave Audio File Format)是Windows用来储存数码声音(Digitized Sound)的格式。若想要得到音质较完美的档案储存在电脑内,就需要以WAV型式存放。因为这种格式是直接保存对声音波形的采样数据,数据没有经过压缩,所以播放效果会很好。但WAV有一个致命的缺陷,因为对数据采样时没有压缩,所以体积臃肿不堪,所占磁盘空间很大。其他很多音乐格式可以说就是在改造WAV格式缺陷的基础上发展起来的。

WAVE文件作为最经典的Windows多媒体音频格式,应用非常广泛,它使用三个参数来表示声音:采样位数、采样频率和声道数。

WAVE文件协议参见 Microsoft WAVE soundfile format

python有专门的wave库用于处理wav文件,所以可以直接利用该库画wav音频文件波形图。


import wave

import pylab as pl 

import numpy as np 

# 打开WAV文档 

f = wave.open(r"clip_0081.wav", "rb") 

# 读取格式信息 

# (nchannels, sampwidth, framerate, nframes, comptype, compname) 

params = f.getparams() 

nchannels, sampwidth, framerate, nframes = params[:4] 

# 读取波形数据 

str_data = f.readframes(nframes) 

f.close() 

#将波形数据转换为数组 

wave_data = np.fromstring(str_data, dtype=np.short) 

if nchannels == 2:

    wave_data.shape = -1, 2 

    wave_data = wave_data.T 

    time = np.arange(0, nframes) * (1.0 / framerate) 

    # 绘制波形 

    pl.subplot(211) 

    pl.plot(time, wave_data[0]) 

    pl.subplot(212) 

    pl.plot(time, wave_data[1], c="g") 

    pl.xlabel("time (seconds)") 

    pl.show()

elif nchannels == 1:

    wave_data.shape = -1, 1 

    wave_data = wave_data.T 

    time = np.arange(0, nframes) * (1.0 / framerate) 

    # 绘制波形 

    pl.subplot(211) 

    pl.plot(time, wave_data[0]) 

    pl.xlabel("time (seconds)") 

    pl.show()

相关文章

网友评论

      本文标题:python画WAVE文件波形图

      本文链接:https://www.haomeiwen.com/subject/nmftlftx.html