본문 바로가기
Python 파이썬/Librosa

librosa ) constant Q 변환

by 하이방가루 2022. 3. 28.
728x90
반응형

librosa.cqt를 이용하면 얻을 수 있다.

1. 예제파일 가져오기

import numpy as np
import matplotlib.pyplot as plt
from IPython.display import Audio

import librosa
import librosa.display

y, sr = librosa.load(librosa.ex('trumpet'))
# Audio를 이용하면 오디오로 들을 수 있다.
Audio(data=y, rate=sr)
# 다음을 이용하면 원하는 부분만 들을 수 있다.
#Audio(data=y[5*sr:10*sr], rate=sr) # 5~10초

2. constant Q 변환

freq_n = 4 # 클수록 더 많은 중심주파수를 가진다.
hop_len = 1024 # 한 번 변환할 때 쓸 프레임의 샘플 수

C = librosa.cqt(y, sr=sr,
              	n_bins=84 * freq_n, bins_per_octave=12 * freq_n, # 더 높은 주파수 분해능
               	hop_length = hop_len # default : 512
              	)

 

3. 그래프로 보기

fig, ax = plt.subplots(figsize=(20,10))
img = librosa.display.specshow(C, sr=sr,
                               x_axis='time', y_axis='cqt_note', ax=ax,
                               bins_per_octave=12*freq_n,
                               hop_length = hop_len
                              )
ax.set_title('Constant-Q spectrum')
fig.colorbar(img, ax=ax)
plt.show()

 

4. 진폭 대신 데시벨로 변환

C_db = librosa.amplitude_to_db(np.abs(C), ref=np.max)

fig, ax = plt.subplots(figsize=(20,10))
img = librosa.display.specshow(C, sr=sr,
                               x_axis='time', y_axis='cqt_note', ax=ax,
                               bins_per_octave=12*freq_n,
                               hop_length = hop_len
                              )
ax.set_title('Constant-Q spectrum')
fig.colorbar(img, ax=ax,
              format="%+2.0f dB"
            )
plt.show()

728x90
반응형

'Python 파이썬 > Librosa' 카테고리의 다른 글

librosa ) 소개 & bpm 분석 예제  (0) 2022.03.28

댓글