import librosa
import librosa.display
import scipy as sp
import IPython.display as ipd
import matplotlib.pyplot as plt
import numpy as np
라이브러리 로드해주자.
# load audio file in the player
audio_path = "audio/piano_c.wav"
ipd.Audio(audio_path)
오디오 파일도 확인 해주자.
signal, sr = librosa.load(audio_path)
librosa도 로드해주자.
이번 실습에선 되도록 짧은 길이의 파일을 구하자. 그게 시각화가 잘 된다.
plt.figure(figsize=(18, 8))
librosa.display.waveshow(piano, sr=sr, alpha=0.5, color="blue")
plt.show()
음원 그래프를 확인해주자.
fourier transform의 내용은 이전 시리즈의 글을 확인해주자. 아니면 레퍼런스인 https://www.youtube.com/watch?v=XQ45IgG6rJ4&list=PL-wATfeyAMNqIee7cH3q1bh4QJFAaeNv0&index=10 여기서 확인하면 된다. 설명 잘해줌
ft = sp.fft.fft(piano)
magnitude = np.absolute(ft)
frequency = np.linspace(0, sr, len(magnitude))
scipy 라이브러리에서 푸리에 변환을 fft.fft로 구할 수 있다.
그래프에 그려야하는건 magnitude, frequency 이니까.
# plot spectrum
plt.figure(figsize=(18, 8))
plt.plot(frequency[:5000], magnitude[:5000]) # magnitude spectrum
plt.xlabel("Frequency (Hz)")
plt.ylabel("Magnitude")
plt.show()
그냥 plt로 그려주면
piano 음원을 주파수로만 변환한 fft를 시각화 할 수 있다.