变声原理:卷积和传递函数

idea

关于系统

我们将一个空旷的房间类比于一个系统,如果我们在房间内放置一个声源,声音信号经过墙壁,天花板,地面,放置的种种物品的反射,最终会被我们人耳或者声音采集设备收集。这个系统显然对声音具有一定的处理作用,并且这些放置物品以及房间本身结构以及材料的独特性,决定了代表其特征的传递函数。

关于传递函数

在自动控制原理中我们获悉,一个系统的传递函数可以通过实验的方法获得,一个系统的冲激响应即为其传递函数。

				       Y(s) = G(s)·L[δ(t)]

完美的冲激信号我们无法轻易获得,事实上我们可以用一个尖锐的声音信号代替之。在这里,我将收集拍手声经过房间这个系统作用之后的信号,以此求出房间这个系统的传递函数。

关于卷积

时域信号的卷积等于频域的相乘,这一点与传递函数的理解是一致的,即有:

						 Y[s] = G(s)·X(s)

值得一提的是,本次实验中我采用了手机进行声音信号的采集,手机采集到的声音信息是双通道的,我们在进行卷积之前,需要对声音信号预先进行声道合并和格式处理。

思路

用拍手声模拟冲激响应之后,我们需要在另一相对安静的环境下采集另一段音频信号,同样地在卷积运算之前需要对信号进行预处理。而后即可通过matlab进行编程实现卷积运算了。

代码展示

读取两段音频
clear;
clc
% 读取两段音频
IR = audioread('Gs.wav');
voice = audioread('warm_song.wav');
mix = conv(voice,IR);
% 作图观察冲激信号
plot(IR);
audiowrite('conv_song.wav',mix,48000);

图像如下:
在这里插入图片描述
可见在信号发生之初还是比较“锐利”的。

卷积之前的声音

在命令行直接输入即可

 sound(voice,48000)
卷积之后的声音

在命令行直接输入即可

 sound(mix,48000)

完整声音文件及调试见:
链接:https://pan.baidu.com/s/10zaN58aUof37uqg5ERSfZQ
提取码:g6j1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值