1

iTunes Geniusのようなサービスと同様に、1人の開発者が実際に実装できる、互いにうまく調和する曲のプレイリストを自動的に作成できるアルゴリズムはありますか?a)リスニング習慣などのリモートデータベースを必要としないか、b)そのようなデータベースを必要としますが、自由に利用できるデータベースで動作する必要があります。

4

3 に答える 3

1

iTunes Geniusはわかりませんが、 last.fmデータベースとAPIが役立つと思います。トラックを表示するたびに、他のユーザーの好みに基づいて、類似したトラックのリストが表示されます。track.getSimilarAPIメソッドを使用して同じ情報を取得できます。

于 2012-04-22T21:22:18.260 に答える
1

私はこれを行い、tomaszによって説明されているようにlast.fmデータベースを使用しました。私は「関連アーティスト」を直接使用しませんでしたが、代わりに、異なるアーティストに関連付けられたタグを比較することによって、独自の関係グラフを作成しました(これは、lcfseth btwによって提案されたアプローチではありません。私は非常に幅広い音楽を持っているので、探索したいと思いました。」 「通常の」プレイリストでは一般的なパートナーではない可能性のある「自然な」接続。また、関連するアーティストがどれほど均一であるかはわかりませんでした)。

また、APIの呼び出しはレート制限されているため、ローカルデータベースを使用してlast.fmからデータをキャッシュしました。また、APIの他の部分を使用して、mp3タグから読み取った情報を改善/正規化することを試みました。

関連するアーティストの有用なグラフを生成することは、実際には非常に困難でした。主な理由は、グラフ内の一部のノードが他のノードよりも自然に重要になる傾向があるためです。グラフを「均等化」しないと、プレイリストは「重要な」アーティストに戻り続けます。

最終的な結果は、音楽の選択が「中心的なテーマ」とバリエーションの間でバランスが取れていたという点でうまく機能しました。しかし、実装はまったく洗練されておらず、グラフの計算には長い時間(数時間)かかる可能性があり、プログラムは実行時にかなりの量のメモリを消費しますが、それでもエルビスコステロを予想より少し多く再生しているようです。 o)

興味がある場合は、コードはhttp://code.google.com/p/uykfe/にあります。

ユーザーとしての私の観点からすると、何よりも優れているのは、ロジクールメディアサーバー(squeezeserver)のプレイリストを「リアルタイム」で更新し、リストが空のときに新しいトラックを追加できることです。これは、「手作業で」選択した音楽から継続する場合に非常に効果的です。もちろん、1回限りのプレイリストを生成することもできます。最後に、パラメーターを調整することで、音楽コレクションを「ランダムウォーク」することができます。関連する曲を再生しますが、あるスタイルから別のスタイルにゆっくりと変化します(実際には、これは実際には「デフォルト」モードです。単一のテーマにとどまるには、以前に再生した音楽にバイアスをかける追加のロジックが必要でした)。

psまた、gephiへの最終グラフのダンプは本当にクールでした-私はそれを印刷してもらい、壁に固定されました...

pps私はmusicbrainzデータベースも試しましたが、これは理論的には素晴らしいリソースのように聞こえます。しかし実際には、それは複雑すぎて文書化が不十分です。

于 2012-04-23T03:59:45.223 に答える
0

これらのデータベースのほとんどの背後にある考え方は、他のユーザーが特定の曲を聴いた後に何を聴いているかを確認することです。これらの統計の正確さはユーザーの数に依存するため、これをローカルで使用することはおそらく困難です。アルゴリズム自体は、実装するのはそれほど難しくありません。別の方法は、ジャンル、歌手に基づいて曲を並べ替えることです。これは通常、曲に埋め込まれている情報ですが、常にそうであるとは限りません。Winampにはこの機能がありますが、情報を手動で設定するか、オンラインの曲データベースを使用しない限り、古い曲では機能しません。

于 2012-04-23T03:50:49.750 に答える