声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5280|回复: 16

[编程技巧] 如何在已有的语音信号中加噪音?

[复制链接]
发表于 2007-5-14 23:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
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=[Au*cos(2*pi*5000*t)]';    %噪声为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:30 | 显示全部楼层
原帖由 栗子鱼 于 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=[Au*cos(2 ...



请先看看置顶贴:聚宝盆,然后重新整理你的问题
 楼主| 发表于 2007-5-15 13:00 | 显示全部楼层
这个程序在做x2=x1+d这部报告错误信息,信息是使用+好错误,是不是这两个属性不一样,所以不能相加?
如果是的话,应该怎么改啊?
谢谢回答:loveliness:
发表于 2007-5-15 15:20 | 显示全部楼层
原帖由 栗子鱼 于 2007-5-15 13:00 发表
这个程序在做x2=x1+d这部报告错误信息,信息是使用+好错误,是不是这两个属性不一样,所以不能相加?
如果是的话,应该怎么改啊?
谢谢回答:loveliness:



还是没有叙述清楚,不过估计是维数不同所以不能相加
 楼主| 发表于 2007-5-15 16:24 | 显示全部楼层
干脆直接说问题啦。
我自己录了一段语音,现在要给这段录音加噪,请问应该怎样来加噪?谢谢
发表于 2007-5-15 16:26 | 显示全部楼层
原帖由 栗子鱼 于 2007-5-15 16:24 发表
干脆直接说问题啦。
我自己录了一段语音,现在要给这段录音加噪,请问应该怎样来加噪?谢谢



请先看看本版关于信噪比的精华贴
发表于 2007-5-17 19:58 | 显示全部楼层
恩  我也不明白  也按照精华贴的做了  但还是不行  希望高手指点指点啊

[ 本帖最后由 eight 于 2007-5-17 20:10 编辑 ]
发表于 2007-5-17 21:13 | 显示全部楼层
原帖由 桐菲杨 于 2007-5-17 19:58 发表
恩  我也不明白  也按照精华贴的做了  但还是不行  希望高手指点指点啊


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

建议多看看 置顶贴:聚宝盆
发表于 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=[Au*cos(2*pi*5000*t)]';    %噪声为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:47 | 显示全部楼层
原帖由 桐菲杨 于 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=[Au*cos(2*pi*5000*t)]';   ...


这与我写的精华贴内容毫不相干,是你自己编程时候加入了特殊字符(估计可能是中文空格),导致出错。相应的代码改为以下:

  1. t=0:1/22050:(size(x1)-1)/22050;    %将所加噪声信号的点数调整到与原始信号相同
  2. Au=0.03;
  3. d=[Au*cos(2*pi*5000*t)]';   %噪声为5kHz的余弦信号
  4. x2=x1+d;
  5. 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=[Au*cos(2*pi*5000*t)];
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;
高手帮改一下吧 急啊
发表于 2007-5-27 18:13 | 显示全部楼层
你这个文件是什么样子的啊?
wav文件读出来x1应该是2维的数组,如果和一维数组d怎么能相加?

评分

1

查看全部评分

发表于 2007-6-5 05:04 | 显示全部楼层

试下这这段

[x1,fs,nbits]=wavread('rensheng.wav'); %读取语音信号的数据,赋给变量x1
sound(x1,fs);              %播放语音信号
y1=fft(x1,512);           %对信号做512点FFT变换
f=fs*(0:255)/512;
[a,b]=size(x1);      %好像就差这儿
t=0:1/a:(1-1/a);
Au=0.03;
d=[Au*cos(2*pi*5000*t)]';
x3=x1+d;
能把你最后调试好的完整程序加波形图频谱图对比图,等全部图发给我吗,我这不能装MATLAB,我急用,guofengji@sina.com
kite.g@163.com谢谢
发表于 2008-1-8 10:36 | 显示全部楼层
刚刚注册了该论坛,大家都指教!
上面的东东对本人有用,谢谢板主了!:lol
发表于 2008-3-12 22:34 | 显示全部楼层
我试了试,这个程序还是不能用,还是出现的错误:
??? Error using ==> plus
Matrix dimensions must agree.

Error in ==> Untitled25 at 7
x2=x1+d;
这里x1是2维的,而d是1维的,怎么变一下呀?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 17:29 , Processed in 0.066982 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表