【说话人识别】基MFCC特征最近邻说话人识别系统含Matlab源码
【说话人识别】基MFCC特征最近邻说话人识别系统含Matlab源码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
说话人识别又称声纹识别,是由计算机利用语音勃兴中所包含的反映特定说话人生理和行为特征的语音特征参数来自动识别说话人身份的技术.Mel频率倒谱系数(MFCC)分析着眼于人耳的听觉特性,依据听觉试验结果来分析语音得倒谱,获取较高的识别率和较好的噪声鲁棒性.本文通过对MFCC特征参数的提取过程的介绍,提出了一种基于MFCC的说话人识别算法.
2 部分代码
function [x1,x2]=vad1(
x
,framelen,framelnc)
% 幅度归一化[-
1
,
1
]
1
x
=double(
x
);
x
=
x
/max(
abs
(
x
));
%常数设置
%framelen=
256
;
%framelnc=
100
;
amp1=
10
;
amp2=
2
;
zcr1=
10
;
zcr2=
5
;
maxsilence=
3
;%3*
10
ms=
30
ms
minlen=
15
; %15*
10
ms=
150
ms
status=
0
;
count=
0
;
silence=
0
;
%计算过零率
tmp1=enframe(
x
(
1
:
length
(
x
)-
1
),framelen,framelnc);
tmp2=enframe(
x
(
2
:
length
(
x
)),framelen,framelnc);
signs=(tmp1.*tmp2)<
0
;
diffs=(tmp1-tmp2)>
0
.
02
;
zcr=sum(signs.*diffs,
2
);
%size(tmp1)
%计算短时能量
amp=sum(
abs
(enframe(filter([
1
-
0
.
9375
],
1
,
x
),framelen,framelnc)),
2
);
%size(amp)
%调整能量门限
amp1=min(amp1,max(amp)/
4
);
amp2=min(amp2,max(amp)/
8
);
%开始端点检测
x1=
0
;
x2=
0
;
for
n=
1
:
length
(zcr)
goto
=
0
;
switch status
case {
0
,
1
}
if
amp(n)>amp1 %确信进入语音段
x1=max(n-count-
1
,
1
);
status=
2
;
silence=
0
;
count=count+
1
;
elseif amp(n)>amp2 | zcr(n)>zcr2 %可能处于语音段
status=
1
;
count=count+
1
;
else
status=
0
;
count=
0
;
end
case
2
, %2=语音段
if
amp(n)>amp2 | zcr(n)>zcr2 %保持在语音段
count=count+
1
;
else
silence=silence+
1
;
if
silence<maxsilence
count=count+
1
;
elseif count<minlen
status=
0
;
silence=
0
;
count=
0
;
else
status=
3
;
end
end
case
3
,
break
;
end
end
count=count-silence/
2
;
x2=x1+count-
1
;
subplot(
3
,
1
,
1
)
plot(
x
)
axis([
1
length
(
x
) -
1
1
])
line([x1*framelnc x1*framelnc],[-
1
1
],
’color’
,
’red’
);
line([x2*framelnc x2*framelnc],[-
1
1
],
’color’
,
’red’
);
ylabel(
’原始信号’
)
text(x1*framelnc,
0
.
5
,
’起始端点 ightarrow’
,...
’HorizontalAlignment’
,
’right’
)
text(x2*framelnc,
0
.
5
,
’leftarrow 结束端点 ’
,...
’HorizontalAlignment’
,
’left’
)
subplot(
3
,
1
,
2
)
plot(amp);
axis([
1
length
(amp)
0
max(amp)])
line([x1 x1],[min(amp),max(amp)],
’color’
,
’red’
);
line([x2 x2],[min(amp),max(amp)],
’color’
,
’red’
);
ylabel(
’短时能量’
)
text(x1,max(amp)/
2
,
’起始端点 ightarrow’
,...
’HorizontalAlignment’
,
’right’
)
text(x2,max(amp)/
2
,
’leftarrow 结束端点 ’
,...
’HorizontalAlignment’
,
’left’
)
subplot(
3
,
1
,
3
)
plot(zcr)
axis([
1
length
(zcr)
0
max(zcr)])
line([x1 x1],[min(zcr),max(zcr)],
’color’
,
’red’
);
line([x2 x2],[min(zcr),max(zcr)],
’color’
,
’red’
);
ylabel(
’过零率’
)
text(x1,max(zcr)/
2
,
’起始端点 ightarrow’
,...
’HorizontalAlignment’
,
’right’
)
text(x2,max(zcr)/
2
,
’leftarrow 结束端点 ’
,...
’HorizontalAlignment’
,
’left’
)
3 仿真结果
4 参考文献
[1]张晶, 董金明, 冯文全. 基于MFCC的说话人识别系统研究[C]// 全国dsp应用技术联合学术会议. 中国航空学会;中国电子学会, 2008.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
