一、获取代码方式


二、简介

实验目的

1.掌握语音信号线性叠加的方法,实现非等长语音信号的叠加

2.熟悉语音信号卷积原理,实现两语音卷积。

3.熟悉语音信号升采样/降采样方法。

实验原理

1.信号的叠加

两个信号X1和X2,通过短时信号的补零,使两语音信号有相同的长度,叠加信号为

【语音编辑】基于matlab语音编辑【含Matlab源码 539期】_参考文献

叠加白噪声通过生成随机信号的方法来实现

举例

在一个音频信号上叠加一个信噪比为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语音编辑【含Matlab源码 539期】_参考文献_02

【语音编辑】基于matlab语音编辑【含Matlab源码 539期】_归一化_03

【语音编辑】基于matlab语音编辑【含Matlab源码 539期】_归一化_04

五、matlab版本及参考文献

1 matlab版本

2014a

2 参考文献

[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.

[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.