MATLABで音声処理をやってみる
最近MATLABで画像処理をやってるが、音声処理もやってみたくなってきたので、こちらについてもやったことを書いていきたいと思う。
まず今回は動画ファイルや音声ファイルを扱う練習用の小ネタとして、mp4の動画ファイルからwavファイルの音声ファイルに変換(というより抽出?)して保存するを書いてみる。
今回使うmp4ファイルは、先日RaspberryPiでやった電子オルゴールの動画↓
ラズパイでパッシブブザーをPWM制御して電子オルゴールつくってみた #RaspberryPi #電子工作 pic.twitter.com/pXdVqDTW1A
— Wakky (@wakky_free) May 21, 2022
ここから音声だけをwavファイルで取り出して、取り出したwavファイルで次回以降で色々と解析や処理をやってみたいと思う。
開発環境
MATLAB online
MATLAB R2022a
mp4ファイルをMATLAB onlineにアップロードする
以前と同じようにアップロードを選択しても良いが、MATLAB onlineでもドラッグ&ドロップでもアップロードできることを発見。
これで準備は完了。
mp4ファイルをaudioreadで読み込む
まずはmp4ファイルをaudioreadというコマンドで読み込む。今回は以下のコマンドを実行した。
[y,Fs] = audioread('buzzer_march.mp4');
このコマンドを実行すると、buzzer_march.mp4というファイルからオーディオデータの行列yと、サンプルレートFsがワークスペースに保存される。この例では48kHzでサンプリングされているオーディオデータが取れている。
誤解が無いようにことわっておくと、MATLAB上で音声処理するならこのままyとFsを使って音声処理を行って、最後にwavファイルなど任意の形式でファイルを書きだしても別に問題ない。
ただ、MATLAB Driveの容量には限りがあるためできるだけ無駄な動画ファイルは置いておきたくない。ということで今回はmp4ファイルから抜き出した音声をそのままwavファイルとして保存して、以降はこのwavファイルを使って音声処理を行う。
audioreadの詳細は以下を参照。
https://jp.mathworks.com/help/matlab/ref/audioread.html
読み込んだ音声をaudiowriteでwavファイルとして保存
あとは以下のコマンドaudiowriteでオーディオデータとサンプリングレートを指定して、wavファイルとして書き出せばOK。
audiowrite('buzzer_march.wav',y,Fs);
これで現在のフォルダにwavファイルが保存される。MATLAB onlineからローカルのPCにデータを移したいときは、wavファイルをクリックして「ダウンロード」を押せばダウンロードできる。
audiowriteの詳細は以下を参照。
https://jp.mathworks.com/help/matlab/ref/audiowrite.html
これでmp4ファイルからwavファイルで音声を抜き出せた。mp4ファイルはもう使わないので削除しておいた。次回はこのwavファイルを時間軸、周波数軸の2つの視点から解析してみる。
参考文献
公式ドキュメントと以下の本を読みつつ色々試しています。
MATLAB/Simulink記事まとめ
MATLABとSimulinkの記事は以下にまとめてます。