如何將Librosa頻譜圖儲存為特定尺寸的影像?


Librosa是一個Python包,用於分析音訊和音樂檔案。此包還有助於建立音樂檢索資訊系統。在本文中,我們將瞭解如何將Librosa頻譜圖儲存為特定大小的影像。

步驟

  • 設定圖形大小並調整子圖之間和周圍的填充。

  • 建立一個圖形和一組子圖。

  • 初始化三個不同的變數,**hl**、**hi**、**wi**,分別儲存頻譜圖中的每段時間樣本數、影像的高度和寬度。

  • 載入演示曲目。

  • 建立一個**視窗**,即音訊時間序列的列表。

  • 使用**melspectrogram()**和步驟3資料計算梅爾標度頻譜圖。

  • 使用**power_to_db()**方法將功率譜圖(振幅平方)轉換為分貝 (dB) 單位。

  • 將頻譜圖顯示為**img**(我們可以在此處儲存它)。

  • 使用**savefig()**儲存img。

  • 使用**plt.show()**方法顯示影像。

示例

import numpy as np
import matplotlib.pyplot as plt
import librosa.display

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig, ax = plt.subplots()

hl = 512 # number of samples per time-step in spectrogram
hi = 128 # Height of image
wi = 384 # Width of image

# Loading demo track
y, sr = librosa.load(librosa.ex('trumpet'))
window = y[0:wi*hl]

S = librosa.feature.melspectrogram(y=window, sr=sr, n_mels=hi, fmax=8000,
hop_length=hl)
S_dB = librosa.power_to_db(S, ref=np.max)
img = librosa.display.specshow(S_dB, x_axis='time', y_axis='mel', sr=sr, fmax=8000, ax=ax)

plt.savefig("out.png")
plt.show()

輸出

更新於:2022年2月15日

4K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告