Maison  >  Questions et réponses  >  le corps du texte

ubuntu - python mp3流如何转无损wav?

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

黄舟黄舟2734 Il y a quelques jours1301

répondre à tous(1)je répondrai

  • 阿神

    阿神2017-04-24 09:16:10

    Posez et répondez à vos propres questions. J'espère que cela sera utile à ceux qui rencontrent la même situation. Vous êtes également invités à suggérer des modifications ou de meilleures solutions.
    Selon les recherches effectuées ces derniers jours, très peu de modules prennent explicitement en charge la conversion du format de flux audio.
    Trouvez un module io disponible. Pour le module de traitement du son, veuillez vous référer à https://wiki.python.org/moin/...

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

    Ensuite, vous pouvez utiliser ces données de flux comme un fichier, puis vous pouvez utiliser le fichier mp3 dans le module wav au lieu de l'écrire dans un fichier et de le relire.

    Voici le processus de vérification combiné avec 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()
    

    répondre
    0
  • Annulerrépondre