Python
[Python] numpy 패키지를 이용하여 FFT 하기
xangmin
2021. 7. 28. 21:02
반응형
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로 그릴 수 있다.
반응형