在本环节要处理的重要特性有分词、断句、标点符号、大小写、数字等的格式归一等。

分词

和NLP、搜索等场景下的分词含义不同。对于拼音类的语言,比如英语、法语等,句子由多个单词组成,语音输出的结果,需要按需在各个单词之间补充或者去掉空格。对于中文来说,字和词之间不以空格作为边界,因此分词的意义不明显。

断句

狭义的语音识别只处理语音到文字的转换,由于语音数据中缺少一些明确的提示信息,因此语音识别的结果中欠缺断句的信息。对于用户使用语音识别的结果时,缺少断句的文本会降低阅读体验,增加理解的困难,同时限制了语音识别的使用场景。为了解决这个问题,需要在语音识别的输出结果中,增加必要的断句的信息,比如可以增加标点符号,将输出结果划分句子和段落。

标点符号

合理的标点符号,有助于用户恰当的理解语音识别的结果,提升语音识别产品的使用体验。
可以使用基于规则的方法或者机器学习模型的方式来为语音识别的文本中增加标点符号。

基于规则的方法

考虑到人在讲话时,会在有标点符号的位置,自然的增加一些停顿,因此可以利用这个特征,为语音识别的结果文本中增加标点符号,此即基于规则的方法的实现假设。
本方法存在的问题:

  • 只能实现简单的标点符号,比如逗号、句号。
  • 要求讲话人讲话速度相对稳定,不至于在一段话的过程语速忽快、忽慢,这将导致本方法失效。

基于规则的方法在实现时:

  • 需要语音识别环节输出各元素对应的时间偏移,即开始时间和结束时间,元素包括文本和静音段。
  • 配置静音段的时长,用于区分逗号、句号。
    配置信息可以作为系统级参数实现,这将要求所有的语音数据遵循相同的特征,显然不够灵活。另外,给出一组可以满足大部分应用场景的配置参数,本身是一件比较复杂的工作。
    假如配置信息作为会话级参数来实现,相关信息由调用方提供给后处理系统,此时可以提供一定的灵活性,适配不同讲话人的语速的特点。这需要调用方事先了解语音数据中讲话人的特征,否则将影响标点符号的准确性。

基于机器学习模型的方法

本方法对文本及其中的标点符号同时建模,训练专用的语言模型,外挂在后处理过程中,即语音识别环节输出的文本、断句、时间偏移等信息,作为标点符号推断过程的输入,一起用于协助标点符号模块工作。
相比于基于规则的方法,本方法似乎适应性相对要好一点,但实现的难度相应有所增加,比如:

  • 机器学习模型建模、训练、训练数据收集和标注等传统的难点。
  • 语音识别的结果文本,其准确性假如不足,字错率过高,相应的会造成标点符号模型在工作时无法得到准确的输入,进而影响到输出质量。
  • 断句,讲话人的特征,口语化表达方式,比如重复字、重复词、词之间不稳定的静音块等,会导致断句的判断出现错误,从而影响标点符号模型的准确性。
  • 时间偏移,本特性和标点符号模块的整合。时间偏移信息作为标点符号模块的输入和输出,标点符号模块将在输入的时间偏移信息中增加标点符号的信息,整合过程中需要考虑有效利用已有时间偏移信息,同时在输出结果中,注意不能错误的修改文本的时间偏移,造成明显的错误。

大小写

对于中文而言,语言自身缺少大、小写的特点,因此不需要考虑。但对于拼音语言比如英语、法语等,相同的单词、不同的大小写形式,其含义可能有明显的不同。这对于使用中文作为母语的人群而言,理解起来还是比较有困难的。
作为语音识别产品,在处理类似英语、法语等具备大、小写特征的语种时,为提升可读性,需要针对语言自身的特点,考虑对应的解决方案。
针对本问题,同样存在基于规则的方法和基于机器学习模型的方法。

基于规则的方法

对于英语、法语等语言,有一些简单的规则可以遵循。比如:

  • 出现在句首的单词,首字母要求为大写,句中的单词,一般为小写。
  • 习惯表达法中,个别单词使用大写,比如英语中的I,在句中任意位置,均需要使用大写。
  • 人名、地名,要求各组成部分的首字母大写。
  • 缩写词,比如NBAUSALGTMASAPKIA等,需要全字母大写。
  • 特定的表达习惯,比如Presidentpresident
  • 等等。

但人类的语言并不是一成不变的,相应的规则很难穷举,并且特例太多,在一个句子中具体应用哪个、哪些规则,其实很难判断。比如:

  • 处理人名、地名,几乎没有规则,并且数量很大。
  • 缩写词,和领域、使用群体强相关,并且数量巨大。
  • 表达习惯,比如Presidentpresident,这两个单词拼写一致,发音一致,但出现在句子中,含义不同。

因此,考虑到上述特征,基于规则的方法,使用的场景相对受限。

基于机器学习模型的方法

采用机器学习模型的方法来对语音识别的结果进行预测,输出基本的结果,同时结合标点符号的输出结果,二者整合后输出最终的结果。
对于机器学习的部分,收集数据、标注数据、设计模型时,增加各单词大小写的特征,然后使用训练得到的模型来预测文本中各单词的大、小写。
本特性在实现时的困难,比如有:

  • 机器学习模型建模、训练、训练数据收集和标注等传统的难点。
  • 时间偏移、标点符号的识别结果,作为大、小写识别的输入,二者之间如何整合,确保单词在句子的边界以及句子中间可以得到正确的结果。

数字格式归一

业界通行的方法是基于规则来处理文本,即结合正则表达式和代码,来处理语音识别结果中出现的数字、物理单位等信息,将其转写为相应的书面表达形式。
处理本问题时,可以考虑基于机器学习的方法来实现,但从实践的结果看,效果很差且不稳定,不满足商用的要求。
以数字的表达为例,不同语言有各自的特点,相同语言在不同的地域也有不同的特点,并没有统一的规则。
考虑到数字在书面场景下使用时,一般以阿拉伯数字的形式书写,并且各语言的朗读习惯相对稳定,因此基于规则的方法,实现简单并且有效,从实践角度看,可以覆盖80%的常用场景。
本特性在实现时的困难,比如有:

  • 不同语种的人群,数字的读法不同,因此需要针对不同的语言定制处理模块。
  • 给定一种语言,其数字的读法,和地域、人群强相关,因此需要相关的规则,并提供针对性的实现。
  • 使用语音识别环节输出的识别文本作为输入,因此语音识别环节输出结果的准确性会影响数字格式归一的准确性。假如语音识别环节的结果存在错误,则可能需要做一些适配和兼容,改善最终结果的准确性。

ASR项目实战-后处理相关推荐

  1. ASR项目实战-产品分析

    ASR项目实战-产品分析 分析Google.讯飞.百度.阿里.QQ.搜狗等大厂的ASR服务,可以罗列出一款ASR服务所需要具备的能力. 产品分类 ASR云服务产品,从用户体验.时效性.音频时长,可以划 ...

  2. ASR项目实战-架构设计

    ASR项目实战-架构设计 一般而言,业务诉求作为架构设计的输入. 需求清单 对于语音识别产品而言,需满足的需求,举例如下: 功能需求 文件转写. 长文件转写,时长大于60秒,小于X小时,X可以指定为5 ...

  3. ASR项目实战-决策点

    ASR项目实战-决策点 针对语音识别的产品,分别记录设计.开发过程中的决策点. 实时语音识别 对于实时语音识别来说,客户端和服务端之间实时交换语音数据和识别的结果. 客户端在启动识别时,即开始发送语音 ...

  4. ASR项目实战-从源码开始构建Kaldi

    ASR项目实战-从源码开始构建Kaldi 准备工作 安装构建时依赖的基础软件 软件清单如下: bzip2 python3 automake libtool cmake gcc g++ gfortran ...

  5. ASR项目实战-交付团队的分工

    ASR项目实战-交付团队的分工 对于通常的软件项目,参与角色,比如可以有用户,消费者,产品团队,研发团队(研发团队包括开发和测试),运营团队,运维团队,管理团队. 通常认为,用户,负责购买服务的群体, ...

  6. ASR项目实战-语音识别

    本文深入探讨语音识别处理环节. 本阶段的重点特性为语音识别.VAD.热词.文本的时间偏移.讲话人的识别等. 语音识别 业界流派众多,比如Kaldi.端到端等,具体选择哪一种,需要综合考虑人员能力.训练 ...

  7. 实战教程 | 车道线检测项目实战,霍夫变换 新方法 Spatial CNN

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 此文按照这样的逻辑进行撰写.分享机器学习.计算机视觉的基础知识,接着我们以一个实际的项目,带领大家自己 ...

  8. Hugging Face 中文预训练模型使用介绍及情感分析项目实战

    Hugging Face 中文预训练模型使用介绍及情感分析项目实战 Hugging Face 一直致力于自然语言处理NLP技术的平民化(democratize),希望每个人都能用上最先进(SOTA, ...

  9. 【单目3D目标检测】项目实战-道路车辆/行人3D目标检测

    [单目3D目标检测]项目实战-道路车辆/行人3D目标检测 任务定义 传统激光雷达3D检测模型 VS 单目3D检测模型 单目3D目标检测优点 单目3D目标检测难点 数据集 KITTI数据集标注及网络输出 ...

最新文章

  1. html缓存特效代码,HTML特效代码
  2. 《深入理解Android:卷III A》一一2.4本章小结
  3. TCP/IP / PDU 是什么
  4. 基于阿里云实现游戏数据运营(附Demo)
  5. php implode key,PHP Implode关联数组
  6. python开源库生成式对抗网络_神经网络结构:生成式对抗网络(GAN)
  7. Eclipse热部署JSP
  8. 打印从1到k之间的所有素数
  9. 华为鸿蒙系统多而能使用吗,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  10. 阿里云高级专家王林平:云数据库的运维体系构建
  11. scala和java集合的区别_Scala中Array和List的区别
  12. Java后端开发需要的技术
  13. 【教程】鼠标右键新建添加RTF文档
  14. 大数据的七大核心具体价值
  15. Google微软IBM能打败亚马逊AWS的理由很丰满,进展却骨感
  16. zarchiver解压提示出错_zarchiver解压操作出错怎么办 zarchiver解压操作出错解决办法...
  17. 虚拟机licserver服务器,Grid license服务器搭建
  18. 电子科技大学计算机复试综面,2018年电子科技大学考研复试分数线已公布
  19. 敏捷开发框架的开发运用之ERP系统开发
  20. 2012年互联网创业者生存与发展报告

热门文章

  1. JS/CSS 各种操作信息提示效果
  2. c语言让随机数相加,【分享代码】弥补c语言随机数不足
  3. 查找和平精英的数据包在android哪,和平精英倍镜切换方法怎么设置 和平精英倍镜切换方法设置一览...
  4. 微信小程序——翻牌抽奖功能
  5. 利用grep进行文本处理
  6. java 分词器耗时 性能_java 支持分词的高性能拼音转换工具,速度是 pinyin4j 的两倍...
  7. 93.Android申请权限
  8. 电脑开机没反应怎么办,如何解决?
  9. activitythread.java,调用微信登陆授权时,出现Uninitialized ActivityThread问题?
  10. C++中字符数组赋值问题