dsp.stackexchange.com

аюсь использовать 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()