본문 바로가기
programming language/MATLAB

MATLAB 에서 mp3 파일 읽기

by __observer__ 2012. 10. 31.
반응형

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

 

그럼 오늘의 포스팅은 여기서 마치겠습니다~~


반응형

댓글