我有如下所示的代码,可从麦克风获取音频:
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
这段代码工作正常。但是,每个数据帧的大小为4kb。这意味着需要40kb的互联网数据才能发送1秒的音频数据。
当我将10帧(1秒音频)保存到光盘并使用pdub模块将其转换为mp3时,它的数据仅为6kb。
在通过套接字发送之前,如何将每个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
最佳答案
尝试python-audiotools。我认为它将帮助您流式传输所需的音频文件。
关于python - 如何使用python将WAV实时转换为mp3?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25469161/