[英]How can i save spectrogram of audio file (.wav) from folders and sub-folders?
我有 276 个音频文件 (.wav)。 我想像下面的代码一样绘制信号和频谱图:
import matplotlib.pyplot as plot
from scipy.io import wavfile
samplingfrequency, signaldata = wavfile.read('/home/narges/dataset/seri1.16khz.128kbps/Voice Recorder/N00xxxx/N000200.wav')
plot.subplot(211)
plot.title('spec of vowel')
plot.plot(signaldata)
plot.xlabel('sample')
plot.ylabel('amp')
plot.subplot(212)
plot.specgram(signaldata,Fs=samplingfrequency)
plot.xlabel('time')
plot.ylabel('freq')
plot.show()
但我想阅读所有文件夹和子文件夹。 我使用此代码读取所有文件夹和子文件夹:
path = Path('/home/narges/dataset/dataset-CV-16kHz-128kbps/train/').glob('**/*.wav')
wavs = [str(wavf) for wavf in path if wavf.is_file()]
wavs.sort()
我正在使用此代码来保存扬声器 ID:
number_of_files=len(wavs) spk_ID = [wavs[i].split('/')[-1].lower() for i in range(number_of_files)]
现在,我如何更改以下代码以读取目录(路径)中的所有 .wav 文件并绘制信号和频谱图(如第一个代码),并将其保存为 spk_ID 的名称?
def graph_spectrogram(wav_file):
wavs = rate, data = wavfile.read('/home/narges/dataset/dataset-CV-16kHz-128kbps/train/speaker_00/s_00_0_00.wav')
pxx, freq, bins, im = plt.specgram(x=data, Fs=rate, noverlap=384, NFFT=512)
spk_ID = [wavs.split('/')[-1].lower()]
plt.xlabel('time')
plt.ylabel('freq')
plt.savefig('xyz.png',bbox_inches='tight', dpi=300, frameon='false')
if __name__=='__main__':
graph_spectrogram('...')
我正在使用此代码并且它是正确的,如果有人想使用:
from pathlib import Path
import matplotlib.pyplot as plot
from scipy.io import wavfile
path = Path('/home/narges/dataset/dataset-CV-16kHz-128kbps/train/').glob('**/*.wav')
wavs = [str(wavf) for wavf in path if wavf.is_file()]
wavs.sort()
number_of_files=len(wavs)
spk_ID = [wavs[i].split('/')[-1].lower() for i in range(number_of_files)]
for i in range(number_of_files):
samplingfrequency, signaldata = wavfile.read(wavs[i])
pxx, freq, bins, im = plot.specgram(x=signaldata, Fs=samplingfrequency, noverlap=384, NFFT=512)
plot.title('spec of vowel')
plot.xlabel('time')
plot.ylabel('freq')
plot.savefig("spk_ID:{}.png".format(spk_ID[i]), bbox_inches='tight', dpi=300, frameon='false')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.