Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách lưu biểu đồ spectrogram Librosa thành ảnh kích thước cụ thể?


Librosa là gói Python giúp phân tích file âm thanh và nhạc. Gói này cũng giúp tạo hệ thống truy xuất thông tin âm nhạc. Trong bài này, chúng ta sẽ xem cách lưu biểu đồ spectrogram Librosa thành ảnh với kích thước cụ thể.

Các bước

  • Thiết lập kích thước figure và điều chỉnh padding giữa và xung quanh subplots.

  • Tạo figure và tập subplots.

  • Khởi tạo ba biến khác nhau: hl, hi, wi, để lưu mẫu trên thời gian trong spectrogram, chiều cao và chiều rộng ảnh.

  • Load track demo.

  • Tạo window, danh sách cho audio time series.

  • Tính mel-scaled spectrogram, dùng melspectrogram() với window và dữ liệu bước 3.

  • Chuyển power spectrogram (bình phương biên độ) sang đơn vị decibel (dB), dùng power_to_db().

  • Hiển thị spectrogram như img (có thể lưu tại đây).

  • Lưu img bằng savefig().

  • Hiển thị ảnh bằng plt.show().

Ví dụ

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  # số mẫu trên bước thời gian trong spectrogram
hi = 128  # Chiều cao ảnh
wi = 384  # Chiều rộng ảnh

# Load track demo
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()

Kết quả

Cách lưu biểu đồ spectrogram Librosa thành ảnh kích thước cụ thể?