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秒的audio数据。 它只有6kb的数据当我将10帧(1秒audio)保存到光盘并使用pdub模块将其转换为mp3时。 在通过套接字发送之前,如何将每个wav帧转换为mp3? (我只需要减less帧的大小,以节省networking使用)。 例如:
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
如何在CheckedBoxList控件中的项目上绘制string?
如何将图像添加到我的应用程序
更改Windows窗体上的边框颜色
Windows操作系统如何检测algorithm是否符合FIPS?
如何执行asyncio传输对象的同步*读/写操作
Android Studio不断崩溃
RegisterPowerSettingsNotification C#pinvoke
如何更改订单服务正在加载在Windows中?
如何使用pypy作为Windows中的cpython Jupyter的内核?
试试python-audiotools 。 我认为这将帮助您流式传输您想要的音频文件。
从阅读pydub的代码看来,AudioSegment只允许使用out_f变量输出到文件。 因此,您可以读取WAV文件并将每个块编码为一个文件,然后读取该文件并将其发送出去,然后在另一端进行解码。 但是,这不是很有效率。 我建议实际上扩展pydub来处理流和贡献项目。 出口代码非常简单,我敢打赌,这样做不会太难。 作者可能会很感激。
AudioSegment的代码在这里: https : //github.com/jiaaro/pydub/blob/master/pydub/audio_segment.py
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。