基于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系数的欧氏距离测量相关推荐

  1. 【语音识别】基于MFCC和MEL倒频系数实现声纹识别附matlab代码

    1 内容介绍 提出了以Mel频率倒谱系数(Mel Frequency Cepstrum Coefficients,MFCC)和MEL倒频系数作为特征提取技术,以KNN作为分类器的语音识别方法,实验结果 ...

  2. [声纹识别]基于MFCC的声纹识别算法

    Mel频率倒谱系数(melfrequency cepstral coefficients,MFCC)是声音的短期功率谱的表示,基于非线性频谱上的对数功率谱的线性余弦变换.在自动语音识别领域,MFCC是 ...

  3. 切削力matlab数据处理,基于MATLAB的切削力测量实验数据的处理及分析

    基于MATLAB 的切削力测量实验数据的处理及分析 卞化梅 , 牛小铁 , 陈金英 , 郭 勇 (北京工业职业技术学院 , 北京 100042) 摘 要 : 以曲面铣削加工实验数据的处理为例 ,介绍了 ...

  4. 基于图卷积网络的测量与先验知识相结合的故障诊断方法

    目录 Graph Convolutional Network-Based Method for Fault Diagnosis Using a Hybrid of Measurement and Pr ...

  5. 【语音识别】基于mfcc特征模板匹配算法实现声纹识别matlab源码含GUI

    在任意一个Automatic speech recognition 系统中,第一步就是提取特征.换句话说,我们需要把音频信号中具有辨识性的成分提取出来,然后把其他的乱七八糟的信息扔掉,例如背景噪声啊, ...

  6. 【语音识别】基于MFCC和SVM的特定人性别识别matlab源码

    一.简介 MFCC(Mel-frequency cepstral coefficients):梅尔频率倒谱系数.梅尔频率是基于人耳听觉特性提出来的, 它与Hz频率成非线性对应关系.梅尔频率倒谱系数(M ...

  7. Python_无监督学习_基于轮廓系数法的K-means聚类实现

    K-means算法属于无监督学习,根本思想是将数据集中数据分为k组,计算各组元素到其聚类中心的欧氏距离. 在K-means方法中主要需要解决的问题是确定合适的分组数k,此时引入轮廓系数,通过计算不同分 ...

  8. 当复选框中打勾时后面自动显示y或者n_基于轮廓系数确定K-Means聚类中的K

    一.概述 K-Means(K均值)是机器学习中一种常见的无监督算法,它能够将未知标签的数据,根据它们的特征分成不同组,每一组数据又称为"簇",每一簇的中心点称为"质心&q ...

  9. 基于DCT系数的实时监控中运动目标检测

    本文的主要内容来自2009 Advanced Video and Signal Based Surveillance会议的一篇论文"Real-Time Moving Object Detec ...

最新文章

  1. 优雅地分离tableview回调
  2. 运用层通过shell脚本直接操控gpio
  3. 浅谈HASH算法与CSDN密码泄漏事件
  4. SAP Spartacus buildCmsStructure 构建逻辑
  5. es6 --- forEach的实现
  6. 【HDU - 4055】Number String(dp,思维)
  7. 显示器接口VGA、DVI、HDMI、DP
  8. cookie 保存导航菜单的展开状态
  9. php错误日志和php-frm错误日志,错误amp;日志
  10. 2022五一数学建模b题完成代码
  11. Java NIO、BIO介绍
  12. Tangent Space的基向量计算方法
  13. 快速pow算法c语言_c语言pow(c语言中用pow算法求)
  14. 计算机专业专业课代号408,2020武汉大学计算机专业课改考408
  15. 10 Guidelines for Better Website Background Videos
  16. java线程池中的Worker解析
  17. k8s cpu 和内存资源说明
  18. AirTest Poco定位 和启动方式
  19. 华为cpe虚拟服务器,华为5G CPE Pro:让你不用换手机就能体验5G网络
  20. 人生第一个 Offer :作为算法工程师,去大公司 or 创业公司?

热门文章

  1. 字符序列pascal程序
  2. java开发流程图_Java 详解 JVM 工作原理和流程
  3. 把地图中的道路以线条提取出来_入围 ICRA 2019 最佳论文:MIT利用粗粒度地图实现自动驾驶...
  4. EF 学习 实用脚本
  5. 面试 | 蚂蚁金服面试经历
  6. 《图说VR入门》——DeepoonVR的大鹏(陀螺仪)枪
  7. 新版ADT出现appcompat_v7的问题
  8. STL之list学习(2)(list代码实现)(只剩最后一步,迭代器升级!!)
  9. 纯ActionScript3.0打造的工作流程编辑器(WorkFlowEdit V1.0Bata1.0)
  10. Winfrom实用代码项目