Python3.7 讀取 mp3 音頻文件生成波形圖效果
測試環(huán)境為Windows 10 系統(tǒng),Python3.7,轉(zhuǎn)換需要提前安裝pydub、ffmpeg,安裝和加入環(huán)境變量配置方法自行解決,至于缺少的包直接 pip install xx 搞定。
主要是 mp3 轉(zhuǎn)成 wav 格式的文件,因?yàn)?mp3 格式為了減小體積犧牲了音質(zhì),轉(zhuǎn)成無損的 wav 格式之后,可以讀取到更詳細(xì)的信息。然后讀取 wav 的信息,利用 matlotlib 繪圖即可。
mp3towavaform.py 代碼:
#coding=utf8
from pydub import AudioSegment
import wave
import io
import numpy as np
import matplotlib.pyplot as plt #專業(yè)繪圖庫
from PIL import Image
import pylab
from scipy.io import wavfile
# 先從本地獲取 mp3 的 bytestring 作為數(shù)據(jù)樣本
filename = "b.mp3"
fp=open(filename, '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(filename + ".wav",'wb')
f.setnchannels(1)
f.setsampwidth(2)
f.setframerate(16000)
f.setnframes(l)
f.writeframes(raw_data)
f.close()
# 讀取生成波形圖
samplerate, data = wavfile.read(filename + ".wav")
times = np.arange(len(data))/float(samplerate)
# print(len(data), samplerate, times)
# 可以以寸為單位自定義寬高 frameon=False 為關(guān)閉邊框
fig = plt.figure(figsize=(20, 5), facecolor="white")
# plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', labelbottom='on')
ax = fig.add_axes([0, 0, 1, 1])
ax.axis('off')
plt.fill_between(times, data, linewidth = '1', color='green')
plt.xticks([])
plt.yticks([])
plt.savefig(filename + '.png', dpi=100, transparent=False, bbox_inches='tight', edgecolor='w')
#plt.show()
最終就可以生成一個(gè)無邊框的波形圖,matplotlib 的可選參數(shù)非常多,至于生成的波形圖想要什么邊框,顏色,圖例,坐標(biāo)軸信息等,可以查閱 matplotlib 社區(qū)文檔。
最終效果圖:
總結(jié)
以上所述是小編給大家介紹的Python3.7 讀取 mp3 音頻文件生成波形圖效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Python實(shí)現(xiàn)一個(gè)簡單的遞歸下降分析器
這篇文章主要介紹了Python如何實(shí)現(xiàn)一個(gè)簡單的遞歸下降分析器,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08
關(guān)于Python不換行輸出和不換行輸出end=““不顯示的問題(親測已解決)
這篇文章主要介紹了關(guān)于Python不換行輸出和不換行輸出end=““不顯示的問題(親測已解決),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
Python實(shí)現(xiàn)的科學(xué)計(jì)算器功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的科學(xué)計(jì)算器功能,涉及Python基于數(shù)值運(yùn)算與事件響應(yīng)實(shí)現(xiàn)科學(xué)計(jì)算器功能相關(guān)操作技巧,需要的朋友可以參考下2017-08-08

