【发布时间】:2019-01-14 06:47:14
【问题描述】:
我刚开始编写一段代码来预处理一些音频数据,以便最近用它来为神经网络提供数据。在更深入地解释我的实际问题之前,请提到我从this site 获取了如何做项目的参考。还使用了来自this post 的一些代码,并在signal.spectogram doc 和this post 中阅读以了解更多信息。
现在有了前面提到的所有来源,我设法将 wav 音频文件作为一个 numpy 数组和plot both its amplitude and spectrogram 获取。 Theese 代表我用西班牙语说“命令”这个词的录音。
这里奇怪的事实是,我在互联网上搜索发现人类语音频谱在 80 到 8k Hz 之间移动,所以为了确定我将这个输出与Audacity spectrogram returned 进行了比较。如您所见,这似乎与找到的信息更加一致,因为频率范围应该是人类的频率范围。
所以这将我带到最后一个问题:我在读取音频或生成频谱图的过程中做错了什么,或者我是否有情节问题?
顺便说一下,我对 python 和信号处理都是新手,所以提前感谢您的耐心。
这是我实际使用的代码:
def 频谱图(wav): 样本速率,样本 = wavfile.read(wav) 频率,时间,频谱图 = signal.spectrogram(样本,sample_rate,nperseg=320,noverlap=16,缩放='密度') #dBS = 10 * np.log10(spectrogram) # 转换为 dB plt.subplot(2,1,1) plt.plot(样本[0:3100]) plt.subplot(2,1,2) plt.pcolormesh(时间、频率、频谱图) plt.imshow(谱图,aspect='auto',origin='lower',cmap='rainbow') plt.ylim(0,30) plt.ylabel('频率 [kHz]') plt.xlabel('Fragmento[20ms]') plt.colorbar() plt.show()【问题讨论】:
标签: python python-3.x signals spectrogram