精华内容
下载资源
问答
  • 语音识别】基于高斯混合模型(GMM)的语音识别matlab源码.md
  • 文章目录前言隐马尔可夫(HMM)马尔可夫链隐马尔可夫HMM中的语音识别(孤立词)HMM 语音识别过程GMM总结参考文献 前言 隐马尔科夫链结合语言识别,在细节上,涉及到的知识挺多,没有一定的时间投入难以很好的去把握。...
  • 基于高斯混合模型(GMM)的说话人识别系统,MATLAB语音识别代码,机器学习GMM模型。在说话人识别中,不同说话人的差异主要表现在其短时语音谱的差异,而这又可以用每个说话人的短时谱特征矢量所具有的概率密度函数来...
  • 前面两节介绍了语音识别的一些概念,并进行数据的预处理。现在我们有了音频数据转化为MFCC特征向量的文件,以及每个文件对应的音子文件信息。 现在进入模型构建部分,包括两个核心部分,一是如何表示音子概率分布;...

    前面两节介绍了语音识别的一些概念,并进行数据的预处理。现在我们有了音频数据转化为MFCC特征向量的文件,以及与每个特征文件相对应的音素信息文件。

    现在进入模型构建部分,包括两个核心部分,一是如何表示音素概率分布;二是如何建模音素间的转移关系。

    首先,给个总结性的描述。最初的系统是通过隐马尔可夫模型(HMM)来描述音素间的转移概率,通过单高斯(GSM)来建模每个音素的状态的发生概率,就是利用一个多维正态分布来拟合每个音素的概率;它是HMM模型中的发射概率(或者叫混淆概率)。

    单高斯模型,就是多维正态分布。如果知道了一组观察值和它们对应的标签,用高斯模型来拟合这个类别的概率分布情况,那么就通过这些样本来求高斯模型的均值和协方差。测试/预测时,通过计算每个观察数据对应在哪个模型下的值最大(最大似然概率),就可以认为它属于哪里个类(不考虑序列转移的概率的前提下)。

     上图演示了二维高斯分布在不同模型参数下的形状。现在就是要为每个音素状态构建一个模型,本质就是确定它的参数。这篇博客写的比较清楚,认真推理应该是很容易理解的,找一个维度少点的例子,比如三个或者四个的随机向量,计算推导下就应该能明白了。简单来说就通过已有的数据通过加减乘除得到每个高斯模型的均值向量和协方差矩阵。如果我们得到的数据是标准好的每个音素状态的特征向量,那么到这里音素建模就已经完成了。但是,在语音识别过程中为音频文件标注大量音素级别、尤其是音素状态级别的数据,成本是非常高的,不现实的。因此需要引入其他的方法来训练高斯模型,就是计算每个模型的参数。

    同时,语音识别还需要考虑音素的前后概率关系,得到一个总体的概率值最大情况。

    到现在为止,我们提到了隐马尔可夫(HMM)模型、高斯模型(GSM),音素模型,还提到音素的不同状态。可能初学者对这些术语以及它们之间的关系是非常模糊的,概念不清是学习新知识的最大障碍。介绍HMM模型是一个比较大的工程,可能要好几十页纸才能彻底讲明白。本文重点是如何利用HMM来进行音素建模,进而完成语音识别功能,了解其中的大概原理包括训练、评估、预测算法就可以了。好好看一下这篇博客概念上大概了解的也差不多了。

    HTK的经典HMM音素模型是包括5个状态,包括一个输入状态和一个输出状态,分别标记为1和5,它们俩是没有发射概率的,其中输入状态就是一个过渡,没有自循环,直接以概率1转移到下一个状态,而输出状态是模型的终结点,没有转移到其他状态的概率,通过这两个状态可以把多个音素拼接起来形成一个链。中间的2、3、4状态有转移,每个状态对应有发射概率。因此重点就是如何计算得到状态转移概率、发射概率、初始概率和设置状态数。

    从HTK的角度,每个音素模型的每个状态id是全局唯一的。

    按照构建拨号系统的步骤继续向下走,建立一个模型描述文件proto。这个文件描述了HMM模型的拓扑结构,~o<VecSize>描述观察向量的维度;~h “proto”开头,标签<BeginHMM>中描述了如下信息:有几个隐藏状态,状态转移矩阵的行列数等。这个文件就是后面各个音素模型的模板,参数会不同,比如每个状态的GSM参数(均值和方差),状态转移矩阵的参数,但是结构都是一样的。

    在没有音素级标注语料的情况下,HTM中通过一个叫flat start方式初始化该模型,其实就是计算全局的均值和方差作为模型的初始值。命令如下。

    HCompV -C config -f 0.01 -m -S train.scp -M .\hmms\hmm0 proto

    HCompV命令有一组选项。-f 选项将方差下限(称为vFloors)设为全局方差的0.01倍,这组向量值将被用于后面步骤中方差估计的下限值。-m选项指定均值和方差同时计算。定存储在hmm0目录下的新原始模型后,将会构造名为hmmdefs的Master Macro File (MMF) 文件,hmmdefs中包含需要的每个单音素模型(包括”sil”)的副本,每个模型都复制了新的原始模型,且作了重新标记。MMF文件的格式和MLF文件的格式类似,而且也出于类似的目的,避免了单独定义模型导致数量过大的HMM定义文件。

    展开全文
  • 一、简介 1 高斯混合模型概述 高斯密度函数估计是一种参数化模型。高斯混合模型(Gaussian ...类似于聚类,根据高斯概率密度函数(Probability Density Function, PDF)参数不同,每一个高斯模型可以看作一种类

    一、简介

    1 高斯混合模型概述

    高斯密度函数估计是一种参数化模型。高斯混合模型(Gaussian Mixture Model, GMM)是单一高斯概率密度函数的延伸,GMM能够平滑地近似任意形状的密度分布。高斯混合模型种类有单高斯模型(Single Gaussian Model, SGM)和高斯混合模型(Gaussian Mixture Model, GMM)两类。类似于聚类,根据高斯概率密度函数(Probability Density Function, PDF)参数不同,每一个高斯模型可以看作一种类别,输入一个样本x,即可通过PDF计算其值,然后通过一个阈值来判断该样本是否属于高斯模型。很明显,SGM适合于仅有两类别问题的划分,而GMM由于具有多个模型,划分更为精细,适用于多类别的划分,可以应用于复杂对象建模。
    1.1 单高斯模型
    在这里插入图片描述
    1.2 高斯混合模型
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    2 高斯混合模型参数估计

    2.1 样本分类已知情况下的GMM
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、源代码

    function mix=gmm_init(ncentres,data,kiter,covar_type)
    %% 输入:
    % ncentres:混合模型数目
    % train_data:训练数据
    % kiter:kmeans的迭代次数
    %% 输出:
    % mix:gmm的初始参数集合
     
     
    [dim,data_sz]=size(data');
     
    mix.priors=ones(1,ncentres)./ncentres;
    mix.centres=randn(ncentres,dim);
    switch covar_type
    case 'diag'
      % Store diagonals of covariance matrices as rows in a matrix
      mix.covars=ones(ncentres,dim);
    case 'full'
      % Store covariance matrices in a row vector of matrices
      mix.covars=repmat(eye(dim),[1 1 ncentres]);
    otherwise
      error(['Unknown covariance type ', mix.covar_type]);  
    end
     
     
    % Arbitrary width used if variance collapses to zero: make it 'large' so
    % that centre is responsible for a reasonable number of points.
    GMM_WIDTH=1.0;
     
    %kmeans算法
    % [mix.centres,options,post]=k_means(mix.centres,data);
    [mix.centres,post]=k_means(mix.centres,data,kiter);
     
    % Set priors depending on number of points in each cluster
    cluster_sizes = max(sum(post,1),1);  % Make sure that no prior is zero
    mix.priors = cluster_sizes/sum(cluster_sizes); % Normalise priors
     
    switch covar_type
    case 'diag'
      for j=1:ncentres
       % Pick out data points belonging to this centre
       c=data(find(post(:,j)),:);
       diffs=c-(ones(size(c,1),1)*mix.centres(j,:));
       mix.covars(j,:)=sum((diffs.*diffs),1)/size(c,1);
       % Replace small entries by GMM_WIDTH value
       mix.covars(j,:)=mix.covars(j,:)+GMM_WIDTH.*(mix.covars(j,:)<eps);
      end 
    case 'full'
      for j=1:ncentres
       % Pick out data points belonging to this centre
       c=data(find(post(:,j)),:);
       diffs=c-(ones(size(c,1),1)*mix.centres(j,:));
       mix.covars(:,:,j)=(diffs'*diffs)/(size(c,1)+eps);
       % Add GMM_WIDTH*Identity to rank-deficient covariance matrices
       if rank(mix.covars(:,:,j))<dim
    	mix.covars(:,:,j)=mix.covars(:,:,j)+GMM_WIDTH.*eye(dim);
       end
      end
    otherwise
      error(['Unknown covariance type ', mix.covar_type]);
    end
     
    mix.ncentres=ncentres;
    mix.covar_type=covar_type;
     
    %=============================================================
    function [centres,post]=k_means(centres,data,kiter)
     
    [dim,data_sz]=size(data');
    ncentres=size(centres,1); %簇的数目
    [ignore,perm]=sort(rand(1,data_sz)); %产生任意顺序的随机数
    perm = perm(1:ncentres); %取前ncentres个作为初始簇中心的序号
    centres=data(perm,:); %指定初始中心点
    id=eye(ncentres); %Matrix to make unit vectors easy to construct
    for n=1:kiter
      % Save old centres to check for termination
      old_centres=centres; %存储旧的中心,便于计算终止条件
      
      % Calculate posteriors based on existing centres
      d2=(ones(ncentres,1)*sum((data.^2)',1))'+...
         ones(data_sz,1)* sum((centres.^2)',1)-2.*(data*(centres')); %计算距离
     
      % Assign each point to nearest centre
      [minvals, index]=min(d2', [], 1);
      post=id(index,:);
     
      num_points = sum(post, 1);
      % Adjust the centres based on new posteriors
      for j = 1:ncentres
        if (num_points(j) > 0)
          centres(j,:) = sum(data(find(post(:,j)),:), 1)/num_points(j);
        end
      end
     

    三、运行结果

    在这里插入图片描述

    展开全文
  • 基于高斯混合模型(GMM)的说话人识别实验
  • 都知道语音识别有GMM-HMM模型,也分别了解了什么是: GMM(混合高斯模型)https://blog.csdn.net/qq_37385726/article/details/89198387 MMC(马尔可夫链)...

    写在前面

    都知道语音识别有GMM-HMM模型,也分别了解了什么是:

    GMM(混合高斯模型) https://blog.csdn.net/qq_37385726/article/details/89198387

    MMC(马尔可夫链) https://blog.csdn.net/qq_37385726/article/details/89219056

    HMM(隐马尔可夫模型) https://blog.csdn.net/qq_37385726/article/details/89219695

    但是却发现不清楚GMM与HMM与语音识别有什么关系,更不知道GMM-HMM模型究竟是什么

    好像没有看到有系统讲解很清楚的博客

    于是我根据这些零散的学习,整理出了一套比较方便适于理解的系列博客。

    由于文章的主要内容均为借鉴,故标为转载。  

    原始整理为:qq_37385726

    转载请注明出处

    系列博客

    1. 语音识别之GMM-HMM模型(一):语音识别简介与混合高斯模型-GMM
    2. 语音识别之GMM-HMM模型(二):隐马尔科夫模型-HMM
    3. 语音识别之GMM-HMM模型(三):GMM-HMM模型应用于语音识别任务原理详解

    目录

    语音识别简介

    混合高斯模型

    GMM建模声学特征的理解



     

    语音识别简介

    自动语音识别(Automatic speech recongnition, ASR)技术时使人与人。人与机器交流的关键技术,它将声学波形转换为人类的文字。

    一个语音对话系统通常包括四个主要组成部分的一个或多个,即语音识别系统将语音转化为文本,语义理解系统提取用户说话的语义信息、文字转换系统将内容转化为语音、对话管理系统连接其他三个系统并完成与实际场景的沟通。

    语音识别系统主要有图2中的四部分组成,信号处理和特征提取、声学模型(AM)、语言模型(LM)和解码搜索部分。信号处理和特征提取部分以音频信号为输入,通过消除噪声和信道失真对语音进行增强,将信号从时域转化到频域,并为声学模型提取合适的特征向量。声学模型将声学和发音学(phonetics)进行整合,以特征向量作为输入,并为可变长特征序列生成声学模型分数。语言模型学习词与词间的相互关系,来评估序列的可能性。解码搜索对给定特征向量序列和若干假设次序列计算声学模型和语言模型分数,并输出得分最高的结果。

    声学模型的两个主要问题为特征向量序列可编程和音频信号的丰富变化性。前者可通过动态时间规整(DTW)或HMM解决。在过去,最流行的语音识别系统采用MFCC或RASTA-PLP作为特征向量,使用GMM-HMM作为声学模型。采用最大似然准则、序列鉴别性训练算法(MCE、MPE)等进行训练。现在流行的是分层鉴别性模型如深度神经网络模型。

     

     

    混合高斯模型

    随机变量可分为离散型随机变量, 连续型随机变量或混合型随机变量.如果连续型随机变量x的概率密度是

    那么它是服从正态分布或高斯分布的.

    一个标量连续随机变量x服从混合高斯分布,如果它的概率密度函数为:

    其中:

    混合权重和为1,即:

    混合高斯模型可以描述多模态性质的物理数据(如语音数据)。推广到多变量的多元混合高斯分布,其联合概率密度函数可写为:

    在实际计算中,若使用全协方差矩阵(非对角)将引入大量参数(约为MxD^2),因此可以使用对角协方差矩阵,当M很大时,亦可以限制所有的协方差矩阵为相同矩阵。

    对于多元混合高斯分布的参数估计即根据符合混合高斯分布的数据来确定模型参数的取值。此处主要介绍最大值期望算法(EM算法),它可以作为最大似然准侧估计方法的代表。EM算法是在给定确定数量的混合分布成分情况下去估计各个分布参数最通用的方法。

    该算法分为两个阶段,E阶段为期望计算阶段,M为最大化阶段,针对高斯混合分布的EM算法参数更新公式为:

    由上可以看出,这些公式本质上是对整个采样数据的加权平均的均值和协方差。

     

    GMM建模声学特征的理解

    原始的语音数据经过短时傅立叶变换或取倒谱后会成为特征序列,在忽略时序信息的条件下,GMM就非常适合拟合这样的语音特征。

    用GMM建模声学特征(Acoustic Feature)O1,O2,...,On,可以理解成:

    每一个特征是由一个音素确定的,即不同特征可以按音素来聚类。由于在HMM中音素被表示为隐变量(状态),故等价于:
    每一个特征是由某几个状态确定的,即不同特征可以按状态来聚类。

    则设P(O|Si)符合正态分布,则根据GMM的知识,O1,O2,...,On实际上就是一个混合高斯模型下的采样值。

    因此,GMM被整合进HMM中,用来拟合基于状态的输出分布。但若包含语音顺序信息的话,GMM就不再是一个好模型,因为它不包含任何顺序信息。若当给定HMM的一个状态后,若要对属于该状态的语音特征向量的概率分布进行建模,GMM仍不失为一个好的模型。

    展开全文
  • 自动语音识别(Automatic speech recongnition, ASR)技术时使人与人。人与机器交流的关键技术,它将声学波形转换为人类的文字。 一个语音对话系统通常包括四个主要组成部分的一个或多个,即语...

    欢迎大家关注我的博客 http://pelhans.com/ ,所有文章都会第一时间发布在那里~

    黄学东老师那本太厚了。。。自己根据需要先四处搜集学习吧~

    第一章 简介

    自动语音识别(Automatic speech recongnition, ASR)技术时使人与人。人与机器交流的关键技术,它将声学波形转换为人类的文字。

    一个语音对话系统通常包括四个主要组成部分的一个或多个,即语音识别系统将语音转化为文本,语义理解系统提取用户说话的语义信息、文字转换系统将内容转化为语音、对话管理系统连接其他三个系统并完成与实际场景的沟通。

    ![语音对话系统][hc](https://pelhans.com/img/in-post/deepspeech_ch1_ch2/deepspeech_ch1_ch2_2.jpg?cache-bust=1521450308078) 语音识别系统主要有图2中的四部分组成,信号处理和特征提取、声学模型(AM)、语言模型(LM)和解码搜索部分。信号处理和特征提取部分以音频信号为输入,通过消除噪声和信道失真对语音进行增强,将信号从时域转化到频域,并为声学模型提取合适的特征向量。声学模型将声学和发音学(phonetics)进行整合,以特征向量作为输入,并为可变长特征序列生成声学模型分数。语言模型学习词与词间的相互关系,来评估序列的可能性。解码搜索对给定特征向量序列和若干假设次序列计算声学模型和语言模型分数,并输出得分最高的结果。 声学模型的两个主要问题为特征向量序列可编程和音频信号的丰富变化性。前者可通过动态时间规整(DTW)或HMM解决。在过去,最流行的语音识别系统采用MFCC或RASTA-PLP作为特征向量,使用GMM-HMM作为声学模型。采用最大似然准则、序列鉴别性训练算法(MCE、MPE)等进行训练。现在流行的是分层鉴别性模型如深度神经网络模型。
    ![这里写图片描述](https://pelhans.com/img/in-post/deepspeech_ch1_ch2/deepspeech_ch1_ch2_1.jpg?cache-bust=1521450308078)

    第二章 混合高斯模型

    随机变量可分为离散型随机变量, 连续型随机变量或混合型随机变量.如果连续型随机变量x的概率密度是


    这里写图片描述

    那么它是服从正态分布或高斯分布的.

    一个标量连续随机变量x服从混合高斯分布,如果它的概率密度函数为:


    这里写图片描述

    其中:


    这里写图片描述

    混合权重和为1,即:


    这里写图片描述

    混合高斯模型可以描述多模态性质的物理数据(如语音数据)。推广到多变量的多元混合高斯分布,其联合概率密度函数可写为:


    这里写图片描述

    在实际计算中,若使用全协方差矩阵(非对角)将引入大量参数(约为MxD^2),因此可以使用对角协方差矩阵,当M很大时,亦可以限制所有的协方差矩阵为相同矩阵。

    对于多元混合高斯分布的参数估计即根据符合混合高斯分布的数据来确定模型参数的取值。此处主要介绍最大值期望算法(EM算法),它可以作为最大似然准侧估计方法的代表。EM算法是在给定确定数量的混合分布成分情况下去估计各个分布参数最通用的方法。

    该算法分为两个阶段,E阶段为期望计算阶段,M为最大化阶段,针对高斯混合分布的EM算法参数更新公式为:


    这里写图片描述

    由上可以看出,这些公式本质上是对整个采样数据的加权平均的均值和协方差。

    原始的语音数据经过短时傅立叶变换或取倒谱后会成为特征序列,在忽略时序信息的条件下,GMM就非常适合拟合这样的语音特征。因此,GMM被整合进HMM中,用来拟合基于状态的输出分布。但若包含语音顺序信息的话,GMM就不再是一个好模型,因为它不包含任何顺序信息。若当给定HMM的一个状态后,若要对属于该状态的语音特征向量的概率分布进行建模,GMM仍不失为一个好的模型。

    展开全文
  • 一、简介 1 高斯混合模型概述 高斯密度函数估计是一种参数化模型。高斯混合模型(Gaussian ...类似于聚类,根据高斯概率密度函数(Probability Density Function, PDF)参数不同,每一个高斯模型可以看作一种类别,
  • 2.1随机变量 基本概念: 随机标量变量:一个基于随机实验的实数函数或实数变量。 随机向量变量:彼此相关或...2.2高斯分布和混合高斯随机变量 正态分布(高斯分布):概率密度函数满足下式 多元(向量值)高斯随...
  • 语音识别 包括高斯混合模型语音识别系统
  • 子空间高斯混合模型在中文语音识别系统中的实现,肖云鹏,朱维彬,当前,语音识别系统主要采用隐马尔可夫模型作为声学建模以及声学解码的基本模型。但是在考虑上下文以后,细化模型的数量以及参数
  • 2. 声学模型基础知识(混合高斯模型、隐马尔科夫模型等); 3. 语音识别相关的深度神经网络(框架、应用); 4. 高级模型; 5. 语音识别中的训练、解码等的加速解决方案; 6.其它神经网络/语音识别的高级内容剖析。
  • 语音识别模型

    2020-03-09 16:44:42
    文章目录数字语音识别的基本步骤语音识别模型隐马尔可夫模型 数字语音识别的基本步骤 数字语音识别的基本模型如下图所示。首先对语音进行处理之后,使用声学模型进行解码,之后将音节与词表进行匹配得到词序列,最后...
  • AI大语音:不仅GMM可以,只要性质不太奇怪的混合模型一般都能近似任意分布。这个思想和泰勒展开、傅里叶变换是类似的,任何波形都可以用正弦波叠加表示,而且频率还是基频的整数倍。 利用高斯混合模型进行聚类,...
  • 本书从语音识别的基本理论出发,以“从理论到实用”为主线,讲解了国际上最新、最前沿的语音识别领域的关键技术,从语料库建立、语音信号预处理、特征提取、特征变换、模型建立等方面详细介绍了语音识别系统建立的...
  • 从语音信号声学特征空间的非线性流形结构特点...基于RM语料库的连续语音识别实验表明,在传统的高斯混合模型(GMM)和子空间高斯混合模型(SGMM),新声学模型在测试集上的平均词错误率分别相对下降了33.1%和9.2 %。
  • 最白话的语音识别入门—GMM模型前言一、高斯混合模型?二、训练思路1.我要用多少个高斯分布去建立高斯混合模型呢?2.每一个高斯分布在一个GMM中占据了多少分量?3.每一个高斯分布的参数是什么?4.迭代三、总结 文章...
  • 智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真代码
  • 语音识别声学模型介绍

    千次阅读 2020-06-07 01:00:13
    关于声学模型,主要有两个问题,分别是特征向量序列的可变长和音频信号的丰富变化性。可变长特征向量序列问题在学术上通常有动态时间规划...在过去,主流的语音识别系统通常使用梅尔倒谱系数(Mel-Frequency Cepstral C
  • 语音识别语音识别技术入门

    千次阅读 2021-01-24 18:25:32
    语音识别入门什么是语音 什么是语音 语音是语言的声学表现形式,是人类自然的交流工具,例如语音通信、人机语音交互。 相关概念有: 声学Acoustics 音频Audio 语音Speech 音频 采样率、量化位数、通道数 16KHZ...
  • 用MATLAB编程的GMM模型,在语音识别中发挥很大作用,采用的方法为高斯混合模型
  • 语音情感识别 通过特定人语音情感数据库的建立;语音情感特征提取;语音情感分类器的设计,完成了一个特定人语音情感识别的初步系统。对于单个特定人,可以识别平静、悲伤、愤怒、...其中分类器采用混合高斯分布模型
  • 高斯混合声纹识别系统各参数的研究,殷海宁,,高斯混合声纹识别系统是以高斯混合模型来对说话人个性特征进行存储、识别的说话人识别系统,本文首先从语音采集模块、声纹特征提
  • 高斯混合模型(GMM) 数据集 可以在上找到免费的ST美国英语语料库数据集(SLR45) 。 它是提供的免费的美国英语语料库,其中包含10位说话者(5位女性和5位男性)的讲话。 每个说话者大约有350种话语。 理论 语音...
  • 说话人识别,有问题留言哦
  • 提取特征,预测最大可能性并生成输入语音信号的模型被认为是配置自动语音识别系统(ASR)的最重要步骤。 本文利用MATLAB建立了一个自动阿拉伯语语音识别系统,并从19位阿拉伯语母语使用者中记录了24个阿拉伯语单词...
  • 语音识别基础(二):语音识别方法

    千次阅读 多人点赞 2020-07-02 15:01:25
    语音识别的全称是自动语音识别(Automatic Speech Recognition,ASR),说得多了, 就把“自动”省去了,认为“自动”是理所当然的了。语音识别属于序列转换技术,它将语音序列转换为文本序列。大体来说,这是一次...
  • 语音识别技术之声学模型

    万次阅读 2017-12-04 00:00:00
    本公众号已经改版,推出了线上线下课程,并且推出免费2个月广告服务业界优质产品。 ...编者:今年的INTERSPEECH于8月20日至24日在...从10月25日开始,阿里iDST语音团队和云栖社区将共同打造一系列语音技术分享会

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,010
精华内容 2,804
关键字:

高斯模型语音识别