У меня 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()
И я использую этот код для сохранения идентификатора динамика:
NUMBER_OF_FILES = Len (WAVs)
spk_ID = [wavs [i] .split ('/') [- 1] .lower () для i в диапазоне (число_файлов)]
Теперь, как я могу изменить следующий код, чтобы прочитать все мои файлы .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('...')