3

オーディオ処理の知識がない音楽愛好家向けのプロジェクトの提案があります。このプロジェクトは面白いと思いますが、実装方法について明確なイメージがありません。

企画案:歌は好きだけど、適当な伴奏(BGM)が見つからない人がいます。ギターが弾ける人は、ギターを弾きながら歌うこともあります(ギターが提供するリズムはBGMです)。このプロジェクトは、人々が歌うためにギターを弾くのと同様の結果を達成することです。

このプロジェクトを実装するには、次のコンポーネントが必要だと思います。

  1. 音楽知識(BGMとしてのギターの弾き方(簡単なパターンでもいいかもしれません))
  2. 信号/音声処理

    • キー検出
    • ビート検出
    • コードマッチング

目的を達成するために見逃した他のコンポーネントはありますか? どのライブラリでも私を助けることができますか? プロジェクトは 1.5 か月で完了する予定です。出来ますか?(バックグラウンドミュージックを演奏するギター初心者のように機能することを期待しています)。開発言語については、c/c++ は使用しません。現在、私のお気に入りは python ですが、実装プロセスを簡素化するのに役立つ限り、他のプログラミング言語を使用する可能性があります。

音楽のバックグラウンドはなく、非常に基本的なオーディオ処理を学んでいます。提案やコメントは感謝されます。


編集情報: 自動伴奏で検索してみたところ、いくつかのソフトがありました。オープン ソース プロジェクトが見つかりませんでした。音声情報を処理する方法の詳細を知りたいです。それに関するオープンソースプロジェクトを知っている場合は、知識を共有してください。ありがとうございます。

4

1 に答える 1

4

まず、歌のキー、コード進行、またはリズム (構造、スタイルなどは言うまでもありません) についての予備知識がない状況で、ギタリストが歌手の歌にうまく同行するために何をしなければならないかを検討することから始めるかもしれません。 .)

伴奏者 (人間またはコンピューター) が以前に歌を聞いたことがない状況でこれをリアルタイムで行うことは困難です。伴奏について適切な音楽的選択を行うために何が歌われているかを分析するのに時間がかかるためです。現実の世界でこの能力を持つギタリストまたは他のミュージシャンは、高度なスキルを持っていると見なされます。

音楽のバックグラウンドがなければ、1.5 か月という非常にやりがいのあるプロジェクトに思えます。「おそらく単純なパターンが機能するでしょう」 - たぶん、しかし可能な単純なパターンはたくさんあります!

それほど野心的でないプロジェクトは次のとおりです。

  • 曲全体を録音して分析し、バッキングをレンダリングします (まだ多くの作業があります!)
  • ボーカル ハーモナイザー エフェクトと同じように、単一のハーモニー ラインまたはパートを作成します。
  • ユーザーが入力したコード進行に基づいてバッキングを生成する

最初のコメントに返信して編集します。

完全な伴奏を生成したい場合は、(あなたが言うように) キーとコード進行、およびタイミング (拍子記号とバーのどのビートが「ビート 1」であるかを検出することを含む) の両方に対処する必要があります。

このレベルのタイミング情報を取得するのは難しい場合があります。これは、歌からビートを取得するために使用される標準的な手法 (特定の周波数範囲で振幅のピークを探す) を使用して音声のみからビートを検出することはできないためです。

タイミングをまったく計算せず、歌われた音符 (またはそのサブセット) の開始に合わせてコードを演奏するだけでも、良い結果が得られる場合があります。

あなたがする必要があるのは、

  • メモを検出します。この投稿は、Python でのピッチの検出に関するものです: Python 周波数検出。振幅検出はより簡単です。
  • 曲のルート ノート (さらに野心的には、ルート ノートが変化する場所) を計算するためのアルゴリズムを考え出します。場合によっては、メロディーだけでは判別が難しい場合があります。最初の音符または最も一般的な音符がルートであると想定することから始めることができます。
  • コード進行を生成するためのアルゴリズムを考え出します (「メロディーのハーモニー」を Web 検索してください)。明らかに、これを行うための客観的に正しい方法や間違った方法はなく、限られた範囲のスタイルに対してのみ説得力のある方法でこれを行うことができます. I、IV、V など、限られたコードのサブセットを想定することから始めたいと思うかもしれません。これらは、ほとんどの単純な「童謡」スタイルの曲で機能するはずです。

もちろん、1 拍目から始まる単純な曲に限定すると、拍子記号を簡単に計算できるようになります。一般的に、成功へのルートは、最初に簡単なケースに対処し、それを基に構築することだと思います。

于 2013-10-03T08:54:54.303 に答える