基于MATLAB的音乐合成和处理( 六 )


文章插图

基于MATLAB的音乐合成和处理

文章插图

3第三部门  音乐旌旗灯号的处置
3.1 插手延时和混响
选择一段语音旌旗灯号作为阐发对象 , 并对其进行频谱阐发 , 在时域顶用数字旌旗灯号处置方式给旌旗灯号插手3种混响 , 再阐发其频谱 , 并与原始旌旗灯号进行比力 。
设计思绪
1、操纵Windows下的灌音机或其他软件 , 录制一段语音旌旗灯号 , 时候节制在3s摆布 , 并对录制的旌旗灯号进行采样
2、语音旌旗灯号的频谱阐发 , 画出采样后的时域波形和频谱图
3、将旌旗灯号插手延时和混响 , 再阐发当时域波形和频谱图 , 并与原始旌旗灯号频谱进行比力
所以按照设计思绪进行尝试
1、读取3s的语音旌旗灯号并画出时域波形和频谱图
x1=audioread('good.wav');
[x,fs]=audioread('good.wav');
x=x(:,1);   %取单声道
sound(x,fs);
X=fft(x,640000); %gaidong
magX=abs(X);
angX=angle(X);
figure(1);
subplot(2,1,1);plot(x);title('yuanshi boxing');
subplot(2,1,2);plot(X);title('yuanshi pinpu');
获得的波形和频谱图为
2、对语音旌旗灯号进行采样并画出采样后旌旗灯号的时域波和频谱图
[x,fs]=audioread('good.wav');
x=x(:,1);
sound(5*x,fs);
n1=0:2000;
N=size(x,1);
Y=fft(x,320000);
figure(2);
subplot(2,1,1);plot(x);title('caiyang boxing');
subplot(2,1,2);plot(n1(1:1000),Y(1:1000));title('caiyang pinpu');
获得的采样波形和频谱为
3、对采样后的旌旗灯号延时 , 并画出延时后的时域波形和频谱图
z1=[zeros(10000,1);x];           %对旌旗灯号进行延时
z2=[zeros(20000,1);x];
z3=[zeros(30000,1);x];
Z1=fft(z1,160000);
Z2=fft(z2,160000);
Z3=fft(z3,160000);
figure(3);                                       
subplot(3,1,1);plot(z1); title('延时后的时域图1');        %画出延时后的旌旗灯号时域图
subplot(3,1,2);plot(z2); title('延时后的时域图2');
subplot(3,1,3);plot(z3); title('延时后的时域图3');
figure(4)
subplot(3,1,1);plot(n1(1:1000),Z1(1:1000));title('延时后的频谱图1');     %延时后的旌旗灯号频谱图
subplot(3,1,2);plot(n1(1:1000),Z2(1:1000));title('延时后的频谱图2');  
subplot(3,1,3);plot(n1(1:1000),Z3(1:1000));title('延时后的频谱图3');
获得延时的时域图和频谱图为
4、对旌旗灯号进行混响 , 并画出混响后的时域波形和频谱图
z1=[zeros(10000,1);x];           %对旌旗灯号进行延时
z2=[zeros(20000,1);x];
z3=[zeros(30000,1);x];
x1=[x;zeros(10000,1)];                 %使语音旌旗灯号与延时后旌旗灯号划一长度
x2=[x;zeros(20000,1)];
x3=[x;zeros(30000,1)];
y1=plus(x1,z1);                             %旌旗灯号的混响
y2=plus(x2,z2);
y3=plus(x3,z3);
sound(y1,fs);
sound(y2,fs);

推荐阅读