一、获取代码方式
二、简介
实验目的
1.掌握语音信号线性叠加的方法,实现非等长语音信号的叠加
2.熟悉语音信号卷积原理,实现两语音卷积。
3.熟悉语音信号升采样/降采样方法。
实验原理
1.信号的叠加
两个信号X1和X2,通过短时信号的补零,使两语音信号有相同的长度,叠加信号为
叠加白噪声通过生成随机信号的方法来实现
举例
在一个音频信号上叠加一个信噪比为10dB的高斯白噪声,并播放声音对比
三、部分源代码
clc
clear all
[x,fs1]=wavread('C2_2_y.wav');
s1=1:length(x);
t1=s1/fs1;
xmax=max(abs(x));
x=x/xmax;
figure(1)
subplot(311)
plot(t1,x);
xlabel('时间/s');
ylabel('归一化幅值');
title('(a)原始信号');
p=2;q=1;
x1=resample(x,p,q);
x1max=max(abs(x1));
x1=x1/x1max;
fa=fs1*p/q;
ta=(1:length(x1))/fa;
subplot(312);
plot(ta,x1);
xlabel('时间/s');
ylabel('归一化幅值');
title('(b)2倍采样率');
p=1;q=2;
x2=resample(x,p,q);
x2max=max(abs(x2));
x2=x2/x2max;
fb=fs1*p/q;
tb=(1:length(x2))/fb;
subplot(313);
plot(tb,x2);
;
s=1:length(x);
t=s/fs;
xmax=max(abs(x));
x=x/xmax; %归一化
y=randn(size(x));%产生同x相同长度的随机序列
ymax=max(abs(y));
y=y/ymax;
z=x+y;
zmax=max(abs(z));
z=z/zmax;
figure(1)
subplot(311)
plot(t,x);
xlabel('时间/s');
ylabel('归一化幅值');
title('(a)原始信号');
subplot(312)
plot(t,y);
xlabel('时间/s');
ylabel('归一化幅值');
title('(b)随机序列');
z=z/zmax;
t2=(1:length(z))/fs;
figure(1)
subplot(311)
plot(t,x);
xlabel('时间/s');
ylabel('归一化幅值');
title('(a)原始信号');
subplot(312)
plot(t,y);
xlabel('时间/s');
ylabel('归一化幅值');
title('(b)随机序列');
subplot(313)
plot(t2,z);
四、运行结果
五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.