|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
function code = train(traindir, n)
% 计算wav文件的VQ码码本
% Speaker Recognition: Training Stage
%
% Input:
% traindir : string name of directory contains all train sound files
% n : number of train files in traindir
%
% Output:
% code : trained VQ codebooks, code{i} for i-th speaker
%
% Note:
% Sound files in traindir is supposed to be:
% s1.wav, s2.wav, ..., sn.wav
% Example:
% >> code = train('C:\data\train\', 8);
k = 16; % number of centroids required
for i = 1:n % train a VQ codebook for each speaker
file = sprintf('%ss%d.wav', traindir, i);
disp(file);
[s, fs] = wavread(file);
v = mfcc(s, fs); % Compute MFCC's
code{i} = vqlbg(v, k); % Train VQ codebook
end
此为一段对n个说话人的录音生成n个码本的程序,我想该为几个说话人的录音生成1个码本的程序。
觉得应该从,提取的采样值s,入手,把每个人的采样值s连起来,如第一个人s=a,第二个人s=b,表示两个人特征的
采样值s=[a b].
这是我改的:
(刚接触matlab,对于编程不太了解,程序根本就运行不了,放在这里就是想让把自己的想法明确一点)
k = 16; % number of centroids required
for i = 1:n % train a VQ codebook for each speaker
file = sprintf('%ss%d.wav', traindir, i);
disp(file);
[s, fs] = wavread(file);
s{i}=s
end
s=[s{i}...s{n}]
v = mfcc(s, fs); % Compute MFCC's
code{i} = vqlbg(v, k); % Train VQ codebook |
|