Python繪制wav文件音頻圖(靜態)[matplotlib/wave]


#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
繪制波形圖

plottingWaveform.py
"""

import wave
import pylab as pl
import numpy as np

print('working')

# 打開wav文檔
file = wave.open(r"mic4.wav", "rb")

# 讀取格式信息
# (nchannels, sampwidth,framerate, nframes, comptype, compname)
params = file.getparams()
nchannels,sampwidth,framerate,nframes = params[:4]

# 讀取波形數據
str_data = file.readframes(nframes)
# 文件使用完畢,關閉文件
file.close()

# 將波形數據裝換成數組
wave_data = np.fromstring(str_data, dtype=np.short)
wave_data.shape = (-1, 2)

wave_data = wave_data.T  # 矩陣轉置
time = np.arange(0, nframes) * (1.0 / framerate)
print ("time:", len(time))
print ("wave_data:", len(wave_data[0][0:len(time)]))
# 繪制波形
"""
subplot(mnp) / (m,n,p)是將多個圖畫到一個平面上的工具.
其中,m表示是圖排成m行,n表示圖排成n列,也就是整個figure中有n個圖是排成一行的,一共m行,
如果m=2就是表示2行圖.p表示圖所在的位置,p=1表示從左到右從上到下的第一個位置.
"""
pl.subplot(2, 1, 1)  # 這里也可以使用pl.subplot(211)
pl.plot(time, wave_data[0][0:len(time)])
pl.subplot(2, 1, 2)  # 這里也可以使用pl.subplot(212)

pl.plot(time, wave_data[1][0:len(time)], c="g")
pl.xlabel("time (seconds)")
pl.show()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM