Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 精确定位接收到声音时的样本编号或点_Python_Python 3.x_Audio_Processing_Signal Processing - Fatal编程技术网

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

Python 精确定位接收到声音时的样本编号或点,python,python-3.x,audio,processing,signal-processing,Python,Python 3.x,Audio,Processing,Signal Processing,我有一个wav文件,其中包含录制的啁啾声 频率采样44100 频道数量1 完整样本编号90405 第2.05节 啁啾声只有50毫秒 啁啾的图像: [ 到目前为止,我阅读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

我有一个wav文件,其中包含录制的啁啾声

频率采样44100 频道数量1 完整样本编号90405 第2.05节 啁啾声只有50毫秒

啁啾的图像: [

到目前为止,我阅读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,我如何判断啁啾的第一个采样点在音频文件中的位置。 接收到啁啾时的第一个点

信号含有背景噪声。我期望的结果 应该说这是你的啁啾信号开始的地方,它的频率是2kHz


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

如果你知道啁啾序列,你可以将其关联起来,以获得流中啁啾的开始

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

听起来像是个家庭作业问题。提供你的代码,然后我们会帮助你。我找到了答案:[我不知道技术术语,否则我会更快找到它。