未分類

位相反転でボーカルを消す(WAVEファイル)

WAVEファイルのいじり方が段々分かってきたので今回は歌入り楽曲データのボーカルを抜くプログラムを作成してみる。環境はLinux(CentOS7)、言語はC言語。

はじめに

音楽プレーヤー等にイヤホンを半挿しにするとボーカルが消える(音が小さくなる)現象をご存じの方は多いと思う。楽曲用のソフトウェアをいじる方は位相反転というワードのほうがしっくりくるかもしれない。

この現象は左右の音声波のどちらか一方が位相反転(プラスとマイナスが入れ替わる)して合成されることで発生している。大抵ボーカルの音声は真ん中(左右とも同程度の成分量)なので波の打消しによって波が小さく(音が小さく)なるという理屈。説明は下記を参考とさせていただく。

soundside.blog3.fc2.com

okwave.jp

 

対象の楽曲

著作権とか色々あるので下記の楽曲を使わせていただくことにした。

ボーカル素材|著作権フリーの無料音楽素材ダウンロードサイト「ミュージックノート」

f:id:segmentation-fault:20170808230324p:plain

 

ソースコード

ボーカル消去は下記の処理で実現する。合算値のオーバーフローを考慮してないので所々で変な音になるかもしれない。

ソースコード全体(vo_cancel.c)

実行結果

加工前のnoise.wavからボーカルを消去したnoise_vocancel.wavを作成する。

再生してみると下記のようになる。(wavだと都合が悪いのでmp3に変換しています)

ボーカル消去前

ボーカル消去後