【语音识别】拨号语音识别含Matlab源码

1 简介

首先,需要对录音文件进行一次滤波,也就是设计一个带通滤波器,将550Hz~1600Hz之外的音频滤掉;接下来,也是最重要的,就是将语音片段分割开来,只有在分割开来的语音片段上进行单个片段的FFT分析才能识别这个片段内所含的音频;接下来就是对这个片段进行FFT分析,分析出来的结果一般不会是简单的含有两个峰的FFT信号,因为存在噪声,所以还得考虑到如何将分析出来的大致的FFT结果和我们已知的拨号音频率对应上。

​2 部分代码

clear;clc;%% 初始化相关数据A=10;%振幅fs=44100;   %采样频率N=8820;    % 信号样点数,每个音频播放时长y = [];%用来存储音频数据i_all = [];%用来记录每次i的值f = [697,1209;697,1336;697,1477;770,1209;770,1336;770,1477;852 1209;852 1336;852 1477;941 1336];%从1-9-0的频率% myrecorder = audiorecorder(44100,16,1);%% 生成随机音频并播放for j=1:10    i = randi([1 10]);    i_all = [i_all i];     y = [y A*sin(2*pi*f(i,1)*(0:N-1)/fs)+A*sin(2*pi*f(i,2)*(0:N-1)/fs) zeros(1,4410) ]; %    y = [y A*sin(2*pi*f(i,1)*(0:N-1)/fs)+A*sin(2*pi*f(i,2)*(0:N-1)/fs) zeros(1,randi([1,8820]))];end%sound(y,fs);% disp('record start!');% recordblocking(myrecorder,length(y)/10000);% disp('record end!');% myrecorder_array = getaudiodata(myrecorder);% plot((1:length(myrecorder_array))/44100,myrecorder_array);audiowrite('MySound.wav',y,fs);for i =1:length(i_all)    if i_all(i) == 10        i_all(i) = 0;    endenddisp(i_all);

3 仿真结果

【语音识别】拨号语音识别含Matlab源码_第1张图片

【语音识别】拨号语音识别含Matlab源码_第2张图片

4 参考文献

[1]沈泉波, and 韩慧莲. "基于HMM的语音识别系统的Matlab仿真." 电声技术 36.10(2012):56-57.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

你可能感兴趣的:(信号处理,matlab)