Python Audio Frame Pitch Change
Estoy intentando usar pyaudio para crear un enmascarador de voz. Con la forma en que lo configuré en este momento, lo único que tengo que hacer es ingresar el sonido, cambiar el tono sobre la marcha y fragmentarlo nuevamente. La primera y la última parte están funcionando, y creo que me estoy acercando al cambio de tono ... énfasis en el "pensar".
Desafortunadamente, no estoy muy familiarizado con el tipo de datos con los que estoy trabajando y cómo manipularlos exactamente como quiero. He revisado la documentación de audioop y no he encontrado lo que necesitaba (pensé que hay algunas cosas que definitivamente podría usar allí). Supongo que lo que pregunto es ...
¿Cómo están formateados los datos en estos cuadros de audio?
¿Cómo puedo cambiar el tono de un fotograma (si puedo), o está incluso cerca de funcionar así?
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()