当前位置 : 主页 > 编程语言 > python >

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

来源:互联网 收集:自由互联 发布时间:2022-06-18
1 简介 首先,需要对录音文件进行一次滤波,也就是设计一个带通滤波器,将550Hz~1600Hz之外的音频滤掉;接下来,也是最重要的,就是将语音片段分割开来,只有在分割开来的语音片段

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;
end
end
disp(i_all);

3 仿真结果

【语音识别】拨号语音识别含Matlab源码_参考文献

【语音识别】拨号语音识别含Matlab源码_数据_02

4 参考文献

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

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

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

【语音识别】拨号语音识别含Matlab源码_参考文献_03


网友评论