web-dev-qa-db-ja.com

コマンドラインソフトウェアを使用して音楽からボーカルを抽出するにはどうすればよいですか?

SoXを使用してボーカルを削除する方法を知っています。コマンドは

sox source.wav mono.wav oops

これは、ステレオをツインモノラルにミックスすることを意味します。各モノラルチャンネルには、左右のステレオチャンネルの違いが含まれています。と同等です

sox source.wav mono.wav remix 1,2i 1,2i

しかし、どうすればボーカルを抽出できますか?

ソースファイルをモノラルファイルとリミックスしようとしました

sox -M source.wav mono.wav vocal.wav remix 1,2i 1,2i

しかし、それは機能しません。

SoXでそれが不可能な場合は、他のコマンドラインソリューションをお勧めします。

6
whatUwant

重い操作を行わずにサウンドファイルのボーカルを完全に抽出することはできません。
問題は、数学的には、ソフトウェアがそれを分離するのに十分な情報を持っていないということです。

簡単な方法で、ステレオファイルを3つのデータとして分解できることを説明します。純粋な左の音(L)、純粋な右の音(R)、純粋な中央の音(M)。

2つのステレオチャンネルにXYという名前を付けると、次のようになります。

X = R + M/2
Y = L + M/2

そして、私たちが知っているのはXYであり、他の3つは私たちが分離したい未知のものです。

ボーカルを削除する方法のアイデアは、ボーカルがほとんどの場合中央部分にあるということです。だからあなたはただ計算することができます

X - Y = R - L

左右のデータが全然違うので、干渉がなく、音も悪くありません。ただし、すべてのミドル楽器も削除され、ボーカルが正確に中央に配置されていない場合、完全に機能しません。

必要なのは、Mを分離することです。データが与えられると、2つのチャネルの単純な組み合わせでは数学的に不可能です。3つの未知数を持つ2方程式線形システムであり、それを解くのに十分なデータがありません。 、およびMを抽出することは、それを解くことを意味します。

もっと重い方法でボーカルを抽出しようとするかもしれませんが、それはあなたに多くの時間を要し、結果はほとんど良くありません。ボーカルと楽器は主に同じ周波数範囲にあるため、それらを分離するのは非常に困難です。

3
Levans