传统语音识别系统流程

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

概述

语音识别传统方法主要分两个阶段:训练和识别,训练阶段主要是生成声学模型和语言模型给识别阶段用。传统方法主要有五大模块组成,分别是特征提取(得到每帧的特征向量),声学模型(用GMM从帧的特征向量得到状态,再用HMM从状态得到音素)、发音字典(从音素得到单词)、语言模型(从单词得到句子)、搜索解码(根据声学模型、发音字典和语言模型得到最佳文本输出),即从帧得到特征向量(特征提取干的话),从特征向量得到状态(GMM干的话),从状态得到音素(HMM干的话),从音素得到单词(发音字典干的活),从单词得到句子(语言模型干的活)

语音识别原理公式

arg ⁡ max ⁡ w ⃗ p ( w ⃗ ∣ x ⃗ ) = arg ⁡ max ⁡ w ⃗ ∑ q ⃗ p ( w ⃗ , q ⃗ ∣ x ⃗ ) = arg ⁡ max ⁡ w ⃗ ∑ q ⃗ p ( x ⃗ ∣ w ⃗ , q ⃗ ) p ( w ⃗ , q ⃗ ) p ( x ⃗ ) = arg ⁡ max ⁡ w ⃗ ∑ q ⃗ p ( x ⃗ ∣ q ⃗ ) p ( q ⃗ ∣ w ⃗ ) p ( w ⃗ ) \begin{aligned} \arg \max_{\vec{w}} p(\vec{w}|\vec{x}) &=\arg \max_{\vec{w}} \sum_{\vec{q}}p(\vec{w},\vec{q}|\vec{x}) \\ &=\arg \max_{\vec{w}}\sum_{\vec{q}} \frac{p(\vec{x}|\vec{w},\vec{q})p(\vec{w},\vec{q})}{p(\vec{x})} \\ &=\arg \max_{\vec{w}}\sum_{\vec{q}}p(\vec{x}|\vec{q})p(\vec{q}|\vec{w})p(\vec{w}) \end{aligned} argw maxp(w x )=argw maxq p(w ,q x )=argw maxq p(x )p(x w ,q )p(w ,q )=argw maxq p(x q )p(q w )p(w )
x ⃗ \vec{x} x :输入的语音的特征
w ⃗ \vec{w} w :输出的词序列
q ⃗ \vec{q} q :音素序列
p ( x ⃗ ∣ q ⃗ ) p(\vec{x}|\vec{q}) p(x q ):声学模型
p ( q ⃗ ∣ w ⃗ ) p(\vec{q}|\vec{w}) p(q w ):发音词典。发音词典就是定义每个词由哪些音素组成
p ( w ⃗ ) p(\vec{w}) p(w ):语言模型。语言模型一般利用链式法则,把一个句子的概率拆解成其中每个词的概率之积。

省略分母是因为我们要优化的是 w w w,而 p ( x ) p(x) p(x)不含 w w w,是常数。

语音识别术语:

  1. 什么是声学模型?
    声学模型其实就是可以识别单个音素的模型(例如:音素a的模型可以判定一小段语音是否是a);

  2. 什么是语言模型?
    语言模型表示一个个词串(如果结合了词典,就可以成为一个个音素串)它们在语料库中出现的概率大小(比如,不合语法的词串(句子)概率接近0,很合乎语法的词串概率大);

  3. 什么是解码器
    解码器就是基于Viterbi算法在HMM模型上搜索生成给定观测值序列(待识别语音的声学特征)概率最大的HMM状态序列,再由HMM状态序列获取对应的词序列,得到结果结果。
    如果你只做单个音素识别,(语音很短,内容只是音素),那么只用声学模型就可以做到,不用语言模型。做法就是在每个音素的声学模型上使用解码器做解码(简单的Viterbi算法即可)。
    但是,通常是要识别一个比较长的语音,这段语音中包含了很多词。这就需要把所有可能的词串,结合词典展开为音素串,再跟音素的声学模型结合,可以得到解码图(实际上可以看成很多很多HMM模型连接而成),然后在这个解码图上实施Viterbi算法,得到最佳序列,进而得到识别结果。

  4. 什么是音素
    音素:单词的发音由音素构成。对英语,一种常用的音素集是卡内基梅隆大学的一套由39个音素构成的音素集,参见The CMU Pronouncing Dictionary。人们在说话时,某音素的发音是会受到前后音素影响的,这种现象为协同发音,为了解决这一现象,将当前音素与其前后的音素拼起来组成新的音素,称为三音素(triphone)。在传统的语音识别系统中,通常使用三个状态去表示一个三音素,分别表示一个音素的发音初始态、稳定态和结束态,因此,一个音素又可以表示为三个状态。汉语一般直接用全部声母和韵母作为音素集,另外汉语识别还分有调无调,不详述。

  5. 什么是状态
    状态:这里理解成比音素更细致的语音单位就行啦。通常把一个音素划分成3个状态。

  6. 声学模型如何训练:
    1.数据准备:音频以及对应标注
    2.先对数据进行强对齐,去除一些音频和对应标注完全不符的情况,这里需要准备发音词典和音素等资源文件

分帧

声音实际上是一种波,把波形切开成一小段一小段,每小段称为一帧。帧与帧之间有重叠,就像下图这样:
传统语音识别系统流程,语音识别,自然语言处理,语音识别,人工智能,声学模型
另外还需要做个 VAD 处理,也就是把首尾端的静音切除,降低对后续步骤造成的干扰。这需要用到信号处理的一些技术。

提取声学特征

分帧后,语音就变成了很多小段。但波形在时域上几乎没有描述能力,因此必须将波形作变换。常见的一种变换方法是提取 MFCC 特征,把每一帧波形变成一个 12 维向量。这 12 个点是根据人耳的生理特性提取的,可以理解为这 12 个点包含了这帧语音的内容信息。这个过程叫做声学特征提取。实际应用中,这一步有很多细节,比如差分、均值方差规整、高斯化、降维去冗余等,声学特征还有fbank等。

https://www.jianshu.com/p/06895b38738c
https://www.cnblogs.com/yifanrensheng/p/13510742.html
至此,声音就成了一个 12 行(假设声学特征是 12 维)、N 列的一个矩阵,称之为观察序列,这里 N 为总帧数。观察序列如下图所示,图中,每一帧都用一个 12 维的向量表示,色块的颜色深浅表示向量值的大小。
传统语音识别系统流程,语音识别,自然语言处理,语音识别,人工智能,声学模型
Fbank:FilterBank:人耳对声音频谱的响应是非线性的,Fbank就是一种前端处理算法,以类似于人耳的方式对音频进行处理,可以提高语音识别的性能。获得语音信号的fbank特征的一般步骤是:预加重、分帧、加窗、短时傅里叶变换(STFT)、mel滤波、去均值等。对fbank做离散余弦变换(DCT)即可获得mfcc特征。

声学模型

  1. 音节:英语中就是单词,汉语中是汉字。
  2. 音素:音节的发音由音素构成。对英语,通常使用 39 个音素的音素集。
  3. 状态:比音素更细致的语音单位。通常一个音素由 3 个状态构成。

语音识别是怎么工作的呢?

第一步,把帧识别成状态(难点)。(GMM)

第二步,把状态组合成音素。(HMM)

第三步,把音素组合成单词。(发音字典)
如下图所示:
传统语音识别系统流程,语音识别,自然语言处理,语音识别,人工智能,声学模型
图中,每个小竖条代表一帧,若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。也就是说,只要知道每帧语音对应哪个状态了,语音识别的结果也就出来了。
那每帧音素对应哪个状态呢?有个容易想到的办法,看某帧对应哪个状态的概率最大,那这帧就属于哪个状态,这叫做“最大似然”。比如下面的示意图,这帧对应 S3 状态的概率最大,因此就让这帧属于 S3 状态。
传统语音识别系统流程,语音识别,自然语言处理,语音识别,人工智能,声学模型
那这些用到的概率从哪里读取呢?有个叫“声学模型”的东西,里面存了一大堆参数,通过这些参数,就可以知道帧和状态对应的概率(GMM)。声学模型是使用巨大数量的语音数据训练出来的。
但这样做有一个问题:每一帧都会得到一个状态号,最后整个语音就会得到一堆乱七八糟的状态号,相邻两帧间的状态号基本都不相同。假设语音有 1000 帧,每帧对应 1 个状态,每 3 个状态组合成一个音素,那么大概会组合成 300 个音素,但这段语音其实根本没有这么多音素。实际上如果真这么做,得到的状态号可能根本无法组合成音素。实际上,相邻帧的状态应该大多数都是相同的,因为每帧很短。解决这个问题的常用方法就是使用隐马尔可夫模型(Hidden Markov Model,HMM)。这东西听起来很复杂,实际上没什么神秘的。基于 HMM 的语音识别,其基本原理无非是:

第一步,构建一个状态网络。
第二步,从状态网络中寻找与声音最匹配的路径。

这样就把结果限制在预先设定的网络中,避免了刚才说到的问题,当然也带来一个局限,比如你设定的网络里只包含了“今天晴天”和“今天下雨”两个句子的状态路径,那么不管说些什么,识别出的结果必然是这两个句子中的一句。
具体是这样的,首先构造音节级网络,然后展开成音素网络,然后展开成状态网络。然后在状态网络中搜索一条最佳路径,这条路径和语音之间总的概率,称之为累积概率最大。搜索的算法是一种动态规划剪枝的算法,称之为 Viterbi 算法,寻找全局最优路径。感兴趣的同学可以到 Wikipedia 上搜一下。
传统语音识别系统流程,语音识别,自然语言处理,语音识别,人工智能,声学模型
这里所说的累积概率,分为三部分,分别是:

  1. 观察概率:每帧和每个状态对应的概率
  2. 转移概率:每个状态转移到自身或转移到下个状态的概率
  3. 语言概率:根据语言统计规律得到的概率

其中,前两种概率从声学模型中获取,最后一种概率从语言模型中获取。语言模型是使用大量的文本训练出来的,存储的是任意单词、任意两个单词、任意三个单词(通常也就到三个单词)在大量文本中的出现机率。

这样基本上语音识别过程如下。
传统语音识别系统流程,语音识别,自然语言处理,语音识别,人工智能,声学模型
https://www.cnblogs.com/talkaudiodev/p/10635656.html文章来源地址https://www.toymoban.com/news/detail-833920.html

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

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

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

相关文章

  • 【人工智能124种任务大集合】-集齐了自然语言处理(NLP),计算机视觉(CV),语音识别,多模态等任务

    大家好,我是微学AI,今天给大家介绍一下人工智能124种任务大集合,任务集合主要包括4大类:自然语言处理(NLP)、计算机视觉(CV)、语音识别、多模态任务。 我这里整理了124种应用场景任务大集合,每个任务目录如下: 句子嵌入(Sentence Embedding):将句子映射到固定维

    2024年02月13日
    浏览(76)
  • 基于语音识别的自然语言生成技术

    作者:禅与计算机程序设计艺术 1.1. 背景介绍 随着人工智能技术的快速发展,自然语言处理(NLP)领域也取得了显著的进步。在语音识别技术方面,语音识别率、识别速度等指标不断提高,使得语音技术在人们的生活中扮演越来越重要的角色。为了更好地利用这些技术,将自

    2024年02月06日
    浏览(60)
  • c++通过自然语言处理技术分析语音信号音高

            对于语音信号的音高分析,可以使用基频提取技术。基频是指一个声音周期的重复率,也就是一个声音波形中最长的周期。 通常情况下,人的声音基频范围是85Hz到255Hz。根据语音信号的基频可以推断出其音高。         C++中可以使用数字信号处理库或语音处理

    2024年02月14日
    浏览(61)
  • 1分钟了解音频、语音数据和自然语言处理的关系

    音频、语音数据和自然语言处理这三者正在不断促进人工智能技术的发展,人机交互也逐渐渗透进生活的每个角落。在各行各业包括零售业、银行、食品配送服务商)的多样互动中,我们都能通过与某种形式的AI(如聊天机器人或虚拟助手)沟通来实现某些交易活动。语言是

    2024年02月09日
    浏览(51)
  • 自然语言处理的未来:从语音助手到人工智能

    自然语言处理(NLP)是人工智能(AI)领域的一个重要分支,它涉及到计算机理解、生成和处理人类语言的能力。自从2010年左右,NLP技术在深度学习和大数据技术的推动下发生了巨大的变革,这使得许多之前只能由专业人士完成的任务现在可以由计算机自动完成。 在过去的几年里

    2024年02月21日
    浏览(95)
  • TTS合成技术中的语音合成和人工智能和自然语言生成

    TTS合成技术中的语音合成和人工智能和自然语言生成是当前人工智能技术应用中的重要领域。本文旨在介绍TTS合成技术中的语音合成、人工智能和自然语言生成的概念和技术原理,并给出实现步骤和优化建议,旨在帮助读者更好地理解这个领域的技术细节和发展趋势。 TTS合成

    2024年02月07日
    浏览(59)
  • ChatGPT+Mermaid自然语言流程图形化产出小试

    本文旨在介绍如何使用ChatGPT和Mermaid语言生成流程图的技术。在现代软件开发中,流程图是一种重要的工具,用于可视化和呈现各种流程和结构。结合ChatGPT的自然语言处理能力和Mermaid的简单语法,可以轻松地将文本描述转化为图形表示,使技术文档更具可读性和易懂性。 在

    2024年02月09日
    浏览(39)
  • 【自然语言处理】第3部分:识别文本中的个人身份信息

    做一个简单介绍, 酒架 年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【架构师酒馆】和【开发者开聊】,有更多的内容分享,谢谢大家收藏。 企业架构师需要

    2024年02月03日
    浏览(51)
  • 工信部颁发的人工智能证书《自然语言与语音处理设计开发工程师》证书到手啦!

    工信部颁发的人工智能证书《自然语言与语音处理设计开发工程师》证书拿到手啦! 近期正在报考的工信部颁发的人工智能证书还有: 《计算机视觉处理设计开发工程师》中级   2024年1月24日至28日-北京 《自然语言与语音处理设计开发工程师》中级 第二期   2024年2月29日-

    2024年01月16日
    浏览(197)
  • ChatGPT+Mermaid自然语言流程图形化产出小试 | 京东云技术团队

    ChatGPT+Mermaid语言实现技术概念可视化 本文旨在介绍如何使用ChatGPT和Mermaid语言生成流程图的技术。在现代软件开发中,流程图是一种重要的工具,用于可视化和呈现各种流程和结构。结合ChatGPT的自然语言处理能力和Mermaid的简单语法,可以轻松地将文本描述转化为图形表示,

    2024年02月09日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包