MATLAB 에서는 다양한 파일형태에 대해 읽고 쓸 수 있는 함수들을 기본적으로 제공하고 있습니다.
그런데 요즘 사람들이 가장 많이 사용하는 음악 파일 형태인 mp3 파일은 읽어 올 수 있는 함수가 없더군요.
그래서 검색을 해보니 역시… 내가 필요한 것은 어딘가에는 다 있더군요.
아래 주소에서 Alfredo Fernandez 라는 분이 만든 MP3WRITE(), MP3READ() 함수가 들어 있는 library 를 다운로드 받을 수 있었습니다.
http://www.mathworks.com/matlabcentral/fileexchange/6152-MP3WRITE%20and%20MP3READ
아래 그림 같은 화면에서 다운로드를 눌러서 mp3_toolbox_v2.0.zip파일을 다운로드 받습니다.
그럼 이제 MATLAB 에서 인식 할 수 있도록 path 만 설정해 주면 됩니다.
일단 위에서 다운로드 한 파일을 MATLAB 설치폴더 하위의 toolbox 폴더에 압축을 풉니다. 저는 C:\MATLAB\R2011a\toolbox\mp3_toolbox_v2.0 에 압축을 풀었습니다.
MATLAB toolbox 폴더는 윈도우의 경우 보통 C:\ Program Files\MATLAB\R2011a\toolbox 에 위치 합니다.
이제 MATLAB 을 켜고 맨위의 메뉴 중에 File à Set Path 메뉴를 선택 합니다.
그리고 아래 그림과 같이 Add with Subfolders 를 클릭하여 path 설정을 해 줍니다.
그럼 이제 간단하게 사용해 보죠~ Temp_mp3_file.MP3 라는 파일을 불러오는 예제 입니다.
[Y,FS,NBITS,encoding_info,ID3v1_tag_info] =mp3read('Temp_mp3_file.MP3');
위 값에서 Y 값이 바로 음악 데이터 파일 입니다. Stereo 와 mono 를 읽어 들일 수 있습니다.
Fs 는 sampling rate , NBITS 는 샘플당 비트 수 , encoding_info 는 말 그대로 encoding 정보 , ID3v1_tag_info 는 음악 파일의 태그 정보라고 하는군요.
저는 위 예제의 mp3 파일에 대해 실행 시켜 보니깐~ 요렇게~ 되는군요.
Y 값은 너무 길어서 나타내지 않았습니다.
mp3 파일을 만들 때는 mp3write() 함수를 사용하구요~
mp3write(Y,FS,NBITS,MP3FILE,ENCODING)
의 형태로 사용합니다.
Y,FS,NBITS 은 필수 입력 요소이구요. 위에서 설명한 인자들 입니다.
MP3FILE 은 만들고자 하는 mp3 파일명, ENCODING 은 저자가 정한 encoding 옵션 입니다.
인코딩 옵션에 대해 알고 싶은 분은 MATLAB command 창에 doc mp3write 라고 타이핑 하면 될 것 같습니다. Default 는 2번이네요.
그냥 간단하게 mp3 파일을 만들 때는 mp3write(Y,FS,NBITS) 하면 알아서~~ 추천하는 encoding 옵션으로 만들어 집니다.
요즘 나오는 음악 파일들 중에 간혹 mp3read() 함수로 읽어지지 안는 경우가 있는데 이는 대부분이 decoding 문제 같더군요.
이럴 때는 Goldwave 와 같은 프로그램을 이용하여 wave 파일로 변환해서 wavread() 함수를 사용하시거나 encoding 을 변경한 후에 읽어 들이면 정상적으로 읽어 집니다.
Goldwave 를 사용한 Wave 파일 변환 방법은 아래 포스팅을 참조하시길~
2012/04/23 - [유틸] - Goldwave 로 mp3 를 wav 파일로 만들기
지금까지의 설명은 윈도우를 기준으로 한 설명이었고~ 위 mp3read, mp3write 라이브러리는 윈도우에서만 돌아간다고 하더군요.
다른 운영체제를 사용하시는 분들은 아래 주소를 참조하시는 게 좋을 것 같습니다.
Alfredo Fernandez 도 아래 주소의 내용들에 영감을 받아서 위 함수들을 윈도용으로 만든 거라고 써 져 있더군요.
Dan Ellis 라는 콜롬비아 대학 교수가 만든 라이브러리네요~
http://www.mathworks.com/matlabcentral/fileexchange/13852
http://www.ee.columbia.edu/~dpwe/resources/matlab/mp3read.html
그럼 오늘의 포스팅은 여기서 마치겠습니다~~
'programming language > MATLAB' 카테고리의 다른 글
MATLAB에서 sqlite 사용하기 (0) | 2013.06.16 |
---|---|
MATLAB Gibbs Phenomenon (0) | 2013.04.10 |
MATLAB 로그 스케일 그래프 그리기 semilogx(),semilogy(), loglog() (0) | 2013.01.29 |
MATLAB recursive 파일 검색 (0) | 2012.12.08 |
MATLAB 메모리와 속도 (0) | 2012.10.21 |
MATLAB run configuration 을 통한 실행 (0) | 2012.08.15 |
MATLAB Conditional Breakpoints (2) | 2012.08.06 |
MATLAB 단축키 설정 백업 (0) | 2012.08.05 |
댓글