保存.wav
audiowrite(filename,y,Fs)
audiowrite(filename,y,Fs,Name,Value)
播放.wav
%方法1
[filename,pathname]=uigetfile('.wav','选择原始声音文件');
file=[pathname,filename];
fs = audioinfo(file).SampleRate;
[x,fs] = audioread(file);
sound(x,fs);
% 方法2
filename=strcat('doing_the_dishes.wav');
[x,fs]=audioread(filename);
ainfo = audioinfo(filename);
nbits = 8;
player=audioplayer(x,fs,nbits);
play(player)
% 要终止播放的时候只需
clear sound
% 或者
clear player
给一段音频添加指定的噪声
function [Y, NOISE] = add_noise(X, filepath_name, SNR, fs_X)
% add_noisem add determinated noise to a signal.
% X is a 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] = audioread(filepath_name);
if fs1~=fs_X
wavin1 = resample(wavin, fs_X, fs1);
else
wavin1 = wavin;
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;
end
信噪比为10,-3,5如下图所示