Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีบันทึก Librosa Spectrogram Plot เป็นภาพขนาดเฉพาะ

Librosa เป็นแพ็กเกจ Python ที่ช่วยวิเคราะห์ไฟล์เสียงและดนตรี แพ็กเกจนี้ยังช่วยสร้างระบบดึงข้อมูลเพลงได้ ในบทความนี้ เราจะดูวิธีบันทึก Librosa spectrogram plot เป็นภาพขนาดเฉพาะ

ขั้นตอน

  • ตั้งค่าขนาดรูปและปรับ padding ระหว่างและรอบ subplots
  • สร้าง figure และชุด subplots
  • เริ่มต้นตัวแปร 3 ตัว hl, hi, wi เพื่อเก็บตัวอย่างต่อเวลาใน spectrogram ความสูงและความกว้างของภาพ
  • โหลด demo track
  • สร้าง window คือ ลิสต์สำหรับ audio time series
  • คำนวณ mel-scaled spectrogram ใช้ melspectrogram() ด้วย window และข้อมูลขั้นตอน 3
  • แปลง power spectrogram (amplitude squared) เป็นหน่วย decibel (dB) ใช้เมธอด power_to_db()
  • แสดง spectrogram เป็น img (สามารถบันทึกได้ที่นี่)
  • บันทึก img ด้วย savefig()
  • แสดงภาพด้วยเมธอด 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()

ผลลัพธ์

วิธีบันทึก Librosa Spectrogram Plot เป็นภาพขนาดเฉพาะ