본문 바로가기
Python

[Python] numpy 패키지를 이용하여 FFT 하기

by xangmin 2021. 7. 28.
반응형

Numpy에 내장함수를 이용하여 간단하게 FFT를 해보자.

 

다음과 같은 음원 중 일부를 가지고 FFT를 진행한다.

 

# linear scale

import matplotlib.pyplot as plt
import librosa
import numpy as np

wav_file = '파일경로/파일명'
wav, sr = librosa.load(wav_file,sr=16000)

# 음원에서 FFT 시작점, N-point는 320 
start = int(sr * 0.3)
end = start + 320
wav = wav[start:end]

signal = np.fft.fft(wav)
signal = signal ** 2 / len(signal)

plt.plot(abs(signal))
plt.xlabel("bin")
plt.xlim(0, int(len(signal)/2))
plt.ylabel("Amplitude")
plt.grid()
plt.show()

 

 # log scale

import matplotlib.pyplot as plt
import librosa
import numpy as np

wav_file = '파일경로/파일명'
wav, sr = librosa.load(wav_file,sr=16000)

# 음원에서 FFT 시작점, N-point는 320 
start = int(sr * 0.3)
end = start + 320
wav = wav[start:end]

signal = np.fft.fft(wav)
signal = signal ** 2 / len(signal)
signal = librosa.power_to_db(signal)

plt.plot(signal)
plt.xlabel("bin")
plt.xlim(0, int(len(signal)/2))
plt.ylabel("Amplitude")
plt.grid()
plt.show()

 

이와 같이 numpy의 fft 내장함수를 이용하여 fft의 결과를 log와 linear로 그릴 수 있다.

 

반응형

댓글