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

จะบันทึกพล็อตสเปกโตรแกรม Librosa เป็นภาพขนาดเฉพาะได้อย่างไร


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

ขั้นตอน

  • กำหนดขนาดรูปและปรับช่องว่างภายในระหว่างและรอบแผนย่อย..

  • สร้างร่างและชุดแผนย่อย

  • เริ่มต้นตัวแปรที่แตกต่างกันสามตัว hl , สวัสดี , ด้วย เพื่อเก็บตัวอย่างต่อครั้งในสเปกโตรแกรม ความสูงและความกว้างของภาพ

  • โหลดแทร็กสาธิต

  • สร้าง หน้าต่าง ก็คือรายการอนุกรมเวลาเสียง..

  • คำนวณสเปกโตรแกรมที่ปรับขนาดเมลโดยใช้ melspectrogram() พร้อมหน้าต่าง และข้อมูลขั้นตอนที่ 3

  • แปลงพาวเวอร์สเปกโตรแกรม (แอมพลิจูดกำลังสอง) เป็นหน่วยเดซิเบล (dB) โดยใช้ power_to_db() วิธีการ..

  • แสดงสเปกโตรแกรมเป็น 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 เป็นภาพขนาดเฉพาะได้อย่างไร