python---音频线性叠加

该博客通过Python的librosa库加载音频文件,并进行线性叠加操作。首先,对原始音频进行幅值归一化,然后添加随机信号,再将两者相加,最后将结果进行归一化。通过matplotlib进行可视化展示,分别显示了原始信号、随机信号和叠加后的信号。此内容涉及音频处理和数据可视化技术。
摘要由CSDN通过智能技术生成

下面是音频的线性叠加代码:



import librosa
import numpy as np
from matplotlib import pyplot as plt

data, fs = librosa.load('C2_2_y.wav',sr=None)
s = np.arange(0,len(data),step=1)
time = s / fs
xmax = np.max(np.abs(data))
data = data / xmax    # 幅值归一化

y = np.random.randn(np.size(data))
ymax = np.max(np.abs(y))
y = y / ymax

z = data + y
zmax = np.max(np.abs(z))
z = z / zmax

plt.figure()

plt.subplot(3,1,1)
plt.plot(time,data)
plt.xlabel('time/s')
plt.ylabel('norm amp')
plt.title('original signal')


plt.subplot(3,1,2)
plt.plot(time,y)
plt.xlabel('time/s')
plt.ylabel('norm amp')
plt.title('random amp')

plt.subplot(3,1,3)
plt.plot(time,z)
plt.xlabel('time/s')
plt.ylabel('norm amp')
plt.title('linear add')

plt.show()

因为看的是赵力老师那本书,所以音频也用的是他本书对应的音频。画出来的图是:

np.size()函数是用来统计变量里面有多少元素,比如矩阵有多少个元素。

np.arange()--函数返回一个有终点和起点的固定步长的排列,其中,step代表跳跃的步长,但是属于左包右不包。比如取[3,9],也就是返回3,4,5,6,7,8.

np.linspace()返回一个有起点和终点的序列,但是它没有步长。它可以指定返回这个范围内多少个元素,有一个num的参数控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值