背景
一般來說,音頻數據的保存格式有wav,mp3,midi等。當需要對音頻數據進行比對時,顯示爲圖片是一種比較直觀的表示方式,可以將wav顯示成波形,頻譜,彩虹譜;也可以將midi文件轉換爲piano_roll,再以圖片的形式顯示。本文主要針對midi文件的顯示。
實現方法
利用python模塊pretty_midi讀入midi文件內容,將將矩陣轉換成piano-roll,使用以下方法,再顯示成圖片即可。
midi_data = pretty_midi.PrettyMIDI('test.mid')
print(midi_data.instruments)
a = midi_data.instruments[0].get_piano_roll()
# reshape 圖片爲3維,並將通道級聯成3,即rgb
m = np.reshape(a,(a.shape[0],a.shape[1],1))
img = np.concatenate((m,m,m),axis=2)
# 圖像顯示與保存
plt.figure("Image",figsize=(12,8))
plt.imshow(img)
plt.axis('on') # 關掉座標軸爲 off
plt.title('image') # 圖像題目
plt.savefig('show.png')# 圖像保存
plt.show()