线性卷积的代码如下,采用了numpy里面的convolve()函数,这个可以使得俩个音频线性卷积。了解的太少了,numpy是个好库。
import numpy as np
from matplotlib import pyplot as plt
import librosa
data, fs = librosa.load('C2_2_y.wav',sr=None)
s = np.arange(0,len(data)) # 返回的是0,1,2,3,...
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 = np.convolve(data, y)
zmax = np.max(np.abs(z))
z = z / zmax
time2 = np.arange(0,len(z)) / fs
plt.figure()
plt.subplot(3,1,1)
plt.plot(time,data)
plt.xlabel('time/s')
plt.ylabel('amp')
plt.title('original signal')
plt.subplot(3,1,2)
plt.plot(time,y)
plt.xlabel('time/s')
plt.ylabel('random amp')
plt.title('random')
plt.subplot(3,1,3)
plt.plot(time2,z)
plt.xlabel('time/s')
plt.ylabel('amp')
plt.title('conv signal')
plt.show()
出来的图形如下: