我有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:
文件数= 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('...')
答案 0 :(得分:0)
我正在使用此代码,如果有人要使用,它是正确的:
let result = data.reduce((r, c) => {
if (!r[c.company_code]) {
r[c.company_code] = [];
}
r[c.company_code].push(c.emp_code);
return r;
}, {});