我想对声音的频率和振幅做些改变。我现在正在获取声音数据,但是每当我尝试将它乘以一个值,例如改变振幅时,我会得到很多噪声。我在想怎么才能干净利落地做到这一点。我需要循环浏览数据,因为频率和振幅的变化依赖于用户输入(稍后我将使用网络摄像头根据手的位置进行更改)。使用当前代码,我的输入文件只有一个通道。我不知道为什么,但是在“getNewWave”中,如果我把它改成np.int16型,音频也会产生噪音。谢谢!!你知道吗
import pyaudio
import wave
import sys
import numpy as np
def getNewWave(data):
newdata = np.frombuffer(data, np.int8)
#make some changes to amplitude and frequency
return newdata
def main():
CHUNK = 1024
if len(sys.argv) < 2:
print("Missing input wav file. File must have single channel")
sys.exit(-1)
wf = wave.open(sys.argv[1], 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
channels=1,
rate=wf.getframerate(),
output=True, frames_per_buffer=CHUNK)
data = wf.readframes(CHUNK)
while data != '':
stream.write(getNewWave(data))
data = wf.readframes(CHUNK)
stream.stop_stream()
stream.close()
p.terminate()
main()
目前没有回答
相关问题 更多 >
编程相关推荐