解决方案:【飞桨PaddleSpeech语音技术课程】— 语音识别-定制化识别
优采云 发布时间: 2022-11-22 14:18解决方案:【飞桨PaddleSpeech语音技术课程】— 语音识别-定制化识别
(以下内容转自PaddleSpeech语音技术课程,点击链接直接运行源码)
自定义语音识别 1. 背景
在某些特定场景下,要求ASR系统能够准确识别关键词某些固定句型。1.打车报销场景,需要准确识别日期、时间、地点、金额。
2.自定义唤醒词和命令词,比如在车里播放音乐,那么只需要高精度识别下一曲,上一曲,音量加,音量减等命令词。
3、还有语音助手打电话的场景,需要根据用户的*敏*感*词*完成联系人的识别。
为了满足这一要求,本文提出了一种定制化的识别方案。
第二节介绍相关的基础知识。
第三部分有一个Demo来展示如何实际操作。
PaddleSpeech SpeechX 推出了更详细的操作脚本和教程,欢迎关注。
来自电影《钢铁侠》
2. WFST*敏*感*词*相关概念: 2.1 WFST简介
WFST是weighted finite-state transducer的缩写[2]。在语音识别中,基于WFST生成的解码图,结合声学模型的维特比解码是语音识别中的一种基本解码方法。
该有限状态机具有一组有限的状态和状态之间的转换,其中每个转换至少有一个标签。
如果存在从初始状态到最终状态的路径使得路径上的标签序列恰好等于输入的符号序列,则输出新的序列和权重。
如下图WFST中,输入字符串'ac',匹配路径0-1、1-2,输出'qs',权重为1.63。
OpenFST [1] 实现了 WFST [2] 的相关算法。后续的算法解释和解码图的构建和运行均基于OpenFST。相关OpenFST和WFST的介绍可以参考以下链接:
openfst官方教程
2.2 WFST Compose概念
下图中,WFST C由WFST A和B Compose组成,可以看成是A和B的级联,A的输出就是B的输出,所以C组成后,C的输入就是A的输入和B的输出是C的输出。
2.3 WFST Decoder TLG解码图
PaddleSpeech SpeechX中的WFST解码图由T、L、G组成,kaldi中使用的解码图由HCLG组成。下面以TLG为例说明解码组成。
简称 输入序列 输出序列
吨
代币
建模单元
特点
大号
词典
特点
单词
G
语法
单词
单词
其中T可以是音素也可以是字符,PaddleSpeech Speechx中的建模就是一个字符。下面以论文[3]中提出TLG的作文为例来说明作文。
T的组成
" />
L的组成
G的作文
通过TLG的Compose,结合声学建模单元、字典、语言模型,生成静态解码网络。在解码过程中采用搜索策略来获得输入语音的最优解码结果。
2.4 WFST替换概念
绘图和操作脚本见draw_address_g_slot.sh,可在终端执行。(你需要安装dot,绘制图片并保存为pdf。)
openfst替换操作官方教程
3 *敏*感*词*报销单场景介绍
本节将通过自定义位置来说明操作。在打车报销单识别场景中,需要自定义识别的是地点。对于精细化的位置识别,比如在北京可以导入北京的位置包,在上海可以导入上海的位置包来满足一些细粒度的识别。(罕见且独特的地名)。该脚本将以识别“海淀黄庄”为例。
3.1 脚本代码分析
<p>cat > $lang/g_with_slot.txt $lang/address_slot.txt