matlab怎样进行声音识别

matlab怎样进行声音识别,第1张

原理: 用基音频率来作为男女生识别的标准即可,因为一般男生的基音频率都是小于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采集语音信号分析与处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10110459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存