clear all; close all; ncoeff = 12; %MFCC参数阶数 N = 10; %10个数字 fs=16000; %采样频率 duration2 = 2; %录音时长 k = 3; %训练样本的人数 speech = audiorecorder(fs,16,1); disp('Press any key to start 2 seconds of speech recording...'); pause disp('Recording speech...'); recordblocking(speech,duration2) % duration*fs 为采样点数 speechIn=getaudiodata(speech); disp('Finished recording.'); disp('System is trying to recognize what you have spoken...'); speechIn = my_vad(speechIn); %端点检测 rMatrix1 = mfccf(ncoeff,speechIn,fs); %采用MFCC系数作为特征矢量 rMatrix = CMN(rMatrix1); %归一化处理 Sco = DTWScores(rMatrix,N); %计算DTW值 [SortedScores,EIndex] = sort(Sco,2); %按行递增排序,并返回对应的原始次序 Nbr = EIndex(:,1:2) %得到每个模板匹配的2个最低值对应的次序 [Modal,Freq] = mode(Nbr(:)); %返回出现频率最高的数Modal及其出现频率Freq Word = char('zero','One','Two','Three','Four','Five','Six','Seven','Eight','Nine'); if mean(abs(speechIn)) < 0.01 fprintf('No microphone connected or you have not said anything.\n'); elseif (Freq <2) %频率太低不确定 fprintf('The word you have said could not be properly recognised.\n'); else fprintf('You have just said %s.\n',Word(Modal,:)); end每行代码的含义
时间: 2024-01-15 19:04:53 浏览: 72
myhmm.rar_MFCC_myhmm_双参数双门限_数字语音检测_语音识别 matlab mfcc
这段代码的含义如下:
```matlab
clear all; % 清空所有变量
close all; % 关闭所有窗口
ncoeff = 12; % MFCC参数阶数
N = 10; % 10个数字
fs=16000; % 采样频率
duration2 = 2; % 录音时长
k = 3; % 训练样本的人数
speech = audiorecorder(fs,16,1); % 创建一个音频录制器对象
disp('Press any key to start 2 seconds of speech recording...'); % 提示用户按下任何键开始录音
pause
disp('Recording speech...');
recordblocking(speech,duration2) % 录制2秒音频
speechIn=getaudiodata(speech); % 获取录制的音频数据
disp('Finished recording.');
disp('System is trying to recognize what you have spoken...');
speechIn = my_vad(speechIn); % 对音频进行端点检测
rMatrix1 = mfccf(ncoeff,speechIn,fs); % 采用MFCC系数作为特征矢量
rMatrix = CMN(rMatrix1); % 对特征矢量进行归一化处理
Sco = DTWScores(rMatrix,N); % 计算DTW值
[SortedScores,EIndex] = sort(Sco,2); % 按行递增排序,并返回对应的原始次序
Nbr = EIndex(:,1:2); % 得到每个模板匹配的2个最低值对应的次序
[Modal,Freq] = mode(Nbr(:)); % 返回出现频率最高的数Modal及其出现频率Freq
Word = char('zero','One','Two','Three','Four','Five','Six','Seven','Eight','Nine');
if mean(abs(speechIn)) < 0.01 % 判断是否连接了麦克风或者是否说话了
fprintf('No microphone connected or you have not said anything.\n');
elseif (Freq <2) % 频率太低不确定
fprintf('The word you have said could not be properly recognised.\n');
else
fprintf('You have just said %s.\n',Word(Modal,:)); % 输出识别结果
end
```
该代码主要实现了一个语音识别系统,包含以下几个步骤:
1. 创建一个音频录制器对象,并提示用户按下任何键开始录音。
2. 录制2秒的音频,获取录制的音频数据。
3. 对音频进行端点检测,去除静音部分。
4. 提取音频的MFCC系数作为特征矢量,并进行归一化处理。
5. 计算DTW值,寻找最相似的模板。
6. 根据最相似的模板,输出识别结果。
其中,`my_vad` 函数实现了端点检测;`mfccf` 函数实现了MFCC系数的计算;`CMN` 函数实现了归一化处理;`DTWScores` 函数实现了DTW值的计算。最后,根据输出的识别结果,判断是否连接了麦克风或者是否说话了,或者识别结果不确定。
阅读全文