MATLABで音声処理その1:mp4の動画ファイルから音声だけ抽出してwavファイルで保存する

投稿日:2022年9月17日
最終更新日:2022年9月17日

MATLABで音声処理をやってみる

最近MATLABで画像処理をやってるが、音声処理もやってみたくなってきたので、こちらについてもやったことを書いていきたいと思う。

まず今回は動画ファイルや音声ファイルを扱う練習用の小ネタとして、mp4の動画ファイルからwavファイルの音声ファイルに変換(というより抽出?)して保存するを書いてみる。

今回使うmp4ファイルは、先日RaspberryPiでやった電子オルゴールの動画↓

ここから音声だけを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の記事は以下にまとめてます。

MATLAB/Simulinkで遊んでみる まとめ

 


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください