ubuntu - python mp3流如何轉(zhuǎn)無損wav?
問題描述
我用百度語音webapi將文字轉(zhuǎn)成語音,百度webapi只支持返回mp3格式的流,但是我想要在實時簡單分析下波形,用FFT處理下。所以想要將mp3流轉(zhuǎn)為無損的wav格式。但是找了如下的python包,pymedia官方已經(jīng)不更新,貌似不支持python2.7了,非官方的沒試;pymad和pyogg沒有找到文檔,也沒有mp3轉(zhuǎn)無損格式的demo。請問有什么解決方法嗎?
問題解答
回答1:自問自答,希望對碰到同樣情況的有幫助,也歡迎提出修改意見,或者更好的方案。據(jù)這幾天的搜索很少有模塊顯示地支持音頻流格式轉(zhuǎn)換。找到一個可用的模塊io,聲音處理模塊可以參考https://wiki.python.org/moin/...
import ioaud=io.BytesIO(data)#data的格式是mp3數(shù)據(jù)的bytestring
然后可以像用文件一樣使用這段流數(shù)據(jù),之后就可以使用mp3文件轉(zhuǎn)wav的模塊,而不用寫入到文件再讀。
以下是結(jié)合pydub驗證過程:
from pydub import AudioSegment ###需要安裝pydub、ffmpegimport waveimport io#先從本地獲取mp3的bytestring作為數(shù)據(jù)樣本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#寫入到文件,驗證結(jié)果是否正確。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()
相關(guān)文章:
1. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題2. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.3. css - 定位為absolute的父元素中的子元素 如何設(shè)置在父元素的下面?4. java - 請問在main方法中寫成對象名.屬性()并賦值,與直接參參數(shù)賦值輸錯誤是什么原因?5. java - Spring boot 讀取 放在 jar 包外的,log4j 配置文件,系統(tǒng)有創(chuàng)建日志文件,不寫入日志信息。6. mysql里的大表用mycat做水平拆分,是不是要先手動分好,再配置mycat7. java - socket類服務(wù)端如何防止被ddos攻擊?8. javascript - 圖片鏈接請求一直是pending狀態(tài),導(dǎo)致頁面崩潰,怎么解決?9. python - beautifulsoup獲取網(wǎng)頁內(nèi)容的問題10. 怎么用css截取字符?
