如何向音频文件中插入噪声
为了研究噪声和音乐对EEG
的的影响,实验前需要准备一段夹杂噪声的音乐。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Program to insert the white Gaussian noise into muisc
%y 音乐数据
%Fs 采样率
%bits 采样位,默认为16位
%wgn(m,n,p) 获取m * n、噪声强度为p的高斯白噪声
% author: Andy Wu
% date: 6/10/2009
% modify: 9/10/2009
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%打开一个名为“请选择背景音乐”的对话框,显示指定路径下所有的.wav文件
[file_name,file_path]=uigetfile('F:\MatlabProgram\*.wav','请选择背景音乐');
sound_path=strcat(file_path,file_name);
%将选中的音乐文件的数据和采样率读到sound_data和Fs
[sound_data,Fs,bits]=wavread(sound_path);
sound_length=length(sound_data);
%求出音乐的播放时间长度
sound_time=sound_length/Fs;
fprintf(1,'背景音乐播放长度 %6.2f(秒)\n',sound_time);
%检查是否定义噪声时间, 否则输入噪声时间
if ~exist('noise_time')
noise_time=input('请输入噪声长度(秒):');
end
noise_length=noise_time*Fs;
%输出一个噪声强度为1dBw,noise_length x 1的高斯白噪声矩阵数据
noise_data=wgn(noise_length,1,1);
%检查是否输入插入噪声的起始时间
if ~exist('noise_start_time')
noise_start_time=input('请输入您要设置的噪声起始时间(秒):');
end
%计算噪声数据插入位置
noise_position=noise_start_time*Fs;
%插入噪声数据
sound_data(noise_position:noise_position+noise_length-1)=noise_data;
%dlmwrite('F:\notify.txt',y); %将插入噪声后的音乐数据写入文本文件
%soundData=csvread('F:\notify.txt'); %读出音乐数据至soundData
object= analogoutput('winsound'); %建立硬件对象
addchannel(object,[1 2]); %创建声音输出通道
set(object,'SampleRate',Fs) %设置采样率
data1 =sound_data(:,1); %双声道
data2 =sound_data(:,1);
putdata(object,[data1 data2]); %往声卡输送音乐数据
%start(object); %开始输出音乐
%stop(object) %停止输出音乐