我希望将语音识别附加到星号服务器上。我想尝试基于CMU Sphinx的离线解决方案。但它工作得很慢。重新识别简单的字典(是|否|正常)大约需要20秒。我用这个命令:
pocketsphinx_continuous \
-samprate 8000 \
-dict my.dic \
-lm ru.lm \
-hmm zero_ru.cd_cont_4000 \
-maxhmmpf 3000\
-maxwpf 5\
-topn 2\
-ds 2\
-logfn log.log \
-remove_noise no \
-infile 1.wav
是否可以将时间减少到1-2秒,或者我必须看到在线解决方案(Google,Yandex等)
答案 0 :(得分:2)
你的尝试有很多错误:
正确的命令是:
pocketsphinx_continuous \
-samprate 8000 \
-dict ru.dic \
-lm my.jsgf \
-hmm zero_ru.cd_ptm_4000 \
-infile 1.wav
JSGF应如下所示:
#JSGF V1.0;
grammar result;
public <result> = да | нет | нормально;
运行命令的整个时间是
real 0m0.822s
user 0m0.789s
sys 0m0.028s
实际识别需要0.02秒
INFO: fsg_search.c(265): TOTAL fsg 0.02 CPU 0.006 xRT
答案 1 :(得分:1)
如果您想知道,谷歌云解决方案需要2.5-3.5秒才能进行0-5秒录制。
我知道的更快的选择是grpc(流式实时)版本中的谷歌云,这需要在单词结束后花费1秒。
语音识别是非常密集的任务。您可以通过使用更快的CPU或仅使用少量单词的语音上下文来减少识别时间。但实际上,你的识别速度要快10倍。
答案 2 :(得分:0)
ASR和STT是两回事。
对于PocketSphinx,您可以使用服务器模式并连接MRCP(检查项目uniMRCP)。 为每次识别加载DATAs +引擎效率更高,但启动服务器一次并与一个或多个MRCP客户端连接。