gpt4 book ai didi

python - 精确定位收到声音时的样本编号或点

转载 作者:行者123 更新时间:2023-12-01 08:07:08 26 4
gpt4 key购买 nike

我有一个 wav 文件,其中包含录制的鸣叫声。

频率采样44100 channel 数 1完整 sample N 90405秒 2.05鸣叫声只有50ms。

鸣叫声的图像:[/image/kaDJv.jpg

到目前为止,我的代码用于读取 wav 文件并进行一些基本处理。

fs_rate, signal = wavfile.read("chirp.wav")
print ("Frequency sampling", fs_rate)
l_audio = len(signal.shape)
print ("Channels", l_audio)
if l_audio == 2:
signal = signal.sum(axis=1) / 2
N = signal.shape[0]
print ("Complete Samplings N", N)
secs = N / float(fs_rate)
print ("secs", secs)
Ts = 1.0/fs_rate # sampling interval in time
print ("Timestep between samples Ts", Ts)
t = scipy.arange(0, secs, Ts) # time vector as scipy arange field / numpy.ndarray
FFT = abs(scipy.fft(signal))
FFT_side = FFT[range(N//2)] # one side FFT range
freqs = scipy.fftpack.fftfreq(signal.size, t[1]-t[0])
fft_freqs = np.array(freqs)
freqs_side = freqs[range(N//2)] # one side frequency range
fft_freqs_side = np.array(freqs_side)
plt.subplot(311)
p1 = plt.plot(t, signal, "g") # plotting the signal
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.savefig('chirp.jpg')

问题:使用 python 如何判断 chirp 的第一个采样点位于音频文件中的位置。收到线性调频脉冲时的第一点。

信号包含背景噪声。我期待的结果应该说这是您的线性调频信号开始的地方,频率为 2kHz。

PS:这不是作业问题。我正在学习DSP。有点自学。

最佳答案

如果您知道 chirp 序列,您可以将其关联起来以在流中开始 chirp。

import scipy.signal as sig
h = sp.array(chirp_sequence)
rxy = sig.correlate(signal, h)
start_idx = arg.max(abs(rxy))

关于python - 精确定位收到声音时的样本编号或点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55485205/

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