killkyolyx 发表于 2010-11-6 22:16

在matlab下语音信号加噪声

本帖最后由 killkyolyx 于 2010-11-6 22:19 编辑

本人最近在做一个语音信号处理的课程小课题,题目是:在语音信号中分别添加white噪声、pink噪声、f16噪声和babble噪声,实现不同信噪比下的带噪语音,分析讨论各种噪声对语音基频的影响.
因为本人没学过matlab,所以只能硬着头皮在网上找程序一点点试,现在有一个加噪声的程序但是运行出来只会在commandwindow显示ans=233233(233233是文件名。。)求各位高手帮帮忙{:{01}:}
以下是程序:function = add_noisem(X,filepath_name,SNR,fs)
% add_noisem add determinated noise to a signal.
% X is signal, and its sample frequency is fs;
% filepath_name is NOISE's path and name, and the SNR is signal to noise ratio in dB.
=wavread(filepath_name);
if fs1~=fs
    wavin1=resample(wavin,fs,fs1);
end
nx=size(X,1);
NOISE=wavin1(1:nx);
NOISE=NOISE-mean(NOISE);
signal_power = 1/nx*sum(X.*X);
noise_variance = signal_power / ( 10^(SNR/10) );
NOISE=sqrt(noise_variance)/std(NOISE)*NOISE;
Y=X+NOISE;

%其中X是纯信号,filepath_name是指定噪声文件(.wav)的路径和文件名,SNR是要求的信噪比,fs是信号X的采样频率,Y是带噪信号,NOISE是叠加在信号上的噪声。


clear all; clc; close all;
=uigetfile('C:\Users\lx\Desktop\语音信号\语音信号处理-实验1\003\a.wav','请选择语音文件:');
=uigetfile('C:\Users\lx\Desktop\语音信号\noise\pink1.wav','请选择噪声文件:');
filepath_name=;
=wavread();
= add_noisem(X,filepath_name,10,fs);

subplot 311; plot(X);
subplot 312; plot(NOISE);
subplot 313; plot(Y);
mn=mean(NOISE)
snr=SNR_singlech(X,Y)

语音文件是个一秒的“a”音,噪声文件是一秒的pink噪声
运行出来只会在commandwindow显示ans=233233(233233是文件名。。)

killkyolyx 发表于 2010-11-7 15:03

修改了文件名后,提示错误
??? Input argument "filepath_name" is undefined.
Error in ==> X3 at 5
=wavread(filepath_name);

谁能帮我看看吗、、、

killkyolyx 发表于 2010-11-7 17:25

我的问题已经解决了,还是因为没看懂源程序{:{28}:}

版主锁了此贴吧

zhouyang664 发表于 2010-11-7 18:06

回帖测试

hdufly 发表于 2012-5-1 17:50

look 下{:3_47:}

jennythink 发表于 2013-11-7 18:08

楼主,你的附件里噪声pink1.rar就是传说中的粉红噪声吗?
页: [1]
查看完整版本: 在matlab下语音信号加噪声