如何减少CMU狮身人面像中的语音识别时间



我想将语音识别附加到星号服务器。我想尝试基于 CMU 狮身人面像的离线解决方案。但它的工作非常缓慢。重新识别简单字典(是|否|正常(大约需要 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秒,或者我必须看到在线解决方案(谷歌,Yandex等(

你在尝试中有很多错误:

  • 您尝试缓慢的连续模型。最好使用ptm模型
  • 您可以使用语言模型,同时可以使用简单的语法
  • 您运行命令来识别短文件,大多数时候是阅读模型。您需要改用服务器模型预加载。Unimrcp 服务器可以在 1/100 的第二。
  • 您从字典中删除单词,而您应该保持原样,您需要限制语言模型/语法中的单词。

正确的命令是:

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

如果您想知道,谷歌云解决方案需要 2.5-3.5 秒进行 0-5 秒的录制。

我知道的唯一更快的选择是 grpc(流媒体实时(版本的谷歌云,在单词结束后需要 1 秒。

语音识别是非常CPU密集型的任务。可以通过使用更快的 CPU 或使用仅包含几个单词的语音上下文来减少识别时间。但你得到的识别速度提高了 10 倍,这真的很不受欢迎。

ASR和STT是两个不同的东西。

  • 自动语音识别允许您将用户语音选择相对于定义的语法(GRXML、JSGF、ABNF(进行匹配。
  • 语音
  • 转文本,将任何语音转换为文本(有时会出现一些错误(。

在PocketSphinx的情况下,您可以使用服务器模式并与MRCP连接(检查项目uniMRCP(。更有效的做法是,不为每个识别加载 DATA + 引擎,而是启动服务器一次,然后连接一个或多个 MRCP 客户端。

相关内容

  • 没有找到相关文章

最新更新