对比GMM-HMM、DNN-HMM、DNN-CTC 三个模型的优缺点

语音识别的研究工作大约开始于50年代,当时AT& T Bell实验室实现了第一个可识别十个英文数字的语音识别系统――Audry系统。70年代,语音识别领域取得了突破。在理论上,LP技术得到进一步发展,动态时间归正技术(DTW)基本成熟,特别是提出了矢量量化(VQ)和隐马尔可夫模型(HMM)理论。在实践上,实现了基于线性预测倒谱和DTW技术的特定人孤立语音识别系统。80年代,语音识别研究进一步走向深入,其显著特征是HMM模型和人工神经元网络(ANN)在语音识别中的成功应用。HMM模型的广泛应...
摘要由CSDN通过智能技术生成

     语音识别的研究工作大约开始于50年代,当时AT& T Bell实验室实现了第一个可识别十个英文数字的语音识别系统――Audry系统。70年代,语音识别领域取得了突破。在理论上,LP技术得到进一步发展,动态时间归正技术(DTW)基本成熟,特别是提出了矢量量化(VQ)和隐马尔可夫模型(HMM)理论。在实践上,实现了基于线性预测倒谱和DTW技术的特定人孤立语音识别系统。80年代,语音识别研究进一步走向深入,其显著特征是HMM模型和人工神经元网络(ANN)在语音识别中的成功应用。HMM模型的广泛应用应归功于AT&T。

语音识别技术的发展,和机器学习技术的发展密不可分,尤其是深度学习出现之后。而使用机器学习或者是深度学习都离不开各种神经网络模型。

神经网络(NN)的最新进展使越来越多的创新应用成为可能。作为一种节能的硬件解决方案,CNN 或传统 ANN 的机器学习加速器在嵌入式视觉、 机器人和网络物理领域也越来越受欢迎。

语音识别系统的模型通常由声学模型和语言模型两部分组成,分别对应于语音到音节概率的计算和音节到字概率的计算。语音识别系统本质上是一种模式识别系统,包括特征提取、模式匹配、参考模式库等三个基本单元。

目前具有代表性的语音识别方法主要有动态时间规整技术(DTW)、隐马尔可夫模型(HMM)、矢量量化(VQ)、人工神经网络(ANN)、支持向量机(SVM)等方法。

首先看GMM-HMM模型。

HMM-GMM模型

  1. 什么是HMM?

隐马尔可夫模型(HMM)是语音信号处理中的一种统计模型,是由马尔可夫链演变来的,所以它是基于参数模型的统计识别方法。由于其模式库是通过反复训练形成的与训练输出信号吻合概率最大的最佳模型参数而不是预先储存好的模式样本,且其识别过程中运用待识别语音序列与HMM参数之间的似然概率达到最大值所对应的最佳状态序列作为识别输出,因此是较理想的语音识别模型。

 

红圈-->一个可见状态。 蓝框-->一个隐含状态

举个例子来理解隐含马尔可夫链:

假设在暗室中由N个口袋,每个口袋中由M种不同颜色的求。一个实验员根据某一概率分布随机的选取一个初始口袋,从中根据不同颜色的求的分布概率随机的取出一个球并记录下该球的颜色。而后再根据口袋的概率分布选取一个口袋,再根据不用管色球的概率分布随机选取一个球,记录下颜色。重复这个过程我们就得到了一串标记球颜色的序列,如"红黄红蓝.."。当你把这串序列给暗室外的人看的时候,他们只是看到最终球的颜色序列,但不知道口袋的序列。

在上面的例子中,口袋对应于HMM中的隐藏状态,而颜色序列则代表可观察的输出序列。从一个口袋转向另一个口袋代表状态间的转换,从口袋中取球代表该状态的观察状态输出。

2.HMM解决3个问题:

1)计算likelihood--前向算法 :给定HMM的模型参数和一个观察序列,计算出观察序列O的概率分布矩阵P(O|u

  • 9
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DNN-HMM(Deep Neural Network - Hidden Markov Model)是一种用于语音识别算法。它将DNN(深度神经网络)与HMM(隐马尔可夫模型)相结合,通过训练DNN来预测HMM中的状态转移概率。 在实现DNN-HMM的代码中,首先需要对语音数据进行预处理,将语音信号转换为特征向量。然后,需要训练DNN来预测HMM中的状态转移概率。训练完成后,可以使用Viterbi算法来解码输入语音的语音识别结果。 下面是一个使用Python和Keras库实现DNN-HMM的示例代码: ``` import numpy as np from keras.layers import Dense, Input from keras.models import Model from keras.optimizers import Adam from hmmlearn import hmm #预处理语音数据 def preprocess_data(audio_data): # do some preprocessing on the audio data return feature_vectors #训练DNN def train_dnn(feature_vectors, states): input_layer = Input(shape=(feature_vectors.shape[1],)) hidden_layer = Dense(units=64, activation='relu')(input_layer) output_layer = Dense(units=states, activation='softmax')(hidden_layer) model = Model(inputs=input_layer, outputs=output_layer) model.compile(optimizer=Adam(), loss='categorical_crossentropy') model.fit(feature_vectors, states) return model #训练HMM def train_hmm(model, feature_vectors, states): start_prob = np.random.rand(states) start_prob = start_prob / np.sum(start_prob) trans_matrix = np.random.rand(states, states) trans_matrix = trans_matrix / np.sum(trans_matrix, axis=1).reshape(-1, 1) hmm_model = hmm.MultinomialH ### 回答2: DNN-HMM是一种基于深度神经网络(DNN)和隐马尔可夫模型HMM)的语音识别技术。它利用DNN的强大模式匹配能力以及HMM的序列建模能力,提高了语音识别的准确率。 在实现DNN-HMM代码时,首先需要进行数据预处理。这包括语音信号的特征提取,如使用MFCC算法提取语音信号的频谱特征,并将其转换为对数梅尔频谱系数(MFCC)。这些特征将作为输入传递给DNN。 接下来,需要使用DNN来训练模型DNN由多个神经网络层组成,可以使用库,如TensorFlow或PyTorch,来搭建网络结构。在训练过程中,使用大量带标签的语音数据对DNN进行训练,使其学会从输入特征中提取语音识别所需的信息。 在训练完成后,需要将DNNHMM结合起来。HMM是一种用于建模语音序列的统计模型,通常用于语音识别任务。在DNN-HMM中,HMM用于建模语音片段的状态转移概率,而DNN用于建模状态的发射概率。将训练好的DNN参数与HMM进行联合训练,通过迭代优化模型的参数,提高识别准确率。 最后,使用实时语音输入或预先录制的语音文件作为测试集,通过DNN-HMM模型进行语音识别。根据输入的语音特征序列,使用Viterbi算法HMM中找到最可能的状态路径,并输出对应的识别结果。 总的来说,实现DNN-HMM的代码需要包括数据预处理、DNN模型的训练、DNNHMM的联合训练以及基于训练好的模型进行语音识别的过程。通过不断调优模型参数和增加训练数据,可以提高DNN-HMM模型的准确率。 ### 回答3: DNN-HMM,即深度神经网络隐马尔可夫模型,是一种用于语音识别和语言建模的技术。在DNN-HMM中,深度神经网络(DNN)用于提取语音特征,然后将这些特征输入到隐马尔可夫模型HMM)中进行模型训练和识别。 要实现DNN-HMM,首先需要搭建DNN模型。可以使用Python编程语言和深度学习框架(如TensorFlow或PyTorch)来实现。DNN模型通常由多个隐藏层组成,每个隐藏层都包含多个神经元。输入层接受语音特征并将其传递给隐藏层,最后输出层产生预测结果。 接下来,需要为HMM模型创建初始状态概率、转移概率和发射概率。这些概率可以通过训练数据集来估计。初始状态概率表示在识别过程中开始的状态的可能性。转移概率表示从一个状态转移到下一个状态的可能性。发射概率表示在某个状态下观察到某个特定特征的可能性。 将DNN模型HMM模型连接起来,可以使用Viterbi算法来识别语音。Viterbi算法根据先前的状态和观察到的特征来计算当前状态的似然。通过迭代Viterbi算法,可以找到最可能的状态序列,从而实现语音的识别。 在编写DNN-HMM代码时,需要用训练数据集进行模型训练。训练过程将通过最小化损失函数来调整DNN模型的权重和偏置,以及调整HMM模型中的概率参数。一般来说,训练数据集应该包含标注好的语音样本和它们对应的文本标签。 最后,通过将测试音频样本输入到训练好的DNN-HMM模型中,可以进行语音识别。根据模型输出的预测结果,可以将其转换为文本或其他相应的形式。 总结来说,实现DNN-HMM的代码需要搭建DNN模型、创建HMM模型和概率参数、使用Viterbi算法进行语音识别,以及进行模型训练和测试。通过这些步骤,可以实现一个基于DNN-HMM语音识别系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值