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 项目实战之 ...
随机推荐
- 关闭k8s的pod时减小对服务的影响
在应用程序的整个生命周期中,正在运行的 pod 会由于多种原因而终止.在某些情况下,Kubernetes 会因用户输入(例如更新或删除 Deployment 时)而终止 pod.在其他情况下,Kube ...
- HTML一键打包APK工具1.9.5更新,新增一机一码功能
HMTL网址打包APK,可以把本地HTML项目, Egret游戏,网页游戏,或者网站打包为一个安卓应用APK文件,无需编写任何代码,也无需配置安卓开发环境,支持在最新的安卓设备上安装运行. 打包软件会 ...
- SQL Server用户的设置与授权
SQL Server用户的设置与授权 SSMS 登陆方式有两种,一是直接使用Windows身份验证,二是SQL Server身份验证.使用SQL Server用户设置与授权不仅可以将不同的数据库开放给 ...
- Gitbook Android App
最有用Ionic 2 做了一个Gitbook 混合app, 上线google play的时候提醒我触犯了假冒行为,可能是logo和名字问题吧,放弃: 上线腾讯被认为是h5 app,不是native a ...
- div 让a内容居中方法
<div>标签是HTML中的一个重要标签,它代表了一个文档中的一个分割区块或一个部分.在<div>标签中,我们可以放置各种内容,包括文本.图像.链接等等.有时候,我们需要将其中 ...
- matlab关于阶梯图和图窗操作
1阶梯信号绘制 Matlab 中绘制阶梯图函数:stairs x = [30 33 37 40 37 33 30 27 23 20 23 27 30 30]'; StepNum = length(x) ...
- UVA10054 The Necklace 题解
好可恶一道题,怎么没人告诉我输出之间有空行( 思路是先抽象成图,然后跑一边dfs记录边的前后顺序. 对于不能成环的情况,只需要再开个数组记录度数判断奇点即可. 若存在奇点则break掉,剩下的跑dfs ...
- 使用 DDPO 在 TRL 中微调 Stable Diffusion 模型
引言 扩散模型 (如 DALL-E 2.Stable Diffusion) 是一类文生图模型,在生成图像 (尤其是有照片级真实感的图像) 方面取得了广泛成功.然而,这些模型生成的图像可能并不总是符合人 ...
- t分布及t分布表
http://baike.baidu.com/view/1419652.htm 下表列出了自由度为1-30以及80.100.120等t-分布的单侧和双侧区间值.例如,当样本数量n=5时,则自由度v ...
- OpenGL 坐标系统详解
GL中的坐标系是标准设备坐标,即他的每个坐标轴的取值范围都是[-1.0,1.0].通常,我们输入到顶点着色器中的顶点坐标都会被转换为标准化设备坐标,然后进行光栅化,转变成屏幕坐标.然而事实上,从顶点坐 ...