栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

python从音频文件中提取音频频谱

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python从音频文件中提取音频频谱

您可以使用scipy计算并可视化频谱和频谱图,对于此测试,我使用了以下音频文件:vignesh.wav

from scipy.io import wavfile # scipy library to read wav filesimport numpy as npAudioname = "vignesh.wav" # Audio Filefs, Audiodata = wavfile.read(AudioName)# Plot the audio signal in timeimport matplotlib.pyplot as pltplt.plot(Audiodata)plt.title('Audio signal in time',size=16)# spectrumfrom scipy.fftpack import fft # fourier transformn = len(Audiodata) AudioFreq = fft(Audiodata)AudioFreq = AudioFreq[0:int(np.ceil((n+1)/2.0))] #Half of the spectrumMagFreq = np.abs(AudioFreq) # MagnitudeMagFreq = MagFreq / float(n)# power spectrumMagFreq = MagFreq**2if n % 2 > 0: # ffte odd     MagFreq[1:len(MagFreq)] = MagFreq[1:len(MagFreq)] * 2else:# fft even    MagFreq[1:len(MagFreq) -1] = MagFreq[1:len(MagFreq) - 1] * 2plt.figure()freqAxis = np.arange(0,int(np.ceil((n+1)/2.0)), 1.0) * (fs / n);plt.plot(freqAxis/1000.0, 10*np.log10(MagFreq)) #Power spectrumplt.xlabel('Frequency (kHz)'); plt.ylabel('Power spectrum (dB)');#Spectrogramfrom scipy import signalN = 512 #Number of point in the fftf, t, Sxx = signal.spectrogram(Audiodata, fs,window = signal.blackman(N),nfft=N)plt.figure()plt.pcolormesh(t, f,10*np.log10(Sxx)) # dB spectrogram#plt.pcolormesh(t, f,Sxx) # Lineal spectrogramplt.ylabel('Frequency [Hz]')plt.xlabel('Time [seg]')plt.title('Spectrogram with scipy.signal',size=16);plt.show()

我测试了所有代码,它可以工作,您需要numpy,matplotlib和scipy。

干杯



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668091.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号