精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
手机:138-0381-0136
Q Q:396806883
微信:ryysoft
头条号:软件技术及人才和养生
锐英源精品原创,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究。锐英源软件对经典开源项目有大量翻译,翻译内容技术层次较高,对初学者有深究意义。有幸浏览到的朋友请关注头条号,可以获取最新更新。
长时间语音分段优化识别是语音识别产品化需要完成的任务,锐英源顺利完成了任务,在完成时参考了kaldi邮件列表里的一些讨论,本文是讨论内容翻译,链接在本文尾部,对kaldi开源团队致谢。
我正在处理 kaldi 用户列表,因为我想带给人们注意这个对在线沙箱的最新承诺。在这个提交中,我演示一个脚本,其中训练神经网络以用于在线解码
WSJ 语料库(其输入是原始 MFCC 和在线估计的 iVector),以及然后在 RM 配方中,我们采用该 WSJ 神经网络的隐藏层和在它上面训练一个输出层。
结果几乎与最好的多通道、自适应系统一样好,但是这是单程解码。(RM 结果约为 1.6% WER;最好的多通单系统约为 0.5)。
Karel,我确定你一直在研究类似类型的东西,或者很容易可以并且您可能希望为您的应用程序创建类似的演示脚本设置,我们允许其中一个示例设置依赖于另一个。我想尽快做的事是从更大的设置(WSJ)制作源模型,WSJ可在线下载(例如在http://www.openslr.org),因此人们可以下载一个好的神经网络,他们可以在其上训练输出层,为他们自己的数据。
在在线沙箱^/sandbox/online中,我说的脚本在egs/rm/s5/local/online/run_online_decoding_nnet2_wsj.sh
我目前正在实验性听写中使用旧的在线解码器系统。旧的在线解码器有两个我需要的功能:
中间解码假设和静音分割,即我可以解码任意长的语音并使用中间结果作为反馈给用户。
我对转向新的在线解码设置非常感兴趣。然而,
我看到只有一个语音解码器(一个为解码相对较短的话语)目前正在实施。是有计划实施“连续”解码器吗?如果没有,丹尼尔可以吗
也许给我一些关于我做这件事有多困难的提示我自己(我对 Kaldi 已经很熟悉了)。
这两个功能都受支持。虽然我公平地证明它简短的话语,框架中没有任何东西可以阻止它
用于任意长的话语。例如,在 online-gmm-decoding.h 中,您会看到函数
GetLattice
()。这可以在任何时候调用,并可用于获取最佳路径。如果你想经常这样做,还有更多获得最佳路径的有效机制,但尚未在这个级别(如果你想添加它,那就太好了)。使用的解码器
SingleUtteranceGmmDecoder 内部称为 LatticeFasterOnlineDecoder。
这有函数 BestPathEnd 和 TraceBackBestPath 可用于有效地追溯最佳路径。你会看到它们被用于
online-endpoint.cc
它们可用于向SingleUtteranceGmmDecoder 类添加函数,函数具有以下的签名:
void SingleUtteranceGmmDecoder::GetBestPath(bool end_of_utterance,
Lattice *best_path) const;
这将有效地获得最佳路径。(您可以使用
ConvertLatticeToLinear,IIRC,将其转换为对齐和字序列)。同样的事情可以在代码的 nnet2 版本中完成,
在 online-nnet-decoding.h 中。
我不确定你所说的静音分割是什么意思,但有已经是端点检测的框架;这可能与你在谈论的什么相同。
我将在 9 月 15 日之后使用新的在线解码设置。
我想实现的第一件事是 GetBestPath 方法: 这有函数 BestPathEnd 和 TraceBackBestPath 可用于
Tanel:如果你打算早点实施,请告诉我。
否则,我将在 9 月的最后两周实施它。
通过静音分割,我的意思是解码器将音频分割为静音:它在更长的时间内“完成”当前解码
当语音发生时,沉默发生并开始解码新的伪话语
重新开始。这就是旧的在线解码器有效地执行的操作。
1 小时对于解码器来说太长了。
为了很好地处理这个问题,您可能会使用当前存在的终结点代码,以及何时到达它判断为终结点的位置
(它是可配置的),您的代码会以某种方式写出当前输出并初始化一个新的解码器对象。
这将在应用程序级别处理,而不是由解码器对象本身,但这并不难。