程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了python从音频文件中提取音频频谱大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决python从音频文件中提取音频频谱?

开发过程中遇到python从音频文件中提取音频频谱的问题如何解决?下面主要结合日常开发的经验,给出你关于python从音频文件中提取音频频谱的解决方法建议,希望对你解决python从音频文件中提取音频频谱有所启发或帮助;

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

from scipy.io import wavfile # scipy library to read wav files
import numpy as np

Audioname = "vignesh.wav" # Audio file
fs, Audiodata = wavfile.read(AudioName)

# Plot the audio signal in time
import matplotlib.pyplot as plt
plt.plot(Audiodata)
plt.title('Audio signal in time',size=16)

# spectrum
from scipy.fftpack import fft # fourIEr transform
n = len(Audiodata) 
AudioFreq = fft(Audiodata)
AudioFreq = AudioFreq[0:int(np.ceil((n+1)/2.0))] #Half of the spectrum
MagFreq = np.abs(AudioFreq) # Magnitude
MagFreq = MagFreq / float(n)
# power spectrum
MagFreq = MagFreq**2
if n % 2 > 0: # ffte odd 
    MagFreq[1:len(MagFreq)] = MagFreq[1:len(MagFreq)] * 2
else:# fft even
    MagFreq[1:len(MagFreq) -1] = MagFreq[1:len(MagFreq) - 1] * 2

plt.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 spectrum
plt.xlabel('Frequency (kHz)'); plt.ylabel('Power spectrum (dB)');


#Spectrogram
from scipy import signal
N = 512 #number of point in the fft
f, 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 spectrogram
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [seg]')
plt.title('Spectrogram with scipy.signal',size=16);

plt.show()

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

干杯

解决方法

抱歉,如果我提交了副本,但是我想知道python中是否有任何lib使您能够从音频文件中提取声谱。我希望能够获取音频文件并编写算法,该算法将返回一组数据{timestampInFile;
频率幅度}。

我听说这通常称为节拍检测,但是据我所知,节拍检测不是一种精确的方法,它仅对可视化有用,而我想对提取的数据进行处理,然后将其转换回音频文件。我不需要实时执行此操作。

我将不胜感激任何建议。

大佬总结

以上是大佬教程为你收集整理的python从音频文件中提取音频频谱全部内容,希望文章能够帮你解决python从音频文件中提取音频频谱所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。