曲のボーカルセグメントと非ボーカルセグメントを分類するための「スペクトル変化検出」の実行方法を知りたいです。スペクトログラムからスペクトルの変化を見つける必要があります。特にMATLABに関連する、これに関する詳細な情報はありますか?
5 に答える
音声から個別の信号を分離することは非常に活発な研究分野であり、非常に難しい問題です。これは、文献ではブラインド信号分離と呼ばれることがよくあります。(前のリンクにいくつかのMATLABデモコードがあります。
もちろん、音楽にボーカルが含まれていることがわかっている場合は、多くのボーカル分離アルゴリズムの1つを使用できます。
他の人が指摘しているように、生のスペクトル分析のみを使用してこの問題を解決することは非常に難しい問題であり、それに対する適切な解決策を見つけることはまずありません。せいぜい、ミックスからいくつかのボーカルといくつかの追加のクロスオーバー周波数を抽出できる可能性があります。
ただし、ここで使用しているオーディオマテリアルの性質についてより具体的に説明できる場合は、もう少し詳しく説明できる可能性があります。
最悪の場合、あなたの素材は通常の曲の通常のmp3、つまりフルバンド+ボーカリストになります。あなたの質問の性質を考えると、これはおそらくあなたが見ているケースだと私は感じています。
最良の場合、マルチトラックスタジオレコーディングにアクセスでき、少なくともフルミックスダウンとインストルメンタルトラックがあります。この場合、ミックスからボーカル周波数を抽出できます。これを行うには、一方のトラックからインパルス応答を生成し、それをもう一方のトラックに適用します。
真ん中のケースでは、音楽のパラメータに合わせて調整されたある種のアルゴリズムを適用できる単純な音楽を扱っています。たとえば、電子音楽を扱っている場合は、トラックのステレオ幅を利用して、すべてのモノラル要素(ベースライン+キックなど)を削除し、ボーカルやその他のパンされた楽器を抽出してから、次の種類の楽器を適用できます。そこからのフィルタリングとスペクトル分析。
要するに、任意のソース素材からきれいなアカペラカットを生成するための万能アルゴリズムを作成することを計画している場合は、ここで噛むことができる以上のものを噛んでいる可能性があります。ソースマテリアルを具体的に制限できる場合は、それらのソースの性質に応じて、さまざまなアルゴリズムを自由に使用できます。
これは難しい。これを確実に行うことができれば、あなたは熟達したコンピューター科学者になります。私が読んだ最も有望な方法は、歌詞を使用して、比較用の音声のみのトラックを生成することでした。繰り返しますが、これを実行して論文を書くことができれば、(コンピューター科学者の間で) 有名になります。さらに、カラオケのタイミングを自動的に生成することで、多くのお金を稼ぐことができます.
最初にインストルメンタルをオリジナルと同期し、それらが同じ長さとビットレートであること、開始と終了が正確な時間であることを確認し、それらを .wav に変換します。
次に、次のようなことを行います
I = wavread(instrumental.wav);
N = wavread(normal.wav);
i = inv(I);
A = (N - i); // it could be A = (N * i) or A = (N + i) you'll have to play around
wavwrite(A, acapella.wav)
それはそれを行う必要があります..少し線形代数は大いに役立ちます。