python声音模仿_Python与声音制造(2)

Python 与声音制造

_

_

_

_

_

_

_

_

_

罗丹不带乐队改教数学了。

惊不惊喜?

意不意外?

还不快逃?

1

-第一部分: 声音与数学-

Topic 2: 认识傅里叶级数函数

如果你读过了上一篇推送,是否思考了其中的两个问题。这里再复述其中的一个:

如果两件不同的乐器演奏同一个音符,在力度和时间都相同的情况下,为什么还是可以听出它们的不同?

这里的相同和不同到底有着怎样的联系。首先可以明确的是如果两个事物既有共同的性质,又有差别,则这两个事物一定是由更加基本的事物构成。所以要了解这些事物,就必须将它进一步分解,找到构成这些事物的最基本元素。

如果不考虑音高,音量,那么决定对声音直观感受的因素就是音色(Timbre, tone),它具体表现在波形上。如果把讨论的内容局限在具有周期性的声音信号范围里,那么只需要仔细分析任意一个周期内的信号即可。

还是接着上回的内容,对于任何周期函数,有

那就考虑最简单的情况,即k=0的情况,有

也就是这时的信号图象为定义域范围内的常值函数,这个在信号处理中也称作信号的直流部分。

如果k=1, 则有

Figure 1: f(t)=1+sin(t)+cos(t) 的图像

如果k=2:

Figure 2:两个信号只相差了直流部分

随着构成声音信号的正弦波越来越多,从直观上就越难以将它分解,所以必须要有一种数学工具可以将这个分解过程以公式的形式表现出来。这样就可以设计相应的程序对复杂的信号进行分析。

首先回忆欧拉公式:

将x替换为-x

所以两式相加,减可以得到

将上述两个公式带入公式1,

这样可以得到

将公式简化至:

将上列第三项中的n从-1变化至, 则上式可进一步简化为:

可以看到在从信号的三角函数组合变换到复指数函数组合的过程中出现负频率,这在之后的程序运行结果中也会出现。不必对这个现象过度疑虑,这只是因为引入了复数表示之后的结果。

我们就管这样由复指数函数,其频率按整数倍递增的组合叫做复数形式的傅里叶级数,复数为级数中各项的系数,包含原信号中各个频率正弦信号的振幅与初相位信息。为什么要费这么大劲将三角函数组合转换成复指数形式呢?一个重要因素是,在微分与积分运算中,指数函数可能函数是最受欢迎的。因为:

又根据微分学法则中的链式法则:

或使用莱布尼茨表示法:

具体到我们的问题,有

下边就是如何从一个信号中确定系数Cn的过程。

设周期函数f(t)的周期为T,所以在定义域t上截取有限区间[t0, t0+T]。我们假设f(t)可以展开成

在两边同乘以

其中m为整数,并在区间[t0, t0+T]上进行积分。

上面这个式子等号的最右边即是对于展开之后的每一项进行积分,且Cn为常数,所以可以将求和符号以及Cn提到积分符号外侧。

经过观察,可以发现当n=m时,积分项

这时在有限区间内的积分的值就是

而当m≠n时,由于三角函数的正交性,其值为0。

关于三角函数的正交性,有以下说明。对于任意不为零的整数n,有

再次利用三角函数的积化和差公式

所以得到

若两个函数满足条件:

它们的关系为正交关系。这种关系可以由二维空间的x,y轴拓展至无穷维度。在傅里叶级数中不同频率的正弦函数就是构成这个空间的基向量,彼此不相关。在这个空间中对一个复杂信号进行分析,就像在三维空间中分解一个向量一样,通过数量积运算将空间向量投影到每一个基向量的方向上。因此通过上述运算,我们就可以达到分析声音的目的,获取的信息叫做声音信号的频谱。

所以在运算

时,等号右边只有当n=m时的那一项,

所以

以下以一个具体的例子说明这个现象:

设在区间上[-0.1,0.1]有一个周期为0.2秒的方波, 其频率为5Hz

其图像为

引用公式

当n=0时,有C0=5*0.1=0.5,当n≠0时, 得到

由此就可以重构这个原始信号:

下面使用python将这一过程重现,看看我们的计算结果是否能够重构这个方波。

以上结果是当n等于[-100,100]时的计算结果,可以看到经过计算傅里叶级数的系数,我们是可以很好的重塑一个方波信号。当然,程序模拟的过程势必带来一些误差,这是因为计算机只能进行离散有限运算。

同时,以上的计算过程也回答了开始问题,为什么演奏同一个音符的乐器听起来不同,这就是因为,尽管这两个声音具有相同的基频和谐波,但是每个频率具有的傅里叶系数不同,导致了波形的不同,所以我们就可以听出它们的不一样。

本次推送介绍了如何分析周期信号的基本方法,在下次推送中我们将正式开启用计算机制造声音的旅程,希望大家不要被眼前的数学公式吓到,因为真正有趣的事情肯定不是一下就可以掌握的,这就是所谓的痛并快乐着的学习态度。

_

本次推送的内容编排主要来自以下著作:

1.Tolstov, Georgi, (1976), Fourier Series, Dover

2.程乾生, (2003), 数字信号处理, 北京大学出版社

3.杨学志, (2016), 通信之道:从微积分到5G,电子工业出版社

_

排版:鱿鱼老板

_

_

_

_

_

_

_

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值