10 ポイント 投稿者 xguru 2025-04-04 | まだコメントはありません。 | WhatsAppで共有
  • Shazamに着想を得た高速オーディオ認識・識別システムのRust実装オープンソース
  • 速度、効率、シンプルさを重視して設計されており、CLIを通じてオーディオファイルのインデックス作成と検索を実行可能

主な特徴と利点

  • 高速なインデックス作成・検索速度: 数百のオーディオファイルを高速に処理可能
  • シンプルなCLIコマンド: indexsearch コマンドによる直感的な利用方法を提供
  • Rustベースの高性能実装: システムリソースを効率的に活用
  • Shazamに類似したオーディオフィンガープリント方式を採用

内部動作の仕組み

前処理 (Preprocessing)

  • ステレオをモノラルに変換(左/右チャンネルの平均)
  • 計算量削減のためにダウンサンプリング: 44.1kHz → 11.025kHz
  • ダウンサンプリング前には、Nyquist周波数以上を除去するためのIIRローパスフィルタを適用

スペクトログラム変換

  • Short-Time Fourier Transform(STFT)を使用
    • 1024サンプルのHamming窓
    • 50%オーバーラップ
  • 時間-周波数ドメインに変換してピークを抽出
    • 各時間窓を周波数帯域に分け、各帯域で最も高い振幅のみを保持
    • 平均以下の振幅は除去し、特徴的なピークのみを維持

フィンガープリントデータの保存方式

  • ピークをハッシュとして構成して保存
    • 1つの anchor ピークを基準に、周辺ピークとの相対位置をタプルとして保存
    • (anchor freq, peak freq, delta time) 形式で構成
    • 32ビットまたは64ビット整数に変換可能

検索および並べ替えアルゴリズム

  • 入力サンプルからフィンガープリントを生成
  • データベースで候補フィンガープリントを照会し、時間順にソート
  • Longest Increasing Subsequence(LIS)ベースの時間的連続性分析
  • スライディングウィンドウを用いて、最も密集したマッチングピーク区間を探索
  • マッチングスコアを計算し、高スコア順に結果をソート

まだコメントはありません。

まだコメントはありません。