【语音识别】高斯混合模型(GMM)说话人识别【含Matlab源码 574期】

news2025/2/28 5:16:23

⛄一、高斯混合模型简介

GMM基本框架
在这里插入图片描述
类似的还有GMM-UBM(Universal background model)算法,其与GMM的区别在于:对L类整体样本训练一个大的GMM,而不像GMM对每一类训练一个GMM模型。SVM的话MFCC作为特征,每一帧作为一个样本,可以借助VAD删除无效音频段,直接训练分类。近年来也有利用稀疏表达的方法:
在这里插入图片描述

⛄二、部分源代码

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


## ⛄三、运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210319121526538.JPG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI=,size_16,color_FFFFFF,t_70#pic_center)

## ⛄四、matlab版本及参考文献
**1 matlab版本**
2014a

**2 参考文献**
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.

**3 备注**
简介此部分摘自互联网,仅供参考,若侵权,联系删除

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

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

相关文章

golang的new和make

golang 变量定义的方式 可以通过 var变量名称变量类型 进行声明变量&#xff0c;当我们没有给它赋值的时候&#xff0c;它们的结果是变量类型的零值&#xff0c;例如&#xff1a; string 的零值是"",int 的零值是0&#xff0c;引用类型的零值是nil。 前面两种类型…

Android加载第三方so库

本篇文章使用的android studio版本是:Android Studio Bumblebee | 2021.1.1 Patch 2 上一篇文章&#xff1a;Android开发java调用C简单示例 演示了java调C&#xff0c;那么so文件能否复用到别的项目了&#xff1f; 这次我们尝试用上一篇文章生成的so库&#xff0c;调用里面的…

APK 签名 v1 v2 步骤

APK 签名 v1 v2 步骤 需要工具 **apksigner.jar jarsinger.exe keytool.exe zipalign.exe ** 1.生成 keystore keytool -genkey -v -keystore my.keystore -alias liuhan -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -dname "cnTest,ouTest,cCA" -validity …

【机器学习入门项目10例】(六):KMeans聚类

💥 项目专栏:【机器学习入门项目10例】 文章目录 一、KMeans聚类二、数据集介绍三、KMeans聚类算法介绍四、定义KMeans模型4.1 kmeans算法入口4.2 初始化簇4.3 计算DBI优化指标4.4 计算每个样本到簇中心的距离4.5 更新每个样本所属的簇分类4.6 更新每个簇的中心4.7 官方实现…

百行代码实现VLC简易视频播放器【详细环境配置过程+可执行源码注释完整】

文章目录❓什么是VLC&#x1f680;VLC 库的集成⭐VLC环境配置演示【win10系统vs2017win64】&#x1f34e;VLC 库的基本使用&#x1f382;视频播放器实现⭐自定义函数Unicode2Utf8讲解&#x1f3e0;总结❓什么是VLC VLC 是 Video Lan Client 的缩写&#xff0c;原先是几个法国的…

学生HTML网页作业作品:HTML+CSS网站设计与实现【红色喜庆邀请函 3页】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

朗道-西格尔零点猜想(the Landau-Siegel Zeros Conjecture)

1 简介 朗道-西格尔零点猜想&#xff08;the Landau-Siegel Zeros Conjecture&#xff09;&#xff0c;是一个数学难题。 要理解朗道-西格尔零点猜想&#xff0c;首先需要理解黎曼猜想&#xff0c;进而需理解广义黎曼猜想&#xff0c;以及狄利克雷L函数。断言L函数没有异常零…

【OneDrive篇】OneDrive禁用个人保管库(网页端)

【OneDrive篇】OneDrive禁用"个人保管库"&#xff08;网页端&#xff09; 最近OneDrive个人保管库一直同步出错&#xff0c;把文件全部移出来还是一样&#xff0c;就选择直接禁用"个人保管库"功能了—【蘇小沐】 文章目录【OneDrive篇】OneDrive禁用"…

Windowns编译OpenSSL

前言 开发过程中需要上传数据&#xff0c;URL是https的&#xff0c;Qt默认是http网络请求&#xff0c;访问https需要用到SSL认证&#xff0c;而Qt默认不支持&#xff0c;需要自己编译OpenSSL库。 一、下载OpenSSL 环境&#xff1a;Qt 5.12.2 MSVC 2017,32bit ,可通过下面代码…

[附源码]Python计算机毕业设计高校国防教育管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

关于webpack(v5.74.0)的钩子在插件中的应用

常用监听钩子 compiler 钩子 compiler.hooks.entryOption 在 webpack 选项中的 entry 被处理过之后调用。一般用来获取入口。 compiler.hooks.compile beforeCompile 之后立即调用&#xff0c;但在一个新的 compilation 创建之前。这个钩子 不会 被复制到子编译器。能获取…

C++智能指针之shared_ptr

C智能指针之shared_ptr前言一、Shared_ptr1.1 shared_ptr类的操作1.2 make_shared函数1.3 shared_ptr的拷贝赋值1.4 shared_ptr的自动销毁对象内存机制1.5 使用动态生存期的资源的类1.6 shared_ptr与new结合使用1.7 不要混合使用普通/智能指针1.8 不要使用 get 初始化另一个智能…

Keras深度学习实战(38)——图像字幕生成

Keras深度学习实战&#xff08;38&#xff09;——图像字幕生成0. 前言1. 模型与数据集分析1.1 数据集分析1.2 模型分析2. 实现图像字幕生成模型2.1 数据集加载与预处理2.2 模型构建与训练3. 使用束搜索生成字幕3.1 束搜索原理3.2 利用束搜索改进预测结果小结系列链接0. 前言 …

Springboot——Controller层开发、请求与响应、RESTful开发规范

目录 一、入门案例&#xff08;小了解&#xff0c;没啥用&#xff09; 1.1 创建Springboot工程 1.2 导入maven坐标 1.3 controller层代码 1.4 postman测试 二、 REST常用注解 2.1 Controller 2.2 RequestMapping&#xff08;请求映射路径&#xff09; 2.3 Response…

Python学习基础笔记十三——函数

1、函数的定义&#xff1a; 函数是一段具有特定功能的、可重用的语句组。 说明&#xff1a;过程语言&#xff0c;程序员是按照顺序一行一行的编写代码&#xff0c;然后是顺序执行&#xff0c;很容易出现大量重复的代码行&#xff0c;那么有人就考虑将相同的代码提取出来&…

Mybatis源码解析(六):查询数据库主流程

Mybatis源码系列文章 手写源码&#xff08;了解源码整体流程及重要组件&#xff09; Mybatis源码解析(一)&#xff1a;环境搭建 Mybatis源码解析(二)&#xff1a;全局配置文件的解析 Mybatis源码解析(三)&#xff1a;映射配置文件的解析 Mybatis源码解析(四)&#xff1a;s…

.NET 6 支持Cookie与JWT混合认证、授权的方法

从.NET 5开始&#xff0c;.Net Core 与.NET Fremework 合并成了 .NET 5&#xff0c;所以标题也很让人尴尬&#xff0c;不知道该写成是.NET Core还是.NET X。因为这个方法支持.NET 5、6、7。 目录前言Cookie 认证JWT认证总结前言 不知道大家有没有过这样的需求&#xff0c;为了…

基于matlab的异步(感应)电机直接转矩控制系统

目 录 摘要 I 第1章 绪论 1 1.1 课题研究背景 1 1.2直接转矩控制技术的发展现状 1 1.2.1直接转矩控制的现状及发展趋势 1 1.2.2目前的热点研究问题及解决方法 2 1.3本文研究的主要内容 3 第2章 直接转矩控制系统理论 4 2.1概述 4 2.2 异步电动机的数学模型 4 2.3 逆变器的数学模…

【机器学习项目实战10例】(三):基于K近邻的葡萄酒质量检测项目

💥 项目专栏:【机器学习项目实战10例】 文章目录 一、基于K近邻的葡萄酒质量检测项目二、数据集介绍三、导包四、读取数据五、绘制空间分布六、划分训练集、测试集七、构建K近邻模型八、绘制聚类效果九、网格搜索一、基于K近邻的葡萄酒质量检测项目 葡萄酒数据集是一个经典…

[附源码]SSM计算机毕业设计实验教学过程管理平台JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…