要約タイトル: Shazamの音楽認識技術の仕組み
Shazamとは何か?
- Shazamは、周囲で再生されている音楽を識別するアプリである。
- アプリを開き、音楽が再生されている間に数秒間オーディオを録音して、データベースで検索する。
- 過去には電話番号経由でサービスを提供しており、通話品質の限界のため音楽認識は難しい作業だった。
音楽認識が難しい理由
- 信号処理に慣れていない人にとって、オーディオ信号の複雑さゆえに音楽認識は難しい問題である。
- 曲の特定部分をトラック全体から見つける総当たり方式は非常に遅く、バックグラウンドノイズや周波数効果などによって信号の形が大きく変わる可能性がある。
システム概要
- Shazamは、音楽を登録する流れと認識する流れの2つに分かれており、どちらの流れにもスペクトログラムの計算、スペクトログラム内のピーク検出、ピークのハッシュ化といった共通の段階がある。
- 登録フローではハッシュをデータベースに保存し、認識フローではデータベース内のハッシュと比較して再生中の曲を識別する。
スペクトログラム計算
- オーディオのスペクトログラムを得るには、Fourier変換を理解する必要がある。
- Fourier変換はオーディオに存在する周波数を示し、これによって時間に応じた周波数の変化を表すスペクトログラムを生成する。
スペクトログラム
- スペクトログラムは、時間とともに変化する周波数をよりよく表現するために、曲を小さな部分に分けてFourier変換を適用する。
- スペクトログラムは、時間(X軸)、周波数(Y軸)、強度(Z軸/色)の3Dグラフである。
指紋生成
- スペクトログラムから最も大きな周波数を示すピークを見つけ、オーディオの固有の指紋を抽出する。
- これらのピークはノイズやその他の歪みにも耐えられるため、指紋生成に適している。
ピーク検出
- スペクトログラムのピークは信号内で最も強い周波数を表し、オーディオ指紋で利用するために均等に分布している必要がある。
- 最大フィルタ手法を使ってスペクトログラムのピークを強調し、その位置を見つける。
ハッシュ化
- スペクトログラムのピークのペアを作ってハッシュを生成し、これによって一意性を高める。
- ハッシュには2つのピークの周波数と時間差が含まれ、データベースに保存される。
マッチング
- データベース内の指紋コレクションから、与えられたオーディオサンプルと一致する指紋を見つける過程を説明する。
- ハッシュを検索し、曲ごとにグループ化したうえで、ハッシュが一致しているかを確認し、最も多く一致するトラックを選ぶ。
結論
- Shazamは、曲を登録して認識するために、スペクトログラム計算、ピーク抽出、ハッシュペア生成、指紋保存などの過程を経る。
GN⁺の見解
- この記事で最も重要なのは、Shazamが音楽を認識する複雑な過程をわかりやすく説明している点である。
- 技術的な詳細を段階ごとに分解し、初級ソフトウェアエンジニアでも理解できるようにしている点が興味深く魅力的である。
1件のコメント
Hacker Newsのコメント
Shazamの効率的なハッシュベースのアプローチ
Shazamが今なお持つ魔法のような魅力
Shazamの仕組みを説明するWall Street Journalの動画
ChromaprintとAcoustIDの説明
Shazamとデジタル信号処理に関する興味深い記事
他のメディアにも応用できる類似アルゴリズム
Every Noise At OnceというWebサイトの重要性
音楽認識プロセスの直感性
音楽認識に使われるフーリエ変換