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

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

语音识别

业界流派众多,比如Kaldi、端到端等,具体选择哪一种,需要综合考虑人员能力、训练数据量和质量、硬件设施、交付周期等,作出相对合理的交付规划。

基于Kaldi的方案,优点在于其发挥稳定,缺点是使用难度比较高,学习曲线比较陡峭,具备使用经验的算法工程师相对比较稀缺。

端到端方案,业界主要基于Google在17年左右发布的文章作为研究、试验的输入,使用Tensorflow或者Pytorch作为训练、工程化的平台,算法工程师的可获得性比较好,但想要获取比较好的效果,仍需要付出相当的努力。

VAD

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

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

另外可以基于VAD实现断句,即依据前述假定:

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

热词

顾名思义,热词的作用在于提示语音识别系统,帮助语音识别系统输出相对靠谱的识别结果。

比如台州和泰州,在标准普通话中,二者发音接近,仅音调存在差异,考虑到口音和发音习惯的影响,假如听众不结合对话的上下文,可能无法正确有效的识别出具体的结果。

对于语音识别系统而言,假如事先给定台州作为热词,则在遇到类似发音时,在输出结果中使用台州,则可以有效改善识别结果的准确性。

实现热词时,可以有不同的选择。

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

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

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

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

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

  • 系统级热词和静态加载

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

  • 系统级热词和动态加载

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

  • 会话级热词和静态加载

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

  • 会话级热词和动态加载

    优点是功能最灵活。缺点是实现复杂度最高,增加了对硬件资源的占用,并且增加了处理时延。

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

文本的时间偏移

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

基于Kaldi实现的语音识别引擎,声学模型+发音词典+语言模型,实现思路如下:

将语音数据送入识别引擎,引擎除输出识别得到的文本,同时可以得到音素的列表,以及各音素在音频数据中出现的时间偏移量,此时结合文字或者单词和音素之间的映射关系,即可推算出文字或者单词出现在语音数据中的时间偏移量。

本方案比较简单,实现的难度不大,同时对性能、硬件资源的消耗比较小。

不过对于发音词典有要求,一要数据全面,二要标记准确。

不过考虑到人在讲话时,某些字或者单词的发音中可能出现无意义的重复音,这可能导致从音素序列还原为文字或者单词时出现匹配失败的现象,进而导致文本时间偏移的输出的结果不准确,或者完全失败。

讲话人的识别

一般情况下,一段语音数据中存在多人讲话的场景还是比较多的,比如会话录音、公开课、电话录音等。

在语音识别领域,本特性是一个比较复杂的话题。实际应用时,本特性并不是一个必需的特性。比如可以通过人工处理语音识别的结果,结合录音数据,将不同的人的文本区分开。但假如语音识别结果可以提供必要的辅助信息,无疑将改善后期人工投入的工作量。

从人的发音特征上来说,不同人讲话的声音具备一定的唯一性,业界称之为声纹,业界已经有产品利用这一特点,交付比如考勤系统、门禁系统等应用,支撑特定行业的应用。

基于前述理论基础,在语音识别过程中,可以基于时间,将输入的语音数据切割为等分的时间段,使用机器学习的方式,为每个时间段打上标签,结合语音识别结果中的时间偏移的信息,将不同的文本打上各自讲话人的标签。

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

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. 万字长文教你实现华为云IoT+OpenHarmony智能家居开发

    本文分享自华为云社区<华为云IoT+OpenHarmony的智能家居开发>,作者:袁睿. 一.选题说明 1. 选题为基于OpenHarmony的智能家居,应用场景为户用,受益人群为住户. ...

  2. TDengine 用户案例合集 | 智能环保项目的时序数据处理难点与优化实践

    智能环保系统通常涉及大量的传感器和监测设备,以收集环境数据并对其进行分析和处理,这些数据通常是时序数据,即在一段时间内按时间顺序生成的数据,规模庞大且要求快速准确地进行分析和处理.也因此时序数据处理是 ...

  3. 深入理解RocketMQ 广播消费

    这篇文章我们聊聊广播消费,因为广播消费在某些场景下真的有奇效.笔者会从基础概念.实现机制.实战案例.注意事项四个方面一一展开,希望能帮助到大家. 1 基础概念 RocketMQ 支持两种消息模式:集群 ...

  4. chatgpt与搜索结合,百度会在这股浪潮下掘金吗?

    年末,在百度内部沟通会上,百度创始人李彦宏提到最近他的朋友们问他如何看待ChatGPT,包括他周围同行业中的同一领域和跨境人士. ​事实上,早在ChatGPT将他的对话能力和直观的互动方式展现给全世界 ...

  5. MAC Big Sur系统升级导致三星移动硬盘T7无法识别解决方案

    一.问题 MAC系统升级后总是导致三星移动硬盘(加密)无法被识别,影响正常使用.问售后让去官网下载最新驱动,第一次升级有用,在升级就没用了. 升级系统版本MAC 15.5.1重新安装官网驱动仍然无法识 ...

  6. docker容器管理脚本

    #!/bin/bash #auto install docker and Create VM #by jfedu.net 2017 #Define PATH Varablies IPADDR=`ifc ...

  7. 9.26 多校联测 Day 5 总结

    虽然比赛还没打完,但是因为又罚坐了,提前把总结写出来吧() 看 T1,构造了一会发现大概就是把 b 序列放在 a 的最后面,前面位置填几个数. 先码了暴力,再码正解.但求出来的方案显然不是同一种/fn ...

  8. 2022/7/26 暑期集训 pj组第6次%你赛

    个人第3次 又是下午打,旁边那帮 不知好歹的 入门组小孩们又在吵吵... T1 老师是不是放反了? T1 是蓝题诶 理所应当地 跳过 然后就忘了写了,连样例也没打...样例可是有7分诶! 到现在也没写 ...

  9. Python JSON 使用指南:解析和转换数据

    JSON 是一种用于存储和交换数据的语法.JSON 是文本,使用 JavaScript 对象表示法编写. Python 中的 JSON Python 有一个内置的 json 包,可用于处理 JSON ...

  10. 🔥🔥TCP协议:超时重传、流量控制、keep-alive和端口号,你真的了解吗?

    引言 在之前的讲解中,我们已经介绍了TCP协议的一些面试内容,相信大家对于TCP也有了一些新的了解.今天,我们将继续深入探讨TCP的超时重传.流量控制.TCP的keepalive机制以及端口号等相关信 ...