gpt4 book ai didi

python - 峰值频率python的时间戳

转载 作者:行者123 更新时间:2023-12-03 02:35:41 24 4
gpt4 key购买 nike

我已使用此代码how to extract frequency associated with fft values in python并添加了一个firwin滤波器来检测短的高频信号。该信号为1秒长,随机出现在x秒的wav音频文件中。我的代码如下所示:

from scipy import signal
from scipy.io import wavfile
from scipy.fftpack import fft, ifft,fftfreq
import matplotlib.pyplot as plt
import wave
import numpy as np
import sys
import struct

frate,data = wavfile.read('SoundPeep.wav')
#print(frate)
b = signal.firwin(101, cutoff=900, fs= frate, pass_zero=False)
data = signal.lfilter(b, [1.0], data)

w = np.fft.fft(data)
freqs = np.fft.fftfreq(len(w))
#print(len(w)/frate)
#print(w.min(), w.max())
# (-0.5, 0.499975)

# Find the peak in the coefficients
idx = np.argmax(np.abs(w))
winner = np.argwhere(np.abs(w) == np.amax(np.abs(w)))

freq = freqs[idx]
freq_in_hertz = abs(freq * frate)
print("HZ")
print(freq_in_hertz)
occurence = idx/frate
print(occurence)

该代码在检测峰值HZ频率时效果很好。我的问题是我想计算高频信号在音频文件中的开始位置。我认为可以简单地通过将index(idx)除以记录的帧速率来完成,但这似乎行不通。

最佳答案

您可以使用短时傅立叶变换来制作超声图,以查看频率如何随时间变化。 stft返回3个值:时间戳记,幅度和频率。如果幅度不相关,则可以从那里使用峰值检测。

关于python - 峰值频率python的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52742758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com