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 |
---|
댓글