本文深入探讨后处理环节。

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

分词

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

断句

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

标点符号

合理的标点符号,有助于用户恰当的理解语音识别的结果,提升语音识别产品的使用体验。

可以使用基于规则的方法或者机器学习模型的方式来为语音识别的文本中增加标点符号。

基于规则的方法

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

本方法存在的问题:

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

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

  • 需要语音识别环节输出各元素对应的时间偏移,即开始时间和结束时间,元素包括文本和静音段。
  • 配置静音段的时长,用于区分逗号、句号。

    配置信息可以作为系统级参数实现,这将要求所有的语音数据遵循相同的特征,显然不够灵活。另外,给出一组可以满足大部分应用场景的配置参数,本身是一件比较复杂的工作。

    假如配置信息作为会话级参数来实现,相关信息由调用方提供给后处理系统,此时可以提供一定的灵活性,适配不同讲话人的语速的特点。这需要调用方事先了解语音数据中讲话人的特征,否则将影响标点符号的准确性。

基于机器学习模型的方法

本方法对文本及其中的标点符号同时建模,训练专用的语言模型,外挂在后处理过程中,即语音识别环节输出的文本、断句、时间偏移等信息,作为标点符号推断过程的输入,一起用于协助标点符号模块工作。

相比于基于规则的方法,本方法似乎适应性相对要好一点,但实现的难度相应有所增加,比如:

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

大小写

对于中文而言,语言自身缺少大、小写的特点,因此不需要考虑。但对于拼音语言比如英语、法语等,相同的单词、不同的大小写形式,其含义可能有明显的不同。这对于使用中文作为母语的人群而言,理解起来还是比较有困难的。

作为语音识别产品,在处理类似英语、法语等具备大、小写特征的语种时,为提升可读性,需要针对语言自身的特点,考虑对应的解决方案。

针对本问题,同样存在基于规则的方法和基于机器学习模型的方法。

基于规则的方法

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

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

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

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

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

基于机器学习模型的方法

采用机器学习模型的方法来对语音识别的结果进行预测,输出基本的结果,同时结合标点符号的输出结果,二者整合后输出最终的结果。

对于机器学习的部分,收集数据、标注数据、设计模型时,增加各单词大小写的特征,然后使用训练得到的模型来预测文本中各单词的大、小写。

本特性在实现时的困难,比如有:

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

数字格式归一

业界通行的方法是基于规则来处理文本,即结合正则表达式和代码,来处理语音识别结果中出现的数字、物理单位等信息,将其转写为相应的书面表达形式。

处理本问题时,可以考虑基于机器学习的方法来实现,但从实践的结果看,效果很差且不稳定,不满足商用的要求。

以数字的表达为例,不同语言有各自的特点,相同语言在不同的地域也有不同的特点,并没有统一的规则。

考虑到数字在书面场景下使用时,一般以阿拉伯数字的形式书写,并且各语言的朗读习惯相对稳定,因此基于规则的方法,实现简单并且有效,从实践角度看,可以覆盖80%的常用场景。

本特性在实现时的困难,比如有:

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

ASR项目实战-后处理的更多相关文章

  1. Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  2. 给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

  3. 【腾讯Bugly干货分享】React Native项目实战总结

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/577e16a7640ad7b4682c64a7 “8小时内拼工作,8小时外拼成长 ...

  4. Asp.Net Core 项目实战之权限管理系统(0) 无中生有

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  5. Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  6. Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  7. Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  8. Asp.Net Core 项目实战之权限管理系统(5) 用户登录

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  9. Asp.Net Core 项目实战之权限管理系统(6) 功能管理

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  10. Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

随机推荐

  1. Vue源码学习(五):<templete>渲染第四步,生成虚拟dom并将其转换为真实dom

    好家伙,   前情提要: 在上一篇我们已经成功将ast语法树转换为渲染函数  现在我们继续   1.项目目录 代码已开源https://github.com/Fattiger4399/analytic ...

  2. Avalonia开发(一)环境搭建

    一.介绍 开源 GitHub:https://github.com/AvaloniaUI/Avalonia/ 多平台支持,包括Windows.mac OS.Linux.iOS.Android.Sams ...

  3. Record - Nov. 28st, 2020 - Exam. REC

    Prob. 1 Desc. & Link. 暴力为 \(\Theta(NK)\). 正解(也许): 把每一个全为正整数的子段找出来. 然后判断一下中间连接的情况即可. 但是这样决策情况太多了. ...

  4. Record -「CSP-S 2020」赛后总结

    其实这次的 CSP 暴露出来了很多问题. 比如策略上的,在 T1 花了太多的时间直接心态爆炸,后面的题只想着把暴力打满.看到 T2 只想着打暴力,根本没有沉下心来想,白白丢了一道(水)题. T3 连暴 ...

  5. python3利用smtplib发送、抄送邮件并附带附件

    python3利用smtplib发送.抄送邮件并附带附件 1. 导包 import smtplib from email.mime.text import MIMEText from email.mi ...

  6. Go 语言开发环境搭建

    Go 语言开发环境搭建 目录 Go 语言开发环境搭建 一. GO 环境安装 1.1 下载 1.2 Go 版本的选择 1.3 安装 1.3.1 Windows安装 1.3.2 Linux下安装 1.3. ...

  7. element ui的多个表格复选框,展开列显示错误

    今天在公司写页面的时候碰到一个bug,我们的那个页面上有多个表格. 用v-if来判断显示,然后再使用复选框和展开列的时候出了问题.先是复选框,第二个表格的复选框下一列不显示,我试了试,在下面的一列都会 ...

  8. Kubernetes集群管理面板的安装及使用

    Kubernetes集群管理面板的安装及使用 1.前言 若海的腾讯云Lighthouse组建跨地域Kubernetes集群,让我成功体验到了Kubernetes集群诸多优点,但是非技术出生的我,长时间 ...

  9. [ABC218F] Blocked Roads 题解

    Blocked Roads 题目大意 给定一张 \(n\) 个点,\(m\) 条边的无向图,每条边的边权均为 \(1\).对于每一个 \(i\in [1,m]\) 求出从点 \(1\) 到 \(n\) ...

  10. 如何在Excel中实现三联类模板?

    本文由葡萄城技术团队原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 在一些报表打印应用场景中,会有类似于如下图所示的排版格式: 一般情况下 ...