改变音频数据时的噪音

时间:2014-03-02 11:37:24

标签: python audio numpy stream real-time

我正在用python播放音频,我不明白为什么我在执行这样的代码时会听到ouptut上的噪音:

import pyaudio  
import wave 
import numpy as np

f = wave.open('blabla.wav',"r")  
p = pyaudio.PyAudio()  
# open stream  
stream = p.open(format = p.get_format_from_width(f.getsampwidth()),  
                channels = f.getnchannels(),  
                rate = f.getframerate(),  
                output = True)  
float_array = np.fromstring(f.readframes(10000000), dtype=np.uint16).astype('float32')
output = 0.9 *  float_array
stream.write(output.astype('uint16').tostring())

当我乘以0.9时,我希望稍微减弱一个信号。但是这个输出噪音来自哪里呢? 我甚至没有向初始数据添加任何内容!

基本上我想添加两个信号:

   output signal =  0.5 * the origin one  + 0.5 * shifted origin one

但是我对这个过程感到困惑,因为即使是原始阵列的倍增也会让信号听起来像是一团糟。

你能指出我做错了什么以及如何制作公式

   output signal =  0.5 * the origin one  + 0.5 * shifted origin one

工作对吗?

1 个答案:

答案 0 :(得分:1)

我认为16位PCM通常是签名的。尝试使用int16代替uint16