2 ポイント 投稿者 GN⁺ 2024-11-11 | 1件のコメント | WhatsAppで共有
  • プロジェクト概要

    • このプロジェクトは、音楽を楽譜に変換するプログラムを作ることを目標としている。
    • 外部の楽器分離ライブラリを使わずに、音楽を構成する楽器ごとに分離するオープンソースプロジェクトである。
    • 個人的な必要性と、シンプルなオープンソースアルゴリズムの不在がプロジェクトの動機だった。
  • 準備プロセス

    • 楽器データは University of Iowa Electronic Music Studios のデータベースから取得した。
    • このデータから、全波形のフーリエ変換と波形のエンベロープを求める。
  • 動作原理

    • 楽器の音の波形は、主にフーリエ変換とエンベロープによって特徴づけられる。
    • これにより、どの楽器がどの音を演奏しているかを把握できる。
  • フーリエ変換

    • 音楽ファイルのフーリエ変換を 0.1 秒ごとに実行してスペクトログラムを生成する。
    • 各楽器の保存済みフーリエ変換を合算し、0.1 秒ウィンドウのフーリエ変換を再構成する。
    • 各楽器の大きさは、MSE コスト関数の周波数に関する偏微分によって求める。
  • エンベロープ

    • エンベロープは波形の上限線であり、ノイズや特定タイプの波形に対して頑健な方法が必要となる。
    • 波形をチャンクに分け、各チャンクの最大値を取ることでエンベロープを求める。
    • エンベロープをアタック、サステイン、リリースに分けて分析する。
    • 楽器の波形は静的または動的な減衰を持つ場合があり、これを区別するために減衰係数と変化率を分析する。
  • 波形のさまざまな種類

    • 音楽ファイルを処理するため、各音の周波数に対してバンドパスフィルタを適用する。
    • 各楽器について、アタックとリリースの相互相関によって各音の開始と終了を見つけ、MSE を計算してコストを求める。
    • フーリエ変換の段階で見つけた大きさとコストの逆数を掛け合わせて、最終的な大きさを求める。
  • 結果と表示

    • matplotlib の散布図を使って楽譜を表示する。
    • 当初は大きさからオーディオを再構成しようとしたが、多くの問題が発生したため断念した。
    • 楽譜の再構成に有用であり、音程やコードの特定に苦労する場合に特に役立つ。

1件のコメント

 
GN⁺ 2024-11-11
Hacker Newsのコメント
  • タイトルは誤解を招くかもしれない。このプロジェクトは音源分離ではなくピッチ検出アルゴリズムで、楽器を分類する機能も含んでいる
    • 結果を修正するのにより時間がかかる可能性がある
  • 自動音楽転写(オーディオ->MIDI)は、ディープラーニングと音楽情報検索における重要なサブ分野である
    • GoogleのMT3プロジェクトが成功例として言及されている
    • ピアノ転写では、低品質のオーディオでもほぼ完璧な精度を示す
  • オーディオ分離に関心があるならRipXは参考になる
    • 分離したトラックをMIDIファイルとしてエクスポートできる
    • 依然としていくつか問題はあるが、うまく動作する
    • ステム分離は今や音楽ソフトウェアの標準であり、ほぼすべてのDAWがこれを提供している
  • 実際の楽器の物理特性は、単純なフーリエ変換テンプレートでは捉えきれない可能性がある
    • トランペットは、弱く演奏したときと大きく演奏したときで異なる倍音スペクトルを持つことがある
    • 楽器の強度に応じて倍音成分が大きく変化することがある
    • 各楽器に対して強度依存のフーリエテンプレートを追加すれば、精度を向上できる可能性がある
  • 15年前にAudiosurfをプレイしていた記憶がよみがえる
  • YouTubeのビデオデモはソース分離を示していないように見える
  • "separation" のスペルが4回間違っていることに言及する人がいない
  • 一部の動画には音声がないようだ
  • このプロジェクトはJoshua Birdの弟の作品かもしれない
    • Joshua Birdはすでに印象的なプロジェクトを手がけていた
  • ソースコードは見つからないが、プロジェクトは興味深そうに見える