Python: 将语音与空录音分开
Python: setting apart speech from empty audio records
我正在尝试编写一个 Python-3.6 脚本,它将空的 .aif 音频记录(即仅包含环境噪音)与包含语音的记录区分开来。我的目标是不是识别语音内容——首先,它不是英语,其次,我的目的不需要它。
尽管如此,我没有发明比将 SpeechRecognition 与 pocketsphinx 结合使用来解决此问题更好的方法。我的想法很原始:
import speech_recognition as sr
r = sr.Recognizer()
emptyRecords = []
for fname in os.listdir(TESTDIR):
with sr.AudioFile(TESTDIR + fname) as source:
recorded = r.record(source)
recognized = r.recognize_sphinx(recorded)
if len(recognized) <= 10:
print("{} seems to be an empty record.".format(fname))
emptyRecords.append(fname)
也就是说,我尝试将录制的音频转换为字符串列表,并根据 'intuitive' 10 个单词的阈值将这些列表分开,因为有时 pocketsphinx 将背景噪音识别为几个感叹词的稀疏序列。然而,由于不必要的语音识别过程,这花费了非常长的时间——对于每条记录,我只需要检查它是否包含超过 10 个单词,仅此而已。据我从 SpeechRecognition 的文档中了解到,Recognizer class 不包含任何会限制要识别的单词数量的属性或方法。
有人可以针对这个问题提出更好的想法吗?
提前致谢。
试试 webrtcvad 库。设置激进模式并使用您记录的数据进行测试。
您可以使用 STFT(短时傅里叶变换)
获取信号中的总能量并将其与位于人声范围(300 Hz 至 3000 Hz)中的能量进行比较。 (https://en.wikipedia.org/wiki/Short-time_Fourier_transform)
这里有一个使用numpy的简单stft,fft大小为1024,你可以用https://github.com/JPabloVasquez/SimpleAudioTools
我正在尝试编写一个 Python-3.6 脚本,它将空的 .aif 音频记录(即仅包含环境噪音)与包含语音的记录区分开来。我的目标是不是识别语音内容——首先,它不是英语,其次,我的目的不需要它。
尽管如此,我没有发明比将 SpeechRecognition 与 pocketsphinx 结合使用来解决此问题更好的方法。我的想法很原始:
import speech_recognition as sr
r = sr.Recognizer()
emptyRecords = []
for fname in os.listdir(TESTDIR):
with sr.AudioFile(TESTDIR + fname) as source:
recorded = r.record(source)
recognized = r.recognize_sphinx(recorded)
if len(recognized) <= 10:
print("{} seems to be an empty record.".format(fname))
emptyRecords.append(fname)
也就是说,我尝试将录制的音频转换为字符串列表,并根据 'intuitive' 10 个单词的阈值将这些列表分开,因为有时 pocketsphinx 将背景噪音识别为几个感叹词的稀疏序列。然而,由于不必要的语音识别过程,这花费了非常长的时间——对于每条记录,我只需要检查它是否包含超过 10 个单词,仅此而已。据我从 SpeechRecognition 的文档中了解到,Recognizer class 不包含任何会限制要识别的单词数量的属性或方法。
有人可以针对这个问题提出更好的想法吗?
提前致谢。
试试 webrtcvad 库。设置激进模式并使用您记录的数据进行测试。
您可以使用 STFT(短时傅里叶变换)
获取信号中的总能量并将其与位于人声范围(300 Hz 至 3000 Hz)中的能量进行比较。 (https://en.wikipedia.org/wiki/Short-time_Fourier_transform)
这里有一个使用numpy的简单stft,fft大小为1024,你可以用https://github.com/JPabloVasquez/SimpleAudioTools