Я пытаюсь внести некоторые изменения в звуковую частоту и амплитуду на месте. В настоящее время я получаю звуковые данные, но всякий раз, когда я пытаюсь умножить их на значение, например, чтобы изменить амплитуду, я получаю много шума. Мне было интересно, как это сделать чистым способом. Мне нужно перебрать данные, потому что изменения частоты и амплитуды зависят от пользовательского ввода (позже я внесу изменения в соответствии с положением руки с помощью веб-камеры). С этим текущим кодом мой входной файл имел один канал. Я не уверен почему, но в «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()