Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Librosa 스펙트로그램 플롯을 특정 크기의 이미지로 저장하는 방법은 무엇입니까?

<시간/>

Librosa는 오디오 및 음악 파일을 분석하는 데 도움이 되는 Python 패키지입니다. 이 패키지는 또한 음악 검색 정보 시스템을 만드는 데 도움이 됩니다. 이 글에서는 Librosa 스펙트로그램 플롯을 특정 크기의 이미지로 저장하는 방법을 알아보겠습니다.

단계

  • Figure 크기를 설정하고 서브플롯 사이와 주변의 패딩을 조정합니다.

  • Figure와 서브플롯 세트를 생성합니다.

  • 세 가지 다른 변수 초기화, hl , 안녕 , , 이미지의 스펙트로그램, 높이 및 너비에 시간당 샘플을 저장합니다.

  • 데모 트랙을 로드합니다.

  • 만들기 , 즉, 오디오 시계열 목록..

  • melspectrogram()을 사용하여 멜 스케일 스펙트로그램을 계산합니다. 이 있는 및 3단계 데이터.

  • power_to_db()를 사용하여 전력 스펙트로그램(진폭 제곱)을 데시벨(dB) 단위로 변환합니다. 방법..

  • 스펙트로그램을 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 스펙트로그램 플롯을 특정 크기의 이미지로 저장하는 방법은 무엇입니까?