(代码块后的问题。)
现在,我分别生成正弦曲线和噪声,然后对幅度进行归一化,以便将信号写入 .wav 文件(16 位,16kHz)。
def genSine(f0,fs,dur):
sinusoid = []
for t in range(dur):
sinusoid.append(math.sin(2*math.pi*t(*freq/fs)))
sinusoid = normalise(sinusoid)
return sinusoid
def genNoise(dur):
noise = np.random.normal(0,1,dur))
noise = normalise(noise)
return noise
def normalise(x,MAX_INT16):
maxamp = max(x)
amp = floor(MAX_INT16/maxamp)
norm = np.zeros(len(x))
for i in range(len(x)):
norm[i] = amp*x[i]
return norm
def writeWav(w):
# audiophilic magic
if __name__ == '__main__':
f0 = 440
fs = 16000
dur = 1*fs #seconds
MAX_INT16 = 32767
sinusoid = genSine(f0,fs,dur)
noise = genNoise(dur)
sum = x + y
sum = normalise(sum,MAX_INT16)
writeWav(sum)
有没有更有效的方法来求和两个信号(正弦+噪声),也许绕过/合并归一化步骤(目前在 genSine、genNoise 和 main 中调用了 3 次)?
如何确保设置正弦信号和噪声信号之间的幅度比?
我是 Python 和 stackexchange 的新手,因此不胜感激!