1 / 19
文档名称:

matlab语音识别系统(源代码).doc

格式:doc   大小:533KB   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

matlab语音识别系统(源代码).doc

上传人:beny00011 2022/1/25 文件大小:533 KB

下载得到文件列表

matlab语音识别系统(源代码).doc

文档介绍

文档介绍:word
word
0
word
标准文档
〔威海〕
《智能仪器》课程设计
题 目: MATLAB实现语音识别功能
班 级:
的训练序列中提取的MFCC特征矢量聚类而生成。只要训练的序列足够长,可认为这个码本有效地包含了说话人的个人特征,而与讲话的内容无关。
本系统采用基于分裂的LBG的算法设计VQ码本,为训练序列,B为码本。
具体实现过程如下:
1. 取提取出来的所有帧的特征矢量的型心(均值)作为第一个码字矢量B1。
2. 将当前的码本Bm根据以下规如此分裂,形成2m个码字。
word
word
4
word
标准文档
〔4〕
其中m从1变化到当前的码本的码字数,ε是分裂时的参数,本文ε=。
3. 根据得到的码本把所有的训练序列(特征矢量)进展分类,然后按照下面两个公式计算训练矢量量化失真量的总和以与相对失真(n为迭代次数,初始n=0,=∞,B为当前的码书),假如相对失真小于某一阈值ε,迭代完毕,当前的码书就是设计好的2m个码字的码书,转5。否如此,转下一步。
量化失真量和:
〔5〕
相对失真:
〔6〕
4. 重新计算各个区域的新型心,得到新的码书,转3。
5. 重复2 ,3 和4步,直到形成有M个码字的码书(M是所要求的码字数),其中D0=10000。
VQ的说话人识别
设是未知的说话人的特征矢量,共有T帧是训练阶段形成的码书,表示码书第m个码字,每一个码书有M个码字。再计算测试者的平均量化失真D,并设置一个阈值,假如D小于此阈值,如此是原训练者,反之如此认为不是原训练者。
〔7〕
算法程序分析
在具体的实现过程当中,采用了matlab软件来帮助完成这个项目。在matlab中主要由采集,分析,特征提取,比对几个重要局部。以下为在实际的操作中,具体用到得函数关系和作用一一列举在下面。
,而,---将能量谱通过一组Mel尺度的三角形滤波器组。
〔提供vq码本〕与测试录音〔提供mfcc〕mel倒谱系数的距离,即判断两声音是否为同一录音者提供。。---将能量谱通过一组Mel尺度的三角形滤波器组。
word
word
5
word
标准文档
:
function r = mfcc(s, fs)
---
m = 100;
n = 256;
l = length(s);
nbFrame = floor((l - n) / m) + 1; %沿-∞方向取整
for i = 1:n
for j = 1:nbFrame
M(i, j) = s(((j - 1) * m) + i); %对矩阵M赋值
end
end
h = hamming(n); %加 hamming 窗,以增加音框左端和右端的连续性
M2 = diag(h) * M;
for i = 1:nbFrame
frame(:,i) = fft(M2(:, i)); %对信号进展快速傅里叶变换FFT
end
t = n / 2;
tmax = l / fs;
m = melfb(20, n, fs); %将上述线性频谱通过Mel 频率滤波器组得到Mel 频谱,下面在将其转化成对数频谱
n2 = 1 + floor(n / 2);
z = m * abs(frame(1:n2, :)).^2;
r = dct(log(z)); %将上述对数频谱,经过离散余弦变换(DCT)变换到倒谱域,即可得到Mel 倒谱系数(MFCC参数)
---计算测试者和模板码本的距离
function d = disteu(x, y)
[M, N] = size(x); %音频x赋值给【M,N】
[M2, P] = size(y); %音频y赋值给【M2,P】
if (M ~= M2)
error('不匹配!') %两个音频时间长度不相等
end
d = zeros(N, P);
if (N < P)%在两个音频时间长度相等的前提下
copies = zeros(1,P);
for n = 1:N
d(n,:) = sum((x(:, n+copies)