资源简介

基于Matlab的声纹锁,利用MFCC作为特征,利用VQ矢量量化方法进行数据处理,再结合欧式距离做模式匹配,最终实现文本相关的声纹锁。

资源截图

代码片段和文件信息

function M3 = blockframes(s fs m n)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% function: blockframes() Puts the signal into frames 分帧加窗
% input :   s:输入的语音数字信号   fs:采样频率  m:帧移  n:窗长
% output:   M3:分帧后信号进行加窗并求出频率的矩阵
% author:   Christian Cornaz
% rewriter: yuhansgg(Shi Gaige)
% time:     2017.4.9
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%分帧函数开始处
l = length(s);  %l信号s的长度
nbframe = floor((l - n) / m) + 1;
%计算帧数floor函数是取接近A的整数,但又不是四舍五入;
for i = 1:n
 %i表示每帧的点
for j = 1:nbframe
 %j表示帧数
M(i j) = s(((j - 1) * m) + i);
%M存储分帧后的信号,第一行表示第一帧,第二行表示第二帧
end
end
%%分帧结束处

h = hamming(n);
M2 = diag(h) * M;
%对每帧信号加窗处理:窗函数变成对角阵再乘以分帧信号矩阵
for i = 1:nbframe
M3(: i) = fft(M2(: i));
end
%对每帧进行傅里叶变化,获得频率值

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         901  2017-04-09 23:37  blockframes.m
     文件         845  2017-04-09 23:38  cut.m
     文件        4876  2017-04-09 11:03  demo.m
     文件         907  2017-04-09 23:58  disteu.m
     文件          86  2017-04-01 00:28  main2.m
     文件        1689  2017-04-09 23:42  melfb.m
     文件        1755  2017-04-09 23:45  mfcc.m
     文件         761  2018-01-07 14:16  ReadMe.txt
     文件        1227  2017-04-09 23:27  SpeakerUI.m
     目录           0  2018-01-07 14:11  test\
     文件        1490  2017-04-09 23:59  test.m
     文件       24660  2018-01-07 14:11  test\1.wav
     文件         618  2017-04-09 23:56  test_record.m
     目录           0  2018-01-07 14:09  train\
     文件        1457  2017-04-09 23:51  train.m
     文件       30830  2018-01-07 14:09  train\1.wav
     文件       30286  2018-01-07 14:09  train\2.wav
     文件       32612  2018-01-07 14:09  train\3.wav
     文件          16  2017-03-21 00:46  train\备注.txt
     文件         979  2017-04-09 23:57  train_record.m
     文件        1618  2017-04-09 23:55  vqlbg.m

评论

共有 条评论