【正在更新】从零开始认识语音识别:DNN-HMM混合系统语音识别(ASR)原理

摘要 | Abstract

        TO-BE-FILLED

1.前言 | Introduction

        近期想深入了解语音识别(ASR)中隐马尔可夫模型(HMM)和深度神经网络-隐马尔可夫(DNN-HMM)混合模型,但是尽管网络上有许多关于DNN-HMM的介绍,如李宏毅教授的《深度学习人类语言处理》[1],一些博主的语音识别系列文章[2],斯坦福大学HMM课件[3]。但是这些材料要么不够细致完备,要么对初学者来说过于复杂深奥(尤以HMM部分的琳琅满目的概率公式为首)。

        因此,笔者在阅读了大量相关资料后希望用深入浅出的方式为大家系统地介绍DNN-HMM混合模型。本文旨在为零基础者从头解析使用DNN-HMM混合方法的语音识别系统的底层原理

        笔者希望让仅仅具备本科概率论基础的人也能读懂,如果你符合这个条件但仍觉得理解起来困难,你可以留下你的疑惑,以帮助我们改进文章。

        

2.问题描述 | Problem Statement

        我们直入主题,语音识别模型是这样一个模型,它将一串语音信号X(如一个仅包含语音的.wav音频文件)作为模型的输入,目的在于输出一个与之最为匹配的文字内容\hat{Y}(为了简化问题,本文只考虑英文场景,其它语言原理基本类似)。其中,当我们说“最为匹配”的时候,我们主要考虑的是“最有可能”的,亦即,语音识别模型希望在给定X时,给出\hat{Y},使得:

\hat{Y}=argmax_{Y}\{P(Y|X)\}

上式意味着,我们要找使得P(Y|X)最大的Y,记作\hat{Y}
        要解决这个问题,一个最直观的办法就是穷举所有可能的Y,然后比一比他们的概率P(Y|X),再选出最大的那一个。显然这个想法是不现实的,因为所有可能的Y也许是一个无穷的集合。再者,就算能够缩小范围,枚举出大量比较可能的候选Y,又如何比较概率P(Y|X)的大小呢?因而枚举法似乎不是好的选择。

        HMM类的方法则选择使用贝叶斯理论对概率进行处理,这我们在后面会详细说明。在此之前,笔者想为大家简单讲讲其它的更清晰的解决思路。

3.相关研究 | Related Work

        得益于今日神经网络技术的快速发展,熟悉深度学习的我们很容易联想到,似乎只要利用大量的音频以及对应的文本标注进行训练,不需要额外的人工处理应该也能做到很好的泛化能力(即拿到新的语音信号时可以准确地给出真实的文字答案)吧?

        答案是:确实有,这种办法被称为Listen Attend, and Spell,简称LAS[4]。它使用一个深度学习模型,直接用声音信号和人工标记的文字训练,在推理时听到新的声音信号就能给出它认为最匹配的文字内容。由于直接输入音频信号X就能推理出其中的文字\hat{Y},LAS被归为端到端(End to End)模型。

        不得不说,LAS这种方法确实是最符合(机器学习研究者的)直觉的,就像其它任何的机器学习任务(如图像识别)一样,训练和推理再好理解不过了。

        除了即将要介绍的HMM类模型,LAS、Transformer[5],还有CTC[6],RNN-T[7]等。这些内容不是本文的重点,就不一一介绍了。

        尽管LAS等端到端模型操作非常简单无脑,但是在过去的很长一段时间内,这些堪称暴力的方法并没有想象中的那么强。至少在2020年时,商业语音识别系统的主力军还是咱们今天文章的主角DNN-HMM[1],同时DNN-HMM模型也是第一个被宣称达到人类同级别语音识别水平的模型[8]。接下来我们就要展开介绍HMM类模型:GMM-HMM系统和DNN-HMM混合系统。

4.方法 | Method

        前文提到,语音识别的任务可以简化为概率问题——在给定X时,给出\hat{Y},使得:

\hat{Y}=argmax_{Y}\{P(Y|X)\}

由于不好直接求得P(Y|X)以进行比较,在HMM系统中,我们引入贝叶斯公式将上式反转,即作以下变型:

\hat{Y}=argmax_{Y}\{P(Y|X)\}=argmax_{Y}\{\frac{P(X|Y)P(Y)}{P(X)}\}

其中由于去掉分母P(X)不影响分式的大小比较,上式又等价于求:

\hat{Y}=argmax_{Y}\{P(X|Y)P(Y)) \}

       这其中,我们P(X|Y)声学模型(Acoustic Model),称P(Y)语言模型(Language Model)。(对,就是Chat GPT一类的语言模型)

        这样,我们就将不容易估计的概率转变成容易估计的概率。接下来我们简要解释声学模型和语言模型的含义,以及为什么说他们容易估计。

4.1.声学模型与语言模型

        首先是声学模型P(X|Y),按字面意思理解,它就是给定文字内容Y,其对应发音结果为音频X的概率。这个过程是一个正向的过程,是较好估计的。举一个不那么恰当的例子,如在中文里,文字“朝阳”对应的发声结果中,发出类似于“cháo yáng”或者“zhāo yáng”的概率是比较大的,但发出任何其它的声音的概率都是比较小的。笔者认为,这也是该概率被称为“声学模型”的原因,因为它描述的是“念”某一文字发出某一声音的概率,即某文字的“发声概率”。

        以上的例子只是为了简要说明“声学模型”的内涵而并不具有严谨性,对于某一文字内容对应应该发出什么声音,应考虑更全面更深入的因素,而通过拼音的方式进行描述是抽象而模糊的。事实上,HMM正是声学模型,其提出者将文字的发音过程简化作一个隐马尔可夫模型。这部分内容我们会在后文详细介绍,在此不多赘述。

        至于语言模型P(Y),则是用于描述某一文字Y出现的概率,也代表其出现的合理性。如在英文里的经典例子,“识别语音”的英文“recognize speech”和“毁坏一个好沙滩”的英文“wreck a nice beach”的发音应是一模一样的。但是,由于后者的词语搭配缺乏合理性(也可理解为在大量的各类文字材料中后者出现的频率小得多),其概率P(Y)也小得多,故在二者的声学模型取值相同(因为发音完全一样)的情况下,“recognize speech”是具有更高可能的识别结果。在实践中,我们会统计各词语在各种语境(上下文环境)中出现的频率,作为语言模型使用。时常,这样的统计还不足够令人满意,我们也会从逻辑的角度出发对目标材料进行合理扩展。另外,作为评判文字出现合理性的语言模型,成果缔造了Chat GPT这类能生成很多“合理”对话的聊天机器人。由于语言模型不是行文的重点,我们推荐有兴趣的读者查阅语言模型的其它相关材料,不再拓展阐述。

        值得一提的是,即便是对于LAS之类的端到端模型,也即没有使用贝叶斯公式变换出P(Y)这一式子,而是直接求解原问题\hat{Y}=argmax_{Y}\{P(Y|X)\}的模型,也会引入语言模型P(Y),即LAS等模型在实际上会求解\hat{Y}=argmax_{Y}\{P(Y|X)P(Y)\}。尽管这一表达式缺乏逻辑,但在实践中却能起到可观的效果,其原因可能在于这些模型本身不能很好地估计P(Y|X),因而来自语言模型的修正可以生效[1]。

        回到语音识别的问题上来,我们的目标是找到使得声学模型P(X|Y)和语言模型P(Y)相乘概率最大的Y。换一个角度理解:语言模型可以基于声学模型所生成的词组的合理性对语音识别结果进行重打分(rescoring),以帮助改进识别质量。

4.2.声学模型的构建:GMM-HMM系统

        前文已经提到,在搭建声学模型P(X|Y)的过程中,我们引入了HMM模型,其原因在于可以将发声的过程看作是是隐马尔可夫过程。但是在深入分析HMM相关内容之前,为了叙述逻辑的通畅,我们还是先从P(X|Y)这一式子讲起。

4.2.1.对齐:音频分帧与音素分解

        当我们想进一步探讨P(X|Y)这一式子时,一个现实的问题立马扑面而来:对齐。由于语音的随意性和多样性,同一个文本内容会对应无穷多种时间上的差异组合。例如英文里的元音,中文里韵母等,其发音都可以无限地延长。对此,一个很直观的解决方案就是,将音频X切片,分为一小段一小段的内容,再去讨论每一小段对应的内容。

        

TO-BE-CONTINUED

参考资料

[1] 国立台湾大学李宏毅 (Hung-yi Lee)教授DLHLP2020课程,原网址:Hung-yi Lee (ntu.edu.tw) ,B站搬运Speech Recognition (Option) - HMM_哔哩哔哩_bilibili

[2] 【AI大道理】AI大语音(十三)——DNN-HMM (深度解析)-CSDN博客

[3] Stanford University EE365: Hidden Markov Models  hmm.pdf (stanford.edu)

[4] W. Chan, N. Jaitly, Q. Le and O. Vinyals, "Listen, attend and spell: A neural network for large vocabulary conversational speech recognition," 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Shanghai, China, 2016, pp. 4960-4964, doi: 10.1109/ICASSP.2016.7472621.

[5] Linhao Dong, Shuang Xu, and Bo Xu. "Speech-transformer: a no-recurrence sequence-to-sequence model for speech recognition."2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2018.

[6] Graves, Alex & Fernández, Santiago & Gomez, Faustino & Schmidhuber, Jürgen. (2006). Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural 'networks. ICML 2006 - Proceedings of the 23rd International Conference on Machine Learning. 2006. 369-376. 10.1145/1143844.1143891. 

[7] Graves, Alex. “Sequence Transduction with Recurrent Neural  Networks.”  2012 ArXiv abs/1211.3711

[8] W. Xiong et al., "Toward Human Parity in Conversational Speech Recognition," in IEEE/ACM Transactions on Audio, Speech, and Language Processing, vol. 25, no. 12, pp. 2410-2423, Dec. 2017, doi: 10.1109/TASLP.2017.2756440. 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/678427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

火车可视化调车系统

列车在调车作业时,当机车头在尾部推动车厢时,司机室一人操控机车,车厢前端配备两名挂梯随车运行调车员,调车员人为分析行车方向是否有障碍、轨道行人等紧急情况,通过对讲机通知司机控制停车。由于司机无法直观观察列车…

逆向实战29——某度 某家号2024旋转验证码识别

前言 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6Ly9hd…

Linux下的文件权限与访问控制:守护你的数据宝藏

引言 在Linux这片广袤的领域中,文件权限与访问控制犹如守护宝藏的魔法阵,它们确保你的系统安全、数据不被窥探。对于初学者而言,了解并掌握这些魔法阵的奥秘,是成为一名合格Linux巫师的必经之路。那么,就让我们一起揭…

Redis核心技术与实战【学习笔记】 - 28.Redis 6.0新特性(多线程、客户端缓存与安全)

简述 Redis 6.0 新增了几个关键新特性,分别是面向网络处理的多 IO 线程、客户端缓存、细粒度的权限控制,以及 RESP 3 协议的使用。 其中,面向网络处理的多 IO 线程可以提高网络请求处理的速度,而客户端缓存可以让应用直接在客户…

fast.ai 深度学习笔记(二)

深度学习 2:第 1 部分第 4 课 原文:medium.com/hiromi_suenaga/deep-learning-2-part-1-lesson-4-2048a26d58aa 译者:飞龙 协议:CC BY-NC-SA 4.0 来自 fast.ai 课程的个人笔记。随着我继续复习课程以“真正”理解它,这…

【机器学习300问】22、什么是超参数优化?常见超参数优化方法有哪些?

在之前的文章中,我主要介绍了学习率 η和正则化强度 λ 这两个超参数。这篇文章中我就主要拿这两个超参数来进行举例说明。如果想在开始阅读本文之前了解这两个超参数的有关内容可以参考我之前的文章,文章链接为你放在了这里: 【机器学习300…

kvm qemu 优化 windows 虚拟机速度

主要优化磁盘 io 和网络 io 都选为 virtio windows 驱动下载 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.185-2/virtio-win-0.1.185.iso I also had incredibly slow performance with my virtual HDD. The followin…

每日一个shell脚本之自动化采集监控指标+登录欢迎

每日一个shell脚本之自动化采集监控指标登录欢迎 效果图参上 源码奉上 #!/usr/bin/bashclear#空闲内存Frfree -h | awk NR2{print $4}#已用内存Usfree -h | awk NR2{print $3}#系统存储空间Us_systemdf -Th | grep /dev/ | tail -1 | awk {print $4}Us_freedf -Th | grep /de…

直播app开发,技术驱动的实时互动新纪元

随着互联网技术的快速发展,直播已成为我们日常生活的重要组成部分。从娱乐、教育到商业活动,直播的广泛应用正在改变着我们的生活和工作方式。在这一变革中,直播开发扮演着至关重要的角色。本文将探讨直播开发的核心理念、技术挑战以及未来的…

【C++】初识模板:函数模板和类模板

目录 一、模板函数 1、函数模板的概念 2、函数模板的格式 3、函数模板的原理 4、函数模板实例化 5、 模板参数的匹配原则 二、类模板 1 、类模板的定义格式 2 、类模板的实例化 3、模板类示例 一、模板函数 1、函数模板的概念 函数模板代表了一个函数家族&#xff0c…

C语言之预处理详解

目录 1. 预定义符号2. #define定义常量3. #define定义宏练习 4. 带有副作用的宏参数5. 宏替换的规则6. 宏函数的对比宏和函数的一个对比 7. #和###运算符##运算符 8. 命名约定9. #undef10. 命令行定义11. 条件编译常见的条件编译 12. 头文件的包含头文件的包含方式库文件包含嵌…

通过遵循最佳做法来提高 EDA 和 HPC 应用程序的 Azure NetApp 文件性能

介绍 Azure NetApp 文件是一项托管存储解决方案,适用于各种方案,包括高性能计算 (HPC) 基础结构。 低延迟和每秒高 I/O 操作数 (IOPS) 对于大规模企业而言是一种很好的组合。 假设你就职于一家半导体公司。 你的任务是设计公司的集成电路芯片&#xff…

新春快乐(烟花、春联)【附源码】

新春快乐 一&#xff1a; C语言 -- 烟花二&#xff1a;Python -- 春联三&#xff1a;Python -- 烟花四&#xff1a;HTML -- 烟花 一&#xff1a; C语言 – 烟花 运行效果&#xff1a; #include <graphics.h> #include <math.h> #include <time.h> #include…

电商小程序07显示用户个人信息

目录 1 全局变量2 控制登录按钮显示3 设置布局4 搭建我的页面5 修改个人信息总结 在登录章节我们已经实现了用户名和密码登录首页的功能&#xff0c;在登录之后&#xff0c;可以切换到我的页面&#xff0c;显示用户的头像和名称&#xff0c;可以修改个人信息。本篇我们介绍一下…

【Spring MVC篇】参数的传递及json数据传参

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring MVC】 本专栏旨在分享学习Spring MVC的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一、普通参数的传…

STM32能够做到数据采集和发送同时进行吗?

STM32能够做到数据采集和发送同时进行吗&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「STM32的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&am…

专业140+总分420+河海大学863信号与系统考研经验电子信息通信与信息技术,真题,大纲,参考书。

今年的成绩出来倍感欣慰&#xff0c;决定考研的时候并没有想到自己可以考出420的分数&#xff0c;通过自己一年来的努力&#xff0c;成功上岸&#xff0c;期中专业课863信号与系统140接近满分&#xff08;非常感谢信息通信Jenny老师的专业课辅导和平时悉心答疑&#xff0c;不厌…

【MATLAB源码-第138期】基于matlab的D2D蜂窝通信仿真,对比启发式算法,最优化算法和随机算法的性能。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 D2D蜂窝通信介绍 D2D蜂窝通信允许在同一蜂窝网络覆盖区域内的终端设备直接相互通信&#xff0c;而无需数据经过基站或网络核心部分转发。这种通信模式具有几个显著优点&#xff1a;首先&#xff0c;它可以显著降低通信延迟&…

波奇学Linux: 文件描述符

文件和操作系统的关系 操作系统控制进程&#xff0c;文件的打开是在进程中进行。意味着用来控制进程的PCB必然有文件的信息&#xff0c;操作系统通过控制PCB的信息来控制文件的读写。 Q1&#xff1a;如何证明文件打开是在进程中进行&#xff1f; 编写c文件调用fopen来操作文件…

SpringBoot 接入讯飞星火大模型实现对话

申请地址 https://xinghuo.xfyun.cn/sparkapi?scrprice 免费申请200万Token 开发文档 https://www.xfyun.cn/doc/spark/Web.html#_1-接口说明 页面最下面有相关demo可以参考 介绍 接口是以套接字的形式分段返回&#xff0c;而且非http请求&#xff0c;比较繁琐&#xff0c;官…