基于MFCC系数的欧氏距离测量
基于MFCC系数的距离测量
所需项目文件以及语料我放在了自己的github上了:基于MFCC系数的距离测量
1 简介
1.1 本地文档简介
- 语料:包含本次实验所需要的语料
- Code:包含了本次实验的matlab代码
- pr3_3_2.m 主程序,计算两个语音之间的匹配比较
- mfcc_m.m 计算语音的MFCC特征
- mel_dist.m Mel距离,基于欧氏距离
- mfccDate.mat 提取的MFCC数据,24维
- photo 实验结果截图
1.2 距离度量简介
距离度量(Distance)用于衡量个体在空间上存在的距离,距离越远说明个体间的差异越大。欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。公式如下:
dist(X,Y)=∑i=1n(xi−yi)2\operatorname{dist}(X, Y)=\sqrt{\sum_{i=1}^{n}\left(x_{i}-y_{i}\right)^{2}} dist(X,Y)=i=1∑n(xi−yi)2
因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。
for i=1 : fn1 % 计算s1与s2之间每帧的Mel距离Cn1=Ccep1(i,:);Cn2=Ccep2(i,:);Dstu=0;for k=1 : numDstu=Dstu+(Cn1(k)-Cn2(k))^2;endDcep(i)=sqrt(Dstu); % 每帧的Mel距离
end
2 同一个样本不同人发音(字)
2.1 语料介绍
语音是“唐”字的发音,由两个人发音组成,为了实验方便,将两个语音长度统一,采样率为44100Hz。
2.2 matlab代码
%
% pr3_3_2
clear all;
clc; close all;%[x1,fs]=audioread('D:\Desktop\学习汇报\语料\元音\i1.wav'); % 读入信号s1-\i1\
%x2=audioread('D:\Desktop\学习汇报\语料\元音\i2.wav'); % 读入信号s2-\i2\
[x1,fs]=audioread('D:\Desktop\学习汇报\语料\同一个样本不同人发音\tang01.wav');
x2=audioread('D:\Desktop\学习汇报\语料\同一个样本不同人发音\tang02.wav');
x3=audioread('D:\Desktop\学习汇报\语料\元音\a1.wav'); % 读入信号a1-\a1\
wlen=1479;%200 % 帧长
inc=626; %80 % 帧移
x1=x1/max(abs(x1)); % 幅值归一化
x2=x2/max(abs(x2));
x3=x3/max(abs(x3));
% 计算/i1/与/i2/之间的匹配比较
[Dcep,Ccep1,Ccep2]=mel_dist(x1,x2,fs,16,wlen,inc);fprintf('/tang01/与/tang02/之间的mel平均距离是%d\n',mean(Dcep));
figure(1)
plot(Ccep1(8,:),Ccep2(8,:),'k+'); hold on
plot(Ccep1(14,:),Ccep2(14,:),'kx');
plot(Ccep1(24,:),Ccep2(24,:),'k^');
plot(Ccep1(30,:),Ccep2(30,:),'kh');
% plot(Ccep1(3,:),Ccep2(3,:),'k+'); hold on
% plot(Ccep1(7,:),Ccep2(7,:),'kx');
% plot(Ccep1(12,:),Ccep2(12,:),'k^');
% plot(Ccep1(16,:),Ccep2(16,:),'kh');
legend('第8帧','第14帧','第24帧','第30帧','Location','NorthWest')
%legend({'第3帧','第7帧','第12帧','第16帧'},2)
xlabel('信号tang01');ylabel('信号tang02')
axis([-12 12 -12 12]);
line([-12 12],[-12 12],'color','k','linestyle','--');
title('/tang01/与/tang02/之间的MFCC参数匹配比较')
2.3 结果显示
每个音都有34帧,我从其中选择了4帧来绘图,把两个音在这些帧中前16个MFCC参数显示出来。从图中可以看出,两个音是较匹配的,他们的系数总体分布在$45^{\circ}$线附近。
不同人说同一个字平均欧氏距离:
/tang01/与/tang02/之间的mel平均距离是2.316534e+01
3 同一个样本同一个人发音
3.1 语料介绍
语音是“i”字的发音,由同一个人发音组成,为了实验方便,将两个语音长度统一,采样率为8000Hz。分为19帧,帧长200,帧移80.
2.2 实验结果
每个音都有19帧,我从其中选择了4帧来绘图,把两个音在这些帧中前16个MFCC参数显示出来。从图中可以看出,两个音是较匹配的,他们的系数分布在$45^{\circ}$线附近。
同一个样本同一个人发音平均欧氏距离:
/i1/与/i2/之间的mel平均距离是7.171738e+00
4 同一个人不同样本(单音节)
4.1 语料介绍
语音是“b”、"c"的发音,由同一个人发音组成,为了实验方便,将两个语音长度统一,采样率为16000Hz。分为24帧,帧长1479,帧移626.
4.2 实验结果
每个音都有24帧,从图中可以看出,两个音是不匹配的,他们的系数分布较广。
同一个人不同样本平均欧氏距离(单音节):
/a/与/b/之间的mel平均距离是2.968683e+01
5 同一个人不同样本(字)
4.1 语料介绍
语音是“唐”、"维"的发音,由同一个人发音组成,为了实验方便,将两个语音长度统一,采样率为44100Hz,分为34帧.
4.2 实验结果
从图中可以看出,两个音是不匹配的,他们的系数分布较广。
同一个人不同样本平均欧氏距离(字):
/tang02/与/wei/之间的mel平均距离是2.259611e+01
6 总结
6.1 欧氏距离总结
不同人说同一个样本平均欧氏距离(字):2.316534e+01
同一个人不同样本平均欧氏距离(字):2.259611e+01
同一个人不同样本平均欧氏距离(单音节):2.968683e+01
同一个样本同一个人发音平均欧氏距离(单音节):7.171738e+00
欧氏距离不适合比较单字或者单音节
6.2 MFCC系数总结
如果是同一个字或者同一个音节,MFCC系数总体都分布在45∘45^{\circ}45∘线附近,适合做实验比较。
基于MFCC系数的欧氏距离测量相关推荐
- 【语音识别】基于MFCC和MEL倒频系数实现声纹识别附matlab代码
1 内容介绍 提出了以Mel频率倒谱系数(Mel Frequency Cepstrum Coefficients,MFCC)和MEL倒频系数作为特征提取技术,以KNN作为分类器的语音识别方法,实验结果 ...
- [声纹识别]基于MFCC的声纹识别算法
Mel频率倒谱系数(melfrequency cepstral coefficients,MFCC)是声音的短期功率谱的表示,基于非线性频谱上的对数功率谱的线性余弦变换.在自动语音识别领域,MFCC是 ...
- 切削力matlab数据处理,基于MATLAB的切削力测量实验数据的处理及分析
基于MATLAB 的切削力测量实验数据的处理及分析 卞化梅 , 牛小铁 , 陈金英 , 郭 勇 (北京工业职业技术学院 , 北京 100042) 摘 要 : 以曲面铣削加工实验数据的处理为例 ,介绍了 ...
- 基于图卷积网络的测量与先验知识相结合的故障诊断方法
目录 Graph Convolutional Network-Based Method for Fault Diagnosis Using a Hybrid of Measurement and Pr ...
- 【语音识别】基于mfcc特征模板匹配算法实现声纹识别matlab源码含GUI
在任意一个Automatic speech recognition 系统中,第一步就是提取特征.换句话说,我们需要把音频信号中具有辨识性的成分提取出来,然后把其他的乱七八糟的信息扔掉,例如背景噪声啊, ...
- 【语音识别】基于MFCC和SVM的特定人性别识别matlab源码
一.简介 MFCC(Mel-frequency cepstral coefficients):梅尔频率倒谱系数.梅尔频率是基于人耳听觉特性提出来的, 它与Hz频率成非线性对应关系.梅尔频率倒谱系数(M ...
- Python_无监督学习_基于轮廓系数法的K-means聚类实现
K-means算法属于无监督学习,根本思想是将数据集中数据分为k组,计算各组元素到其聚类中心的欧氏距离. 在K-means方法中主要需要解决的问题是确定合适的分组数k,此时引入轮廓系数,通过计算不同分 ...
- 当复选框中打勾时后面自动显示y或者n_基于轮廓系数确定K-Means聚类中的K
一.概述 K-Means(K均值)是机器学习中一种常见的无监督算法,它能够将未知标签的数据,根据它们的特征分成不同组,每一组数据又称为"簇",每一簇的中心点称为"质心&q ...
- 基于DCT系数的实时监控中运动目标检测
本文的主要内容来自2009 Advanced Video and Signal Based Surveillance会议的一篇论文"Real-Time Moving Object Detec ...
最新文章
- 优雅地分离tableview回调
- 运用层通过shell脚本直接操控gpio
- 浅谈HASH算法与CSDN密码泄漏事件
- SAP Spartacus buildCmsStructure 构建逻辑
- es6 --- forEach的实现
- 【HDU - 4055】Number String(dp,思维)
- 显示器接口VGA、DVI、HDMI、DP
- cookie 保存导航菜单的展开状态
- php错误日志和php-frm错误日志,错误amp;日志
- 2022五一数学建模b题完成代码
- Java NIO、BIO介绍
- Tangent Space的基向量计算方法
- 快速pow算法c语言_c语言pow(c语言中用pow算法求)
- 计算机专业专业课代号408,2020武汉大学计算机专业课改考408
- 10 Guidelines for Better Website Background Videos
- java线程池中的Worker解析
- k8s cpu 和内存资源说明
- AirTest Poco定位 和启动方式
- 华为cpe虚拟服务器,华为5G CPE Pro:让你不用换手机就能体验5G网络
- 人生第一个 Offer :作为算法工程师,去大公司 or 创业公司?
热门文章
- 字符序列pascal程序
- java开发流程图_Java 详解 JVM 工作原理和流程
- 把地图中的道路以线条提取出来_入围 ICRA 2019 最佳论文:MIT利用粗粒度地图实现自动驾驶...
- EF 学习 实用脚本
- 面试 | 蚂蚁金服面试经历
- 《图说VR入门》——DeepoonVR的大鹏(陀螺仪)枪
- 新版ADT出现appcompat_v7的问题
- STL之list学习(2)(list代码实现)(只剩最后一步,迭代器升级!!)
- 纯ActionScript3.0打造的工作流程编辑器(WorkFlowEdit V1.0Bata1.0)
- Winfrom实用代码项目