python mp3流如何转无损wav?

发布于 2022-09-04 20:15:52 字数 207 浏览 9 评论 0

我用百度语音webapi将文字转成语音,百度webapi只支持返回mp3格式的流,但是我想要在实时简单分析下波形,用FFT处理下。所以想要将mp3流转为无损的wav格式。
但是找了如下的python包,
pymedia官方已经不更新,貌似不支持python2.7了,非官方的没试;
pymad和pyogg没有找到文档,也没有mp3转无损格式的demo。
请问有什么解决方法吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

顾铮苏瑾 2022-09-11 20:15:52

自问自答,希望对碰到同样情况的有帮助,也欢迎提出修改意见,或者更好的方案。
据这几天的搜索很少有模块显示地支持音频流格式转换。
找到一个可用的模块io,声音处理模块可以参考https://wiki.python.org/moin/...

import io
aud=io.BytesIO(data)#data的格式是mp3数据的bytestring

然后可以像用文件一样使用这段流数据,之后就可以使用mp3文件转wav的模块,而不用写入到文件再读。

以下是结合pydub验证过程:

from pydub import AudioSegment ###需要安装pydub、ffmpeg
import wave
import io
#先从本地获取mp3的bytestring作为数据样本
fp=open("/home/dyan/你好.mp3",'rb')
data=fp.read()
fp.close()
#主要部分
aud=io.BytesIO(data)
sound=AudioSegment.from_file(aud,format='mp3')
raw_data = sound._data
#写入到文件,验证结果是否正确。
l=len(raw_data)
f=wave.open("/home/dyan/123.wav",'wb')
f.setnchannels(1)
f.setsampwidth(2)
f.setframerate(16000)
f.setnframes(l)
f.writeframes(raw_data)
f.close()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文