我正在尝试使用pyaudio制作一个语音伪装程序。按照我现在设置的方式,我唯一要做的就是输入声音,在飞行中改变音高,然后把它重新拼出来。第一部分和最后一部分是有效的,我想我已经接近改变音高了。。。强调“思考”。
不幸的是,我不太熟悉我正在使用的数据类型,也不太熟悉如何按照我想要的方式操作它。我已经浏览了音频操作文档,但还没有找到我需要的东西(我认为有些东西我可以肯定地用在里面)。我想我要问的是。。。
这些音频帧中的数据是如何格式化的。
我怎样才能改变一个画面的音高(如果我可以的话),或者它是不是已经接近这样工作了?import pyaudio
import sys
import numpy as np
import wave
import audioop
import struct
chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 41000
RECORD_SECONDS = 5
p = pyaudio.PyAudio()
stream = p.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
output = True,
frames_per_buffer = chunk)
swidth = 2
print "* recording"
while(True):
data = stream.read(chunk)
data = np.array(wave.struct.unpack("%dh"%(len(data)/swidth), data))*2
data = np.fft.rfft(data)
#MANipulation
data = np.fft.irfft(data)
stream.write(data3, chunk)
print "* done"
stream.stop_stream()
stream.close()
p.terminate()