如何在已有的语音信号中加噪音?
fs=44100;x1=wavread('d:\MATLAB6p5\work\yuy.wav');
f=fs*(0:511)/1024;
t=0:1/44100:(size(x1)-1)/44100; %将所加噪声信号的点数调整到与原始信号相同
Au=0.03;
d='; %噪声为5kHz的余弦信号
x2=x1+d;
sound(x2,44100); %播放加噪声后的语音信号
y2=fft(x2,1024);
figure(1)
plot(t,x2)
title('加噪后的信号');
xlabel('time n');
ylabel('fuzhi n');
figure(2)
subplot(2,1,1);
plot(f,abs(y1(1:512)));
title('原始语音信号频谱');
xlabel('Hz');
ylabel('fuzhi');
subplot(2,1,2);
plot(f,abs(y2(1:512)));
title('加噪后的信号频谱');
xlabel('Hz');
ylabel('fuzhi');
这是在网上找的程序,但是有错误,希望高手们来帮我解决下!
小女子先谢了! 原帖由 栗子鱼 于 2007-5-14 23:29 发表 http://www.chinavib.com/forum/images/common/back.gif
fs=44100;
x1=wavread('d:\MATLAB6p5\work\yuy.wav');
f=fs*(0:511)/1024;
t=0:1/44100:(size(x1)-1)/44100; %将所加噪声信号的点数调整到与原始信号相同
Au=0.03;
d=
请先看看置顶贴:聚宝盆,然后重新整理你的问题 这个程序在做x2=x1+d这部报告错误信息,信息是使用+好错误,是不是这两个属性不一样,所以不能相加?
如果是的话,应该怎么改啊?
谢谢回答:loveliness: 原帖由 栗子鱼 于 2007-5-15 13:00 发表 http://www.chinavib.com/forum/images/common/back.gif
这个程序在做x2=x1+d这部报告错误信息,信息是使用+好错误,是不是这两个属性不一样,所以不能相加?
如果是的话,应该怎么改啊?
谢谢回答:loveliness:
还是没有叙述清楚,不过估计是维数不同所以不能相加 干脆直接说问题啦。
我自己录了一段语音,现在要给这段录音加噪,请问应该怎样来加噪?谢谢 原帖由 栗子鱼 于 2007-5-15 16:24 发表 http://www.chinavib.com/forum/images/common/back.gif
干脆直接说问题啦。
我自己录了一段语音,现在要给这段录音加噪,请问应该怎样来加噪?谢谢
请先看看本版关于信噪比的精华贴 恩我也不明白也按照精华贴的做了但还是不行希望高手指点指点啊
[ 本帖最后由 eight 于 2007-5-17 20:10 编辑 ] 原帖由 桐菲杨 于 2007-5-17 19:58 发表 http://www.chinavib.com/forum/images/common/back.gif
恩我也不明白也按照精华贴的做了但还是不行希望高手指点指点啊
请详细叙述你的问题、做法及得到什么结果,如果出错的话,请给出具体信息
建议多看看 置顶贴:聚宝盆 fs=22050;
x1=wavread('d:\h.wav');
f=fs*(0:511)/1024;
t=0:1/22050:(size(x1)-1)/22050; %将所加噪声信号的点数调整到与原始信号相同
Au=0.03;
d='; %噪声为5kHz的余弦信号
x2=x1+d;
sound(x2,22050); %播放加噪声后的语音信号
y2=fft(x2,1024);
figure(1)
plot(t,x2)
title('加噪后的信号');
xlabel('time n');
ylabel('fuzhi n');
figure(2)
subplot(2,1,1);
plot(f,abs(y1(1:512)));
title('原始语音信号频谱');
xlabel('Hz');
ylabel('fuzhi');
subplot(2,1,2);
plot(f,abs(y2(1:512)));
title('加噪后的信号频谱');
xlabel('Hz');
ylabel('fuzhi');
就是这个程序,我首先在WINDOWS的录音机里录了一段话,也就是程序里D盘的H文件,是一个.WAV形式的,然后这段程序是要给这个语音信号加上一个余弦噪声0.03*cos(2*pi*5000*t),运行程序后t=0:1/22050:(size(x1)-1)/22050这行出错,结果是Error: File: Untitled4.m Line: 4 Column: 32
Missing variable or function.不知道怎样改也,望高手指点指点哦,毕设要用的饿.谢了那 原帖由 桐菲杨 于 2007-5-18 10:12 发表 http://www.chinavib.com/forum/images/common/back.gif
fs=22050;
x1=wavread('d:\h.wav');
f=fs*(0:511)/1024;
t=0:1/22050:(size(x1)-1)/22050; %将所加噪声信号的点数调整到与原始信号相同
Au=0.03;
d='; ...
这与我写的精华贴内容毫不相干,是你自己编程时候加入了特殊字符(估计可能是中文空格),导致出错。相应的代码改为以下:
t=0:1/22050:(size(x1)-1)/22050; %将所加噪声信号的点数调整到与原始信号相同
Au=0.03;
d='; %噪声为5kHz的余弦信号
x2=x1+d;
sound(x2,22050); %播放加噪声后的语音信号建议安装 matlab 2006a 或以上的版本,这些错误在编辑框口那里一目了然 高手在帮以下按照你的方法 那个错误没了 但还是有错误
fs=22050;
x1=wavread('d:\l.wav');
f=fs*(0:511)/1024;
t=0:1/22050:(size(x1)-1)/22050;
Au=0.03;
d=;
x2=x1+d;
sound(x2,22050);
y2=fft(x2,1024);
figure(1);
plot(t,x2);
title('加噪后的信号');
xlabel('time n');
ylabel('fuzhi n');
figure(2)
subplot(2,1,1);
plot(f,abs(y1(1:512)));
xlabel('Hz');
ylabel('fuzhi');
subplot(2,1,2);
plot(f,abs(y2(1:512)));
title('加噪后的信号频谱');
xlabel('Hz');
ylabel('fuzhi');
出现的错误:
??? Error using ==> plus
Matrix dimensions must agree.
Error in ==> Untitled25 at 7
x2=x1+d;
高手帮改一下吧 急啊 你这个文件是什么样子的啊?
wav文件读出来x1应该是2维的数组,如果和一维数组d怎么能相加?
试下这这段
=wavread('rensheng.wav'); %读取语音信号的数据,赋给变量x1sound(x1,fs); %播放语音信号
y1=fft(x1,512); %对信号做512点FFT变换
f=fs*(0:255)/512;
=size(x1); %好像就差这儿
t=0:1/a:(1-1/a);
Au=0.03;
d=';
x3=x1+d;
能把你最后调试好的完整程序加波形图频谱图对比图,等全部图发给我吗,我这不能装MATLAB,我急用,guofengji@sina.com
或kite.g@163.com谢谢 刚刚注册了该论坛,大家都指教!
上面的东东对本人有用,谢谢板主了!:lol 我试了试,这个程序还是不能用,还是出现的错误:
??? Error using ==> plus
Matrix dimensions must agree.
Error in ==> Untitled25 at 7
x2=x1+d;
这里x1是2维的,而d是1维的,怎么变一下呀?
页:
[1]
2