Вы можете вызвать 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()
вы будете иметь что-то вроде:
Для построения оси х в секундах вам нужно получить частоту кадров и разделите по размеру вашего сигнала, вы можете использовать функцию linspace из numpy, чтобы создать временной вектор, линейно распределенный с размером аудиофайла, и, наконец, вы можете использовать график снова, как 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()
Новый участок оси х в секундах:
Что делает 'print a' выход? –
Это один или многоканальный wavfile? –
Напечатайте a, просто покажите кортеж с необработанными данными аудиофайла. И это моно-wavfile. –