栗子鱼 发表于 2007-5-14 23:29

如何在已有的语音信号中加噪音?

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');

这是在网上找的程序,但是有错误,希望高手们来帮我解决下!
小女子先谢了!

eight 发表于 2007-5-14 23:30

原帖由 栗子鱼 于 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=


请先看看置顶贴:聚宝盆,然后重新整理你的问题

栗子鱼 发表于 2007-5-15 13:00

这个程序在做x2=x1+d这部报告错误信息,信息是使用+好错误,是不是这两个属性不一样,所以不能相加?
如果是的话,应该怎么改啊?
谢谢回答:loveliness:

eight 发表于 2007-5-15 15:20

原帖由 栗子鱼 于 2007-5-15 13:00 发表 http://www.chinavib.com/forum/images/common/back.gif
这个程序在做x2=x1+d这部报告错误信息,信息是使用+好错误,是不是这两个属性不一样,所以不能相加?
如果是的话,应该怎么改啊?
谢谢回答:loveliness:


还是没有叙述清楚,不过估计是维数不同所以不能相加

栗子鱼 发表于 2007-5-15 16:24

干脆直接说问题啦。
我自己录了一段语音,现在要给这段录音加噪,请问应该怎样来加噪?谢谢

eight 发表于 2007-5-15 16:26

原帖由 栗子鱼 于 2007-5-15 16:24 发表 http://www.chinavib.com/forum/images/common/back.gif
干脆直接说问题啦。
我自己录了一段语音,现在要给这段录音加噪,请问应该怎样来加噪?谢谢


请先看看本版关于信噪比的精华贴

桐菲杨 发表于 2007-5-17 19:58

恩我也不明白也按照精华贴的做了但还是不行希望高手指点指点啊

[ 本帖最后由 eight 于 2007-5-17 20:10 编辑 ]

eight 发表于 2007-5-17 21:13

原帖由 桐菲杨 于 2007-5-17 19:58 发表 http://www.chinavib.com/forum/images/common/back.gif
恩我也不明白也按照精华贴的做了但还是不行希望高手指点指点啊

请详细叙述你的问题、做法及得到什么结果,如果出错的话,请给出具体信息

建议多看看 置顶贴:聚宝盆

桐菲杨 发表于 2007-5-18 10:12

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.不知道怎样改也,望高手指点指点哦,毕设要用的饿.谢了那

eight 发表于 2007-5-18 10:47

原帖由 桐菲杨 于 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 或以上的版本,这些错误在编辑框口那里一目了然

桐菲杨 发表于 2007-5-27 10:51

高手在帮以下按照你的方法 那个错误没了 但还是有错误
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;
高手帮改一下吧 急啊

spano 发表于 2007-5-27 18:13

你这个文件是什么样子的啊?
wav文件读出来x1应该是2维的数组,如果和一维数组d怎么能相加?

guofengji 发表于 2007-6-5 05:04

试下这这段

=wavread('rensheng.wav'); %读取语音信号的数据,赋给变量x1
sound(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谢谢

Earl_基督山 发表于 2008-1-8 10:36

刚刚注册了该论坛,大家都指教!
上面的东东对本人有用,谢谢板主了!:lol

yo_yolu 发表于 2008-3-12 22:34

我试了试,这个程序还是不能用,还是出现的错误:
??? Error using ==> plus
Matrix dimensions must agree.

Error in ==> Untitled25 at 7
x2=x1+d;
这里x1是2维的,而d是1维的,怎么变一下呀?
页: [1] 2
查看完整版本: 如何在已有的语音信号中加噪音?