原理: 用基音频率来作为男女生识别的标准即可,因为一般男生的基音频率都是小于200Hz的,女生则大于200Hz。
命令: wavread, FFT
文件位置: 用cd命令查一下你当前的目录,然后放到相应位置就可以;格式最好是wav的,用wavread就可以。
如果是想将声音信号录制到matlab里面,则可以使用以下的函数。
R = audiorecorder( 44100, 16 ,2 ) ;
%创建一个保存音频信息的对象,它包含采样率,时间和录制的音频信息等等。44100表示采样为44100Hz(可改为8000, 11025, 22050等,此数值越大,录入的声音质量越好,相应需要的存储空间越大),16为用16bits存储,2为两通道即立体声(也可以改为1即单声道)。
record(R);
%开始录制,此时对着麦克风说话即可。
pause(R);
%暂停录制。
play(R)
%播放录制的声音。
resume(R);
%继续录制
stop(R);
%停止录制
myspeech = getaudiodata(R);
%得到以n2列数字矩阵存储的刚录制的音频信号。
%对这个矩阵你就可以用各种滤波器进行处理,或者把它和别的音频混音等等。你也可以画出它的波形(如果时间较长画波形可能会花点时间)。
plot(myspeech)
%画出波形
%如果你想保存可以使用
wavwrite(myspeech,44100,16,'myspeech');
%myspeech表示要存入的波形矩阵,44100表采样率,16 为以16bits存储,'myspeech'为存储的文件名。
%matlab有极其丰富的音频处理滤波功,此处介绍最基本的录入、播放和保存 *** 作
语音信号的采集和频谱分析:
[y,fs,bits]=wavread('voice'); %读取音频信息(双声道,16位,频率44100Hz)
sound(y,fs,bits); %回放该音频
Y=fft(y,4096); %进行傅立叶变换
subplot(211);
plot(y);
title('声音信号的波形');
subplot(212)
plot(abs(Y));
title('声音信号的频谱');
窗函数设计低通滤波器:
fp=1000;
fc=1200;
as=100;
ap=1;
fs=22000;
wp=2fp/fs;
wc=2fc/fs;
N=ceil((as-795)/(1436(wc-wp)/2))+1;
beta=01102(as-87);
window=Kaiser(N+1,beta);
b=fir1(N,wc,window);
freqz(b,1,512,fs);
结果:
滤波:
[y,fs,bits]=wavread('voice');
d=filter(b,a,y);
D=fft(d);
subplot(211)
plot(d);
title('滤波后的声音波形')
subplot(212)
plot(abs(D))
title('滤波后的声音频谱')
回放:
sound(d,fs,bits)
与滤波之前相比,噪音明显降低了许多。
区别
wavplay():播放wav声音文件。当然,也可以把处理后的wav文件保存后再用其它工具播放。
sound函数的输入参量是音频数据向量、采样频率和转换位数。
2处理流程
分析和处理音频信号 首先要对声音信号进行采集 MATLAB 的数据采集工具箱提供了一整套命令和函数,通过调用这些函数和命令,可直接控制声卡进行数据采Windows 自带的录音机程序也可驱动声卡来采集语音信号 并能保存为 WAV 格式文件供 MATLAB 相关函数直接读取 写入或播放 本文以 WAV 格式音频信号作为分析处理的输入数据 用 MATLAB 处理音频信号的基本流程是 先将 WAV 格式音频信号经 wavread 函数转换成 MATLAB 列数组变量 再用 MATLAB 强大的运算能力进行数据分析和处理 如时域分析 频域分析 数字滤波 信号合成 信号变换 识别和增强等等 处理后的数据如是音频数据 则可用 wavwrite 转换成 WAV 格式文件或用 sound wavplay 等函数直接回放 。
就是在gui对应的M文件里使用wav文件读取语句:
wavread('wav') 代表不同的文件名,同时读入的文件必须在当前的路径里。
如果需要得要各个参数,可是设置输出量:
[y,freq,bit]=wavread('wav')
至于FFT的分析,将wav文件读入后,用FFT函数进行分析。下面的代码是一个实例,希望对你有所帮助。
用MATLAB对原始语音信号进行分析,画出它的时域波形和频谱
fs=8000; %语音信号采样频率为8000
x1=wavread('pb8kwav');
t=(0:length(x1)-1)/8000;
y1=fft(x1,2048); %对信号做2048点FFT变换
f=fs(0:1023)/2048;
figure(1)
plot(t,x1) %做原始语音信号的时域图形
grid on;axis tight;
title('原始语音信号');
xlabel('time(s)');
ylabel('幅度');
figure(2)
plot(f,abs(y1(1:1024))) %做原始语音信号的FFT频谱图
grid on;axis tight;
title('原始语音信号FFT频谱')
xlabel('Hz');
ylabel('幅度');
以上就是关于matlab怎样进行声音识别全部的内容,包括:matlab怎样进行声音识别、怎么用MATLAB里的GUIDE实现声音信号的采集和处理、基于MATLAB采集语音信号分析与处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)