|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 killkyolyx 于 2010-11-6 22:19 编辑
本人最近在做一个语音信号处理的课程小课题,题目是:在语音信号中分别添加white噪声、pink噪声、f16噪声和babble噪声,实现不同信噪比下的带噪语音,分析讨论各种噪声对语音基频的影响.
因为本人没学过matlab,所以只能硬着头皮在网上找程序一点点试,现在有一个加噪声的程序但是运行出来只会在command window显示ans=233233(233233是文件名。。)求各位高手帮帮忙
以下是程序:function [Y,NOISE] = 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.
[wavin,fs1,nbits]=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;
[filename,pathname]=uigetfile('C:\Users\lx\Desktop\语音信号\语音信号处理-实验1\003\a.wav','请选择语音文件:');
[filename1,pathname1]=uigetfile('C:\Users\lx\Desktop\语音信号\noise\pink1.wav','请选择噪声文件:');
filepath_name=[pathname1 filename1];
[X,fs]=wavread([pathname filename]);
[Y,NOISE] = 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噪声
运行出来只会在command window显示ans=233233(233233是文件名。。)
a.rar
(2.9 KB, 下载次数: 7)
pink1.rar
(29.2 KB, 下载次数: 7)
|
|