У меня есть код, как показано ниже, чтобы получить звук с микрофона:
import pyaudio
p = pyaudio.PyAudio()
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 1024*10
RECORD_SECONDS = 10
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
send_via_socket(data) # function to send each frame to remote system
Этот код работает нормально. Однако каждый кадр данных имеет размер 4 КБ. Это означает, что 40kb интернет-данных необходимо для отправки 1 секунды аудиоданных. Это всего лишь 6 кбайт данных. Когда я сохранил 10 кадров (1 секунду аудио) на диск и конвертировал его в mp3 с помощью модуля pdub. Как конвертировать каждый wav-кадр в mp3 перед отправкой через сокет? (Мне просто нужно уменьшить размер кадра, чтобы сохранить использование сети). Например:
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK) # data =4kb
mp3_frame = wav_to_mp3(data) # mp3_frame should be 1kb or less
send_via_socket(mp3_frame) # function to send each frame to remote system