MatlabでMP3を読み書きする

| コメント(0) | トラックバック(0)

MatlabでMP3を読み書きするルーチンが欲しくなって、作りました。無圧縮ファイルを使うほど音質重視じゃないけど、処理したいファイル数はたくさんある、という時にちょっと便利かもしれません。自分の環境のことしか考えてなかったので、Unix系でLAMEが入っているのが条件です。



MP3READ

function [x,fs,nbits] = mp3read(filename)

%MP3READ Read MP3 file as a matrix

% [x,fs,nbits] = mp3read(filename) reads MP3 file as a matrix. The MP3

% decoder must be specified at the beginning of the m-file.

% 2008-09-10 JikanBae

MP3DECODER = '/usr/local/bin/lame --silent --decode';
TMPDIR = '/tmp';

tmpfilename = ['MP3READ_' datestr(now, 'yyyymmddHHMMSSFFF')];
system(sprintf('%s %s %s/%s.wav', MP3DECODER, filename, TMPDIR, tmpfilename));

[x,fs,nbits] = wavread(sprintf('%s/%s.wav', TMPDIR, tmpfilename));
system(sprintf('rm %s/%s.wav', TMPDIR, tmpfilename));

MP3WRITE

function mp3write(x, fs, filename)
%MP3WRITE Write a matrix as an MP3 file
% mp3write(x, fs, filename) writes a matrix as an MP3 file. The MP3
% encoder must be specified at the beginning of the m-file. 'fs' is the
% sampling frequency of 'x'.

% 2008-09-10 JikanBae

MP3ENCODER = '/usr/local/bin/lame --silent -V 0';
TMPDIR = '/tmp';

tmpfilename = ['MP3WRITE_' datestr(now, 'yyyymmddHHMMSSFFF')];
wavwrite(x, fs, 24, sprintf('%s/%s.wav', TMPDIR, tmpfilename));

system(sprintf('%s %s/%s.wav %s', MP3ENCODER, TMPDIR, tmpfilename, filename));
system(sprintf('rm %s/%s.wav', TMPDIR, tmpfilename));


トラックバック(0)

トラックバックURL: http://www.mgsoft.org/cgi-bin/mt/mt-tb.cgi/2138

コメントする