ASR项目实战-后处理
本文深入探讨后处理环节。
在本环节要处理的重要特性有分词、断句、标点符号、大小写、数字等的格式归一等。
分词
和NLP、搜索等场景下的分词含义不同。对于拼音类的语言,比如英语、法语等,句子由多个单词组成,语音输出的结果,需要按需在各个单词之间补充或者去掉空格。对于中文来说,字和词之间不以空格作为边界,因此分词的意义不明显。
断句
狭义的语音识别只处理语音到文字的转换,由于语音数据中缺少一些明确的提示信息,因此语音识别的结果中欠缺断句的信息。对于用户使用语音识别的结果时,缺少断句的文本会降低阅读体验,增加理解的困难,同时限制了语音识别的使用场景。为了解决这个问题,需要在语音识别的输出结果中,增加必要的断句的信息,比如可以增加标点符号,将输出结果划分句子和段落。
标点符号
合理的标点符号,有助于用户恰当的理解语音识别的结果,提升语音识别产品的使用体验。
可以使用基于规则的方法或者机器学习模型的方式来为语音识别的文本中增加标点符号。
基于规则的方法
考虑到人在讲话时,会在有标点符号的位置,自然的增加一些停顿,因此可以利用这个特征,为语音识别的结果文本中增加标点符号,此即基于规则的方法的实现假设。
本方法存在的问题:
- 只能实现简单的标点符号,比如逗号、句号。
- 要求讲话人讲话速度相对稳定,不至于在一段话的过程语速忽快、忽慢,这将导致本方法失效。
基于规则的方法在实现时:
- 需要语音识别环节输出各元素对应的时间偏移,即开始时间和结束时间,元素包括文本和静音段。
- 配置静音段的时长,用于区分逗号、句号。
配置信息可以作为系统级参数实现,这将要求所有的语音数据遵循相同的特征,显然不够灵活。另外,给出一组可以满足大部分应用场景的配置参数,本身是一件比较复杂的工作。
假如配置信息作为会话级参数来实现,相关信息由调用方提供给后处理系统,此时可以提供一定的灵活性,适配不同讲话人的语速的特点。这需要调用方事先了解语音数据中讲话人的特征,否则将影响标点符号的准确性。
基于机器学习模型的方法
本方法对文本及其中的标点符号同时建模,训练专用的语言模型,外挂在后处理过程中,即语音识别环节输出的文本、断句、时间偏移等信息,作为标点符号推断过程的输入,一起用于协助标点符号模块工作。
相比于基于规则的方法,本方法似乎适应性相对要好一点,但实现的难度相应有所增加,比如:
- 机器学习模型建模、训练、训练数据收集和标注等传统的难点。
- 语音识别的结果文本,其准确性假如不足,字错率过高,相应的会造成标点符号模型在工作时无法得到准确的输入,进而影响到输出质量。
- 断句,讲话人的特征,口语化表达方式,比如重复字、重复词、词之间不稳定的静音块等,会导致断句的判断出现错误,从而影响标点符号模型的准确性。
- 时间偏移,本特性和标点符号模块的整合。时间偏移信息作为标点符号模块的输入和输出,标点符号模块将在输入的时间偏移信息中增加标点符号的信息,整合过程中需要考虑有效利用已有时间偏移信息,同时在输出结果中,注意不能错误的修改文本的时间偏移,造成明显的错误。
大小写
对于中文而言,语言自身缺少大、小写的特点,因此不需要考虑。但对于拼音语言比如英语、法语等,相同的单词、不同的大小写形式,其含义可能有明显的不同。这对于使用中文作为母语的人群而言,理解起来还是比较有困难的。
作为语音识别产品,在处理类似英语、法语等具备大、小写特征的语种时,为提升可读性,需要针对语言自身的特点,考虑对应的解决方案。
针对本问题,同样存在基于规则的方法和基于机器学习模型的方法。
基于规则的方法
对于英语、法语等语言,有一些简单的规则可以遵循。比如:
- 出现在句首的单词,首字母要求为大写,句中的单词,一般为小写。
- 习惯表达法中,个别单词使用大写,比如英语中的
I,在句中任意位置,均需要使用大写。 - 人名、地名,要求各组成部分的首字母大写。
- 缩写词,比如
NBA、USA、LGTM、ASAP、KIA等,需要全字母大写。 - 特定的表达习惯,比如
President和president。 - 等等。
但人类的语言并不是一成不变的,相应的规则很难穷举,并且特例太多,在一个句子中具体应用哪个、哪些规则,其实很难判断。比如:
- 处理人名、地名,几乎没有规则,并且数量很大。
- 缩写词,和领域、使用群体强相关,并且数量巨大。
- 表达习惯,比如
President和president,这两个单词拼写一致,发音一致,但出现在句子中,含义不同。
因此,考虑到上述特征,基于规则的方法,使用的场景相对受限。
基于机器学习模型的方法
采用机器学习模型的方法来对语音识别的结果进行预测,输出基本的结果,同时结合标点符号的输出结果,二者整合后输出最终的结果。
对于机器学习的部分,收集数据、标注数据、设计模型时,增加各单词大小写的特征,然后使用训练得到的模型来预测文本中各单词的大、小写。
本特性在实现时的困难,比如有:
- 机器学习模型建模、训练、训练数据收集和标注等传统的难点。
- 时间偏移、标点符号的识别结果,作为大、小写识别的输入,二者之间如何整合,确保单词在句子的边界以及句子中间可以得到正确的结果。
数字格式归一
业界通行的方法是基于规则来处理文本,即结合正则表达式和代码,来处理语音识别结果中出现的数字、物理单位等信息,将其转写为相应的书面表达形式。
处理本问题时,可以考虑基于机器学习的方法来实现,但从实践的结果看,效果很差且不稳定,不满足商用的要求。
以数字的表达为例,不同语言有各自的特点,相同语言在不同的地域也有不同的特点,并没有统一的规则。
考虑到数字在书面场景下使用时,一般以阿拉伯数字的形式书写,并且各语言的朗读习惯相对稳定,因此基于规则的方法,实现简单并且有效,从实践角度看,可以覆盖80%的常用场景。
本特性在实现时的困难,比如有:
- 不同语种的人群,数字的读法不同,因此需要针对不同的语言定制处理模块。
- 给定一种语言,其数字的读法,和地域、人群强相关,因此需要相关的规则,并提供针对性的实现。
- 使用语音识别环节输出的识别文本作为输入,因此语音识别环节输出结果的准确性会影响数字格式归一的准确性。假如语音识别环节的结果存在错误,则可能需要做一些适配和兼容,改善最终结果的准确性。
ASR项目实战-后处理的更多相关文章
- Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- 给缺少Python项目实战经验的人
我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...
- 【腾讯Bugly干货分享】React Native项目实战总结
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/577e16a7640ad7b4682c64a7 “8小时内拼工作,8小时外拼成长 ...
- Asp.Net Core 项目实战之权限管理系统(0) 无中生有
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(5) 用户登录
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(6) 功能管理
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
随机推荐
- HIS系统部署的关键步骤与注意事项
HIS系统部署的关键步骤与注意事项 引言:近年来,随着信息技术的快速发展,医疗行业也逐渐意识到数字化转型的重要性与必要性.医院信息系统(HIS)作为医疗信息化的核心,旨在提高医疗服务的质量与效率.在引 ...
- 创建第一个C语言文件
创建第一个C语言文件 新建=>项目=>空项目 创建.c文件 我们学的是C语言,c++就不写了 调整字体 快捷键:Ctlr + 鼠标滚轮 通过工具调整 工具库与main()函数 打开一个工具 ...
- Solution -「GXOI / GZOI 2019」AND OR Sum
Description Link. 给定一个 \(N \times N\) 的矩阵,她希望求出: 该矩阵的所有子矩阵的 \(\texttt{AND}\) 值之和(所有子矩阵 \(\texttt{AND ...
- MPI转以太网Plus模块Modbus连接两台变频器通信案例
MPI转以太网Plus模块Modbus主站连接两台变频器通信案例 MPI转以太网Plus模块连接200PLC无需编程实现Modbus主从站功能与2台变频器modbus通信:以下就是MPI转以太网模块作 ...
- pandas -- DataFrame的级联以及合并操作
博客地址:https://www.cnblogs.com/zylyehuo/ 开发环境 anaconda 集成环境:集成好了数据分析和机器学习中所需要的全部环境 安装目录不可以有中文和特殊符号 jup ...
- 10.0 探索API调试事件原理
本章笔者将通过Windows平台下自带的调试API接口实现对特定进程的动态转存功能,首先简单介绍一下关于调试事件的相关信息,调试事件的建立需要依赖于DEBUG_EVENT这个特有的数据结构,该结构用于 ...
- webgl centroid质心插值的一点理解
质心插值说的是什么 2023.10.04再次review这个细节点: https://www.opengl.org/pipeline/article/vol003_6/ https://github. ...
- C#软件架构设计原则
软件架构设计原则 学习设计原则是学习设计模式的基础.在实际的开发过程中,并不是一定要求所有的代码都遵循设计原则,而是要综合考虑人力.成本.时间.质量,不刻意追求完美,要在适当的场景遵循设计原则.这体现 ...
- kubernetes 概述
云原生的发展 云原生是一条最佳路径或者最佳实践.更详细的说,云原生为用户指定了一条低心智负担的.敏捷的.能够以可扩展.可复制的方式最大化地利用云的能力.发挥云的价值的最佳路径.因此,云原生其实是一套指 ...
- 内存与CPU:计算机默契交互的关键解析
内存 内存和CPU之间的交互是计算机体系结构中至关重要的一部分.它们之间的互动类似于一对不可分割的爱侣,彼此相互依赖且密不可分.没有内存,CPU无法执行程序指令,这样计算机就会变得毫无意义.同样地,如 ...