如何在Python中从WAV文件绘制波形?

4
import os
import scipy.io
import scipy.io.wavfile
import numpy as np
import matplotlib.pyplot as plt
dataset_path = os.path.join(os.environ['HOME'], 'shared', 'data', 'assignment_1')
wavedata = os.path.join(dataset_path, 'example.wav')
   
fs, audio_buffer = scipy.io.wavfile.read(wavedata)

我有点不明白如何进一步使用 matplotlib.pyplot,希望得到任何建议或正确的文档!


2
你想绘制什么?只是一个常规的时间序列图吗?如果能以文本形式显示 audio_buffer 就更好了。 - Grayrigel
1
使用openCV和声卡库的实时示波器链接。 - DrBwts
1
推荐使用 librosa.display.waveplot - Jon Nordby
1个回答

4

这将以时间序列的形式,在其本地时间域中绘制wav音频文件。

import os
import scipy.io
import scipy.io.wavfile
import numpy as np
import matplotlib.pyplot as plt

myAudioFilename = 'aaa.wav'  #  plot this wav file     ~/audio/aaa.wav

dataset_path = os.path.join(os.environ['HOME'], 'audio') # homedir -> audiodir -> my wav files
wavedata = os.path.join(dataset_path, myAudioFilename)
   
sampleRate, audioBuffer = scipy.io.wavfile.read(wavedata)

duration = len(audioBuffer)/sampleRate

time = np.arange(0,duration,1/sampleRate) #time vector

plt.plot(time,audioBuffer)
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.title(myAudioFilename)
plt.show()

注意图形准确地呈现了时间,这是从WAV文件头中派生出来的,它定义了采样率...以及位深度和通道数...这些属性赋予了代码解析二进制WAV文件的能力,逐字节地渲染为显示曲线上的一系列点(每个点是给定通道的音频样本)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接