Fourier Transform 구하기

응큼한포도·2024년 4월 25일
0

준비

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

음원 그래프를 확인해주자.

scipy로 fourier transform 구하기

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를 시각화 할 수 있다.

profile
미친 취준생

0개의 댓글