我正在用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
工作对吗?
答案 0 :(得分:1)
我认为16位PCM通常是签名的。尝试使用int16
代替uint16