是否有人知道免费提供关键字定位系统,并可能提供API?
CMU Sphinx 4和MS Speech API是语音识别引擎,不能用于KWS。
SRI有一个关键字定位系统,但没有下载链接,甚至没有评估。 (我甚至找不到任何链接来联系他们的软件)
我找到一个here,但这是一个演示并且有限。
答案 0 :(得分:3)
CMUSphinx在pocketsphinx引擎中实现关键字定位,详见FAQ entry.
要识别单个关键短语,您可以在“关键短语搜索”模式下运行解码器。
从命令行尝试:
pocketsphinx_continuous -infile file.wav -keyphrase “oh mighty computer” -kws_threshold 1e-20
来自代码:
ps_set_keyphrase(ps, "keyphrase_search", "oh mighty computer");
ps_set_search(ps, "keyphrase_search);
ps_start_utt();
/* process data */
您还可以在我们的资源中找到Python和Android / Java的示例。 Python代码如下所示,完整示例here:
# Process audio chunk by chunk. On keyphrase detected perform action and restart search
decoder = Decoder(config)
decoder.start_utt()
while True:
buf = stream.read(1024)
if buf:
decoder.process_raw(buf, False, False)
else:
break
if decoder.hyp() != None:
print ([(seg.word, seg.prob, seg.start_frame, seg.end_frame) for seg in decoder.seg()])
print ("Detected keyphrase, restarting search")
decoder.end_utt()
decoder.start_utt()
必须针对测试数据上的每个关键短语调整阈值,以获得错误检测和错误警报的正确平衡。您可以尝试1e-5到1e-50等值。
为获得最佳准确度,最好使用3-4个音节的关键短语。太短的短语容易混淆。
您还可以搜索多个关键短语,创建一个文件keyphrase.list,如下所示:
oh mighty computer /1e-40/
hello world /1e-30/
other_phrase /other_phrase_threshold/
使用-kws配置选项在解码器中使用它。
pocketsphinx_continuous -inmic yes -kws keyphrase_list
此功能尚未在sphinx4解码器中实现。