Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào để lưu một biểu đồ quang phổ Librosa dưới dạng một hình ảnh có kích thước cụ thể?

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

Các bước

  • Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô con ..

  • Tạo một hình và một tập hợp các ô phụ.

  • Khởi tạo ba biến khác nhau, hl , xin chào , wi , để lưu trữ các mẫu mỗi lần trong quang phổ, chiều cao và chiều rộng của hình ảnh.

  • Tải bản trình diễn.

  • Tạo cửa sổ , tức là danh sách cho chuỗi thời gian âm thanh ..

  • Tính toán quang phổ tỷ lệ mel bằng cách sử dụng melspectrogram () với cửa sổ và dữ liệu bước 3.

  • Chuyển đổi biểu đồ công suất (bình phương biên độ) sang đơn vị decibel (dB), sử dụng power_to_db () phương pháp ..

  • Hiển thị biểu đồ quang phổ dưới dạng img (chúng tôi có thể lưu nó ở đây).

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

  • Hiển thị hình ảnh bằng plt.show () phương pháp.

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 # 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()

Đầu ra

Làm thế nào để lưu một biểu đồ quang phổ Librosa dưới dạng một hình ảnh có kích thước cụ thể?