如何在特定情况下分割信号?

时间:2018-11-05 06:25:21

标签: python

我有一个音频文件,一个人说出数字0到9,每个数字之间都有一点停顿。我应该通过使用静音检测从连续音频记录中分割各个数字的发音。因此,为了识别静音,我正在分析录音的短时能量(STE):

STEs = []                                      # list of short-time energies
for k in range(nFrames):
    startIdx = k * sampsPerFrame
    stopIdx = startIdx + sampsPerFrame
    window = np.zeros(signal.shape)
    window[startIdx:stopIdx] = 1               # rectangular window
    STE = sum((signal ** 2) * (window ** 2))
    STEs.append(STE)

plt.figure()
plt.plot(STEs)
plt.title('Short-Time Energy')
plt.ylabel('ENERGY')
plt.xlabel('FRAME')
plt.autoscale(tight='both');

STE of the audio recording

我需要在STE显示幅度接近于0的情况下对原始信号进行分段,即寂静的地方。这样,我希望分别获得每个数字的录音。

我不知道如何在STE显示振幅接近0的点处分割音频信号。例如,在上面附加的图像链接中,我希望在显示0振幅的连续峰值之间分割音频。有20个峰值,因此结果应该是在STE的每个谷点处分割20个音频文件。

我无法用Python编写此代码。任何帮助将不胜感激。谢谢。

0 个答案:

没有答案