如何绘制WAV文件

迭戈·马丁内斯·贾尔迪尼(DiegoMartínezGiardini):

我刚刚读了一个scipy的wav文件,现在我想使用matplotlib绘制该文件的图,在“ y比例”上,我想查看倾斜度,在“ x比例”上,我想查看帧数!任何帮助我该怎么做?谢谢!

from scipy.io.wavfile import read
import numpy as np
from numpy import*
import matplotlib.pyplot as plt
a=read("C:/Users/Martinez/Desktop/impulso.wav")
print a
埃德万德:

您可以调用wave lib来读取音频文件。

要绘制波形,请使用matplotlib中的“绘图”功能

import matplotlib.pyplot as plt
import numpy as np
import wave
import sys


spf = wave.open("wavfile.wav", "r")

# Extract Raw Audio from Wav File
signal = spf.readframes(-1)
signal = np.fromstring(signal, "Int16")


# If Stereo
if spf.getnchannels() == 2:
    print("Just mono files")
    sys.exit(0)

plt.figure(1)
plt.title("Signal Wave...")
plt.plot(signal)
plt.show()

您将看到类似以下内容:在此处输入图片说明

要以秒为单位绘制x轴,您需要获得帧频并除以信号大小,您可以使用numpy的linspace函数创建一个与音频文件的大小线性间隔的时间向量,最后可以再次使用plot喜欢 plt.plot(Time,signal)

import matplotlib.pyplot as plt
import numpy as np
import wave
import sys


spf = wave.open("Animal_cut.wav", "r")

# Extract Raw Audio from Wav File
signal = spf.readframes(-1)
signal = np.fromstring(signal, "Int16")
fs = spf.getframerate()

# If Stereo
if spf.getnchannels() == 2:
    print("Just mono files")
    sys.exit(0)


Time = np.linspace(0, len(signal) / fs, num=len(signal))

plt.figure(1)
plt.title("Signal Wave...")
plt.plot(Time, signal)
plt.show()

以秒为单位的新图x轴:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章