本文深入探讨语音识别处理环节。

本阶段的重点特性为语音识别、VAD、热词、文本的时间偏移、讲话人的识别等。

语音识别

业界流派众多,比如Kaldi、端到端等,具体选择哪一种,需要综合考虑人员能力、训练数据量和质量、硬件设施、交付周期等,作出相对合理的交付规划。
基于Kaldi的方案,优点在于其发挥稳定,缺点是使用难度比较高,学习曲线比较陡峭,具备使用经验的算法工程师相对比较稀缺。
端到端方案,业界主要基于Google在17年左右发布的文章作为研究、试验的输入,使用Tensorflow或者Pytorch作为训练、工程化的平台,算法工程师的可获得性比较好,但想要获取比较好的效果,仍需要付出相当的努力。

VAD

通常情况下,可以假定人在讲话时,已经结束的句子对于后续语音数据的识别,影响相对比较小。

依据前述假定,可以通过使用VAD有效划分语音识别会话,避免在识别过程中缓存过多的数据,改善语音识别的效率,降低实现的难度,降低对硬件资源的占用情况。
另外可以基于VAD实现断句,即依据前述假定:

  • 对于10秒以内的语音数据,语音识别过程中的断句可以忽略不考虑,此时可以完全不实现断句。
  • 对于超出10秒的语音数据,需要考虑实现断句。

热词

顾名思义,热词的作用在于提示语音识别系统,帮助语音识别系统输出相对靠谱的识别结果。
比如台州和泰州,在标准普通话中,二者发音接近,仅音调存在差异,考虑到口音和发音习惯的影响,假如听众不结合对话的上下文,可能无法正确有效的识别出具体的结果。
对于语音识别系统而言,假如事先给定台州作为热词,则在遇到类似发音时,在输出结果中使用台州,则可以有效改善识别结果的准确性。
实现热词时,可以有不同的选择。

从产品的角度,可以热词作为系统级和会话级。

  • 系统级热词,语音识别系统在启动时加载相关数据。
  • 会话级热词,用户在调用接口时,传入本次会话中可能使用到的热词。

从加载数据的时机,语音识别系统可以考虑提供静态或者动态的支持。

  • 静态,即将热词作为语言模型的一部分,在语音识别过程中固定增加一个环节,用于使用相关数据来校正语音识别的结果。
  • 动态,与静态类似,同样需要在语音识别过程中增加固定环节,用于使用这部分数据来校正语音识别的结果。

对前述方案进行组合,对比各实现:

  • 系统级热词和静态加载
    优点是实现比较简单,缺点是更新热词的模型时,需要重启语音识别系统,在重启过程中将无法对外部提供服务。

  • 系统级热词和动态加载
    实现复杂度有所上升。在更新热词的模型时,考虑到为了保障业务不中断,可能需要保留两个模型的数据,并且隔离相关请求的处理,这增加了实现的复杂度,同时增加了对硬件资源的消耗。

  • 会话级热词和静态加载
    假如用户请求中包含热词,则使用热词对应的模型来改善识别结果;假如用户提供的热词超出了系统已加载模型可支持的范围,则无法支持。

  • 会话级热词和动态加载
    优点是功能最灵活。缺点是实现复杂度最高,增加了对硬件资源的占用,并且增加了处理时延。

不过目前没有看到比较优雅、高效的实现,比较遗憾。

文本的时间偏移

本特性作为语音识别环节的副产品输出,但重要性非常高,可以有效支撑标点符号、大小写等特性的实现,满足字幕相关业务的交付。

基于Kaldi实现的语音识别引擎,声学模型+发音词典+语言模型,实现思路如下:
将语音数据送入识别引擎,引擎除输出识别得到的文本,同时可以得到音素的列表,以及各音素在音频数据中出现的时间偏移量,此时结合文字或者单词和音素之间的映射关系,即可推算出文字或者单词出现在语音数据中的时间偏移量。
本方案比较简单,实现的难度不大,同时对性能、硬件资源的消耗比较小。
不过对于发音词典有要求,一要数据全面,二要标记准确。
不过考虑到人在讲话时,某些字或者单词的发音中可能出现无意义的重复音,这可能导致从音素序列还原为文字或者单词时出现匹配失败的现象,进而导致文本时间偏移的输出的结果不准确,或者完全失败。

讲话人的识别

一般情况下,一段语音数据中存在多人讲话的场景还是比较多的,比如会话录音、公开课、电话录音等。
在语音识别领域,本特性是一个比较复杂的话题。实际应用时,本特性并不是一个必需的特性。比如可以通过人工处理语音识别的结果,结合录音数据,将不同的人的文本区分开。但假如语音识别结果可以提供必要的辅助信息,无疑将改善后期人工投入的工作量。

从人的发音特征上来说,不同人讲话的声音具备一定的唯一性,业界称之为声纹,业界已经有产品利用这一特点,交付比如考勤系统、门禁系统等应用,支撑特定行业的应用。
基于前述理论基础,在语音识别过程中,可以基于时间,将输入的语音数据切割为等分的时间段,使用机器学习的方式,为每个时间段打上标签,结合语音识别结果中的时间偏移的信息,将不同的文本打上各自讲话人的标签。

由于本特性当前没有实际商用的场景,因此暂未在项目中实践前述想法。

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项目实战-后处理

    在本环节要处理的重要特性有分词.断句.标点符号.大小写.数字等的格式归一等. 分词 和NLP.搜索等场景下的分词含义不同.对于拼音类的语言,比如英语.法语等,句子由多个单词组成,语音输出的结果,需要按 ...

  7. 【项目实战】Python基于librosa和人工神经网络实现语音识别分类模型(ANN算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 语音识别发展到现在作为人机交互的重要接口已经在很多方面改变了我们 ...

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

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

  9. 看不懂花书?博士教你如何深入深度学习,从编程基础到完整的项目实战

    转眼2020年已过去三分之一,大家都知道今年就业形势不乐观,不过即便如此,现在依然是AI招聘的热门季.疫情过后,AI行业注定会迎来一波大爆发. 近几年,各大企业也开始越来越重视人工智能方向的发展,比如 ...

最新文章

  1. Exchange 2003允许部分用户发送邮件到部分外网服务器
  2. java instanceof 区别_Java 中 instanceof 和 isInstance 的区别
  3. 【随笔】激活函数是怎样一种存在?
  4. 实验2 递归下降语法分析程序设计
  5. JLBH示例1 –为什么应在上下文中对代码进行基准测试
  6. python类的属性和对象属性_python 类属性、对象属性-阿里云开发者社区
  7. Zephyr Team Hiring
  8. 抢先下载:Windows XP SP3英文预览版
  9. pionner软件操作笔记
  10. lisp 图层字体式样替换_ps将不同图层字体修改成相同字体的方法
  11. 英文歌曲推荐(lady gaga\Taylor swift\Adele等)
  12. linux自动清除超出的文件,Linux下面自动清理超过指定大小的文件
  13. mac下面如何修改只读文件(Read-only file system)
  14. c# word文档基本操作 (上)
  15. 电脑有时突然黑屏,过一两秒就好了的问题解决
  16. 谷歌浏览器f12功能修改服务器代码,Chrome(谷歌)控制台,console实用教程
  17. 从0基础到车载测试工程师,薪资11K,肯拼搏的人,总会有所收获
  18. Transformer拿下CV顶会大奖,微软亚研获ICCV 2021最佳论文
  19. java指针乱跳_鼠标卡顿,指针乱跳,鼠标失灵的解决办法。 涨知识了
  20. 2021年新能源汽车行业造车新势力专题研究报告

热门文章

  1. java application.doevents_Application.DoEvents()的使用
  2. 20211028gfsj_re_key
  3. 【】每日360题,2019.11.05日21点财会类考试习题答案
  4. nacos discovery client
  5. XP系统70个小技巧
  6. 字节跳动 前端校招 一二三面+hr面(2020-03)
  7. PMP报考流程以及注意事项
  8. 当IOS系统遇上XP系统没“化学反应”咋办
  9. 夜莺(Flashcat)V6监控(五):夜莺监控k8s组件(上)
  10. IDEA中Consolas中文显示不正常