【发布时间】:2018-09-03 21:45:28
【问题描述】:
我正在尝试编写一个 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)
也就是说,我尝试将录制的音频转换为字符串列表,并根据 10 个单词的“直观”阈值分隔这些列表,因为有时 pocketsphinx 将背景噪声识别为几个感叹词的稀疏序列。然而,由于不必要的语音识别过程,这花费了非常长的时间——对于每条记录,我只需要检查它是否包含超过 10 个单词,仅此而已。据我从 SpeechRecognition 的文档中了解到,Recognizer 类不包含任何会限制要识别的单词数量的属性或方法。
有人可以为这个问题提出一个更好的主意吗?
提前致谢。
【问题讨论】:
标签: python anaconda speech-recognition pocketsphinx