반응형
사용 목적에 따라 wav 파일의 특정 주파수 폭만 필요한 경우가 많다.
그래서 하는게 전처리 작업(Preprocessing)인데, 오디오 파일을 파이썬으로 Preprocessing하는 방법을 알아보자.
<코드는 하단 깃허브 링크 참조>
Scipy로 wav 파일을 불러서 sampling rate와 wav data를 각각 저장한다.
CatinaBand 60.wav 파일을 사용했는데, Sampling rate는 22050, duration은 60초이다.
파형은 위 그림과 같다.
이제 이 wav data를 주파수 영역에서 봐 보도록 하자.
numpy의 fft를 이용하여 Fast Fourier Transform을 했다. Sampling rate가 22050이므로, 우측 상한값은 11005이다.
Magnitude는 우함수이므로, 양수 값만 그래프로 나타냈다.
scipy.signal.firwin을 이용하여 lowpass 필터를 적용시킨다.
scipy.signal.firwin에는 lowpass필터 뿐만 아니라, highpass필터, bandpass필터도 있다.
1000hz 이상의 성분들은 제거하는 lowpass필터를 적용해보았다.
시간 영역으로 그래프로 보면 다음과 같다.
처음 wav 파일, 1000Hz, 500Hz로 자른 파일을 한번에 봐보면 다음과 같다.
이렇게 필터를 적용시킨 data를 wav파일로 보내면 끝이다.
참고
반응형
'알고리즘 문제 & 프로그래밍 > 파이썬' 카테고리의 다른 글
일복리, 이자 계산 & 기간 구하기 문제 | 파이썬 datetime 라이브러리 (2) | 2020.07.01 |
---|---|
복리, 원리합계, 이자 계산 문제(등비수열) | 파이썬 while, for문 (0) | 2020.06.24 |
[백준 1110번] 더하기 사이클 문제 | 파이썬 while문 (0) | 2020.06.20 |
[백준 2884번] 알람시계 문제 | 파이썬 if문 (0) | 2020.06.13 |
[프로젝트 오일러] 5번 문제 & 풀이 (1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수) (0) | 2020.05.30 |
댓글