ASR项目实战-语音识别

这篇具有很好参考价值的文章主要介绍了ASR项目实战-语音识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

语音识别

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

VAD

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

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

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

热词

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

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

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

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

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

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

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

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

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

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

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

文本的时间偏移

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

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

讲话人的识别

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

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

由于本特性当前没有实际商用的场景,因此暂未在项目中实践前述想法。文章来源地址https://www.toymoban.com/news/detail-762720.html

到了这里,关于ASR项目实战-语音识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python使用whisper实现语音识别(ASR)

    目录 Whisper的安装 Whisper的基本使用 识别结果转简体中文 断句 Whisper是OpenAI的一个强大的语音识别库,支持离线的语音识别。在使用之前,需要先安装它的库: 使用whisper,还需安装setuptools-rust: 但是,whisper安装时,自带的pytorch可能有些bug,因此需要卸载重装: 卸载: 重装

    2024年03月20日
    浏览(32)
  • ASR(自动语音识别)任务中的LLM(大语言模型)

    浅度融合 浅层融合指的是 LLM 本身并没有和音频信息进行直接计算。其仅对 ASR 模型输出的文本结果进行 重打分 或者 质量评估 。 深度融合 LLM 与 ASR 模型进行深度结合,统一语音和文本的编码空间或者直接利用 ASR 编码器的隐状态参与计算,利用大语言模型的能力得到更好的

    2024年02月12日
    浏览(33)
  • Unity 工具 之 Azure 微软连续语音识别ASR的简单整理

    目录 Unity 工具 之 Azure 微软连续语音识别ASR的简单整理 一、简单介绍 二、实现原理 三、注意实现 四、实现步骤  五、关键脚本 Unity 工具类,自己整理的一些游戏开发可能用到的模块,单独独立使用,方便游戏开发。 本节介绍,这里在使用微软的Azure 进行语音合成的两个方

    2024年02月01日
    浏览(35)
  • 音频深度学习变得简单:自动语音识别 (ASR),它是如何工作的

            在过去的几年里,随着Google Home,Amazon Echo,Siri,Cortana等的普及,语音助手已经无处不在。这些是自动语音识别 (ASR) 最著名的示例。此类应用程序从某种语言的语音音频剪辑开始,并将说出的单词提取为文本。因此,它们也称为语音转文本算法。         

    2024年02月15日
    浏览(28)
  • AI科普文章 | 语音识别准不准?—— ASR 效果评测原理与实践

    在日常工作、生活中,语音识别技术作为基础服务,越来越多的出现在我们周围,比如智能音箱、会议记录、字幕生成等等。 作为一项已经很成熟AI技术,市面上很多厂商都会提供语音识别服务,对外声称的识别准确性也很高。 对于业务侧的我们,其实更关心的是在我们特定

    2024年02月09日
    浏览(36)
  • 顶顶通电话机器人接口对接开源ASR(语音识别)

    目前大部分用户使用的都是在线ASR按照分钟或者按次付费,之前开源ASR效果太差不具备商用的条件,随着 阿里达摩院发布了大量开源数据集或者海量工业数据训练的模型,识别效果已经和商用ASR差距非常小,完全具备了很多场景代替商用ASR的能力。 顶顶通也全系列产品进行

    2024年02月08日
    浏览(31)
  • Arduino与LU-ASR01语音识别模块的双向串口通信实现

        之前我写了一篇《Arduino的智能语言输入实现》,讨论了Arduino与LU-ASR01之间通过串口通信实现Arduino的中文语音输入,不过那个通信是不完整的,因为LU-ASR01的串口只有一个发送端口TX,而没有接收端口RX。其实在真正的应用中,LU-ASR01通常也需要接收上位机的数据,例如为确

    2024年02月05日
    浏览(201)
  • Verilog中的force语句用来强制更改信号的值,特别适用于仿真和调试。本文将深入探讨force语句在FPGA开发中的应用和注意事项。

    Verilog中的force语句用来强制更改信号的值,特别适用于仿真和调试。本文将深入探讨force语句在FPGA开发中的应用和注意事项。 首先,我们需要了解force语句的语法。其基本格式为force [time] signal = value。其中,time是可选参数,表示在何时开始强制更改信号的值;signal是要更改的

    2024年02月12日
    浏览(45)
  • ASR项目实战-项目交付历程

    本文记录,作为项目主要负责人,完整参与语音识别项目的交付历程。 2019年12月中旬 接到项目交付任务,收集基本知识,启动业务分析工作。 2020年1月 完成竞品分析的整理。 梳理合作伙伴的清单,整理项目计划,启动和各合作伙伴的沟通工作。 启动架构方案、设计方案的

    2024年02月04日
    浏览(31)
  • ASR项目实战-后处理

    本文深入探讨后处理环节。 在本环节要处理的重要特性有分词、断句、标点符号、大小写、数字等的格式归一等。 和NLP、搜索等场景下的分词含义不同。对于拼音类的语言,比如英语、法语等,句子由多个单词组成,语音输出的结果,需要按需在各个单词之间补充或者去掉

    2024年02月04日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包