仪器社区

基于MATLAB采集语音信号分析与处理

团鼠儿 2009-03-10
要求: 1、语音信号采集 录制一段课程设计学生的语音信号并保存为文件,要求长度不小于10秒,并对录制的信号进行采样;录制时可以使用Windows自带的录音机,或者使用其它专业的录音软件,录制时需要配备录音硬件(如麦克风),为便于比较,需要在安静、干... 要求: 1、语音信号采集 录制一段课程设计学生的语音信号并保存为文件,要求长度不小于10秒,并对录制的信号进行采样;录制时可以使用Windows自带的录音机,或者使用其它专业的录音软件,录制时需要配备录音硬件(如麦克风),为便于比较,需要在安静、干扰小的环境下录音。 2、语音信号分析 在MATLAB软件平台下绘出采样后的语音信号的频谱图。 3、含噪语音信号合成 在MATLAB软件平台下,给原始的语音信号叠加上噪声后,绘出噪声的信号频谱图. 4.设计一种合适的滤波器,去除噪声,得到原始的语音信号. 有哪位可以为我提供MATLAB源程序,多多感谢了!!!
评论
全部评论
小宝小贝1225
语音信号的采集和频谱分析:
[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=2*fp/fs;
wc=2*fc/fs;
N=ceil((as-7.95)/(14.36*(wc-wp)/2))+1;
beta=0.1102*(as-8.7);
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)
与滤波之前相比,噪音明显降低了许多。
19 0 2009-03-11 0条评论 回复
我在我在岁月
采样,
fft频谱分析;
randn() 叠加噪声。
18 0 2009-03-11 0条评论 回复
fenpqiangm972
1. 采集建议使用cooledit,直观好用。
2. 时域波形直接plot,频域波形可以plot(abs(fft()))和plot(angle(fft())),分别是幅度和相位,时频域分析可以用spectrogram命令,具体参数可以help一下。
3. awgn可以按信噪比添加白噪声,或者可以按需求生成需要的噪声,然后相加
4. 除非噪声是窄带的,否则无法用线性系统实现。因为语音信号是基带信号,如果不限定噪声的频率范围,则有可能与语音信号重叠,需要较复杂的算法进行分离。
17 0 2009-03-11 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论