Skip to content

イントロダクション ​

初めて libsonare を使う場合は、このページで基本用語を確認してください。そのあと 学習順ガイド で、自分の目的に合う最短ルートを選びます。

ここでの説明は意図的に簡潔にしてあります。各用語をさらに深く知りたくなったら、用語集 と MIR の全体像 を参照してください。

このページで身につくこと ​

このページを読むと、次のことを説明・判断できるようになります。

  • libsonare が何であり、どの種類の音楽/音声ツールを支えるかを説明できる。
  • 波形からスペクトログラム、特徴量、高レベル楽曲解析へ進む MIR(Music Information Retrieval、音楽情報検索)パイプラインの基本を理解できる。
  • 解析、編集、ミキシング、マスタリング、リアルタイムストリーミング、ルーム音響、内蔵シンセサイザー、ヘッドレス DAW ランタイム、逆変換特徴量を区別できる。
  • DSP の前提知識がなくても、次に 学習順ガイド から読むページを選べる。

libsonare とは? ​

libsonare は、ブラウザネイティブおよびネイティブ環境の音楽ツール向けの、外部依存のないオーディオエンジンです。既存の音声を解析する処理(テンポ、キー、コード)から、新しい音声を作り出す処理(ミキシング、マスタリング、MIDI をシーケンスして完成トラックに仕上げる)まで、一連の流れ全体をカバーします。

libsonare が扱う領域は大きく分けると次のとおりです。

領域libsonare でできること次に読む
音楽情報検索(MIR)テンポ、キー、コード、ビート、ダウンビート、拍子、構成、メロディ、音色、ダイナミクスを抽出する楽曲解析
音源分離録音を倍音成分と打撃成分(HPSS)や、ラベルのないスペクトル成分(NMF)に分ける。学習済みの分離モデルではなく信号処理音源分離
音声から MIDIモノラルの録音をノートイベントに採譜する。プロジェクトの MIDI クリップへ直接書き込むこともできる音声から MIDI
編集とクリエイティブ FXピッチ、タイミング、声質、リバーブ、モジュレーション系エフェクトを扱う編集 DSP、エフェクトインサート
リペアノイズ、ハム、クリップ、クリック、クラックル、拡散残響を測定して抑えるオーディオリペアの流れ
ミキシングリアルタイム安全なミキサー、ルーティング、バス、センド、メーターを構築するミキシングエンジン
マスタリング放送品質のマスタリングプロセッサと、ラウドネス/True Peak の処理マスタリングプロセッサ、マスタリングアシスタント
内蔵シンセサイザーと MIDI17 種のエンジン(うち 11 が物理モデル)とデータ不要の GM/GS フォールバックバンクを備えたシンセサイザー、または持ち込みサンプル用の SoundFont 2 プレイヤーで MIDI をレンダリングするサンプルを同梱しない理由は 音源方式、その先は 内蔵シンセサイザー
ヘッドレス DAW ランタイムオーディオ/MIDI トラックでプロジェクトを編集し、MIDI をシーケンスし、バウンスやリアルタイム再生を行うプロジェクト編集、プロジェクトのバウンス
ストリーミングとリアルタイム届いた音声をブロック単位で解析し、ライブ MIDI 付きのトランスポートを動かすリアルタイムとストリーミング
ルーム音響部屋の残響・明瞭度の測定や推定、RIR(ルームインパルス応答)合成、ルームモーフィングを行うルーム音響解析

ラウドネス、LUFS、True Peak とは?

デジタルのレベルは、フルスケールを基準にしたデシベル(dBFS)で測ります。0 dBFS はサンプルが取れる最大の値なので、ふつうのレベルは負の数になります。デシベルの基礎は オーディオ基礎 で説明しています。

LUFS(Loudness Units relative to Full Scale)は、配信・放送で使う番組ラウドネスの標準化された推定値です。2 曲の積分 LUFS を合わせると比較の出発点になりますが、周波数特性やダイナミクスが違えば、同じ大きさには聞こえないこともあります。True Peak(トゥルーピーク)は、サンプル間のピークを含む再構成波形の最大レベルを推定します。サンプルピークメーターでは見落とすピークが、再生やエンコード時の歪みにつながることがあります。

libsonare は C++17 で書かれており高速に動作するほか、WebAssembly にコンパイルできるため、サーバーを介さずブラウザ上で直接同じプロセッサを実行できます。

WebAssembly とは?

WebAssembly(WASM)は、ウェブブラウザ上でネイティブに近い速度で実行されるバイナリ命令形式です。

C++ などの言語で書かれたコードをコンパイルし、サーバーやインストールなしにブラウザ上で実行できます。

libsonare はこれを活用して、C++ レベルの音声解析パフォーマンスを Web アプリケーションに直接提供します。

入口を選ぶ ​

やりたいことブラウザで試す次に読む
曲から BPM、キー、コード、セクションを読み取る楽曲解析スタジオはじめに
トラックをマスタリング、ミックスするマスタリングスタジオ、ミキシングスタジオマスタリングアシスタント、ミキシングエンジン
MIDI を音にするシンセプレイグラウンド音源方式
録音をノートに採譜する、録音を編集・リペアするピアノ採譜音声から MIDI、オーディオリペアの流れ

どのデモもエンジンをブラウザ内で動かし、何もアップロードしません。

音楽情報検索(MIR)とは? ​

音楽情報検索(MIR)は、音楽から意味のある情報を抽出する研究分野です。人間は曲を聴くだけでテンポを感じ取り、コードの変化を認識し、楽曲の構造を把握できます。MIR はこれと同じことをコンピュータで実現することを目指しています。

代表的な MIR タスク:

タスク回答する問い
テンポ推定この曲の速さは?(例:120 BPM)
キー検出この曲の調は?(例:ハ長調)
ビート追跡ビートはいつ鳴っているか?
コード認識いつ、どのコードが鳴っている?
構造解析Aメロ、サビ、ブリッジはどこ?
ピッチ追跡歌われている・演奏されている音は?

BPM とは?

BPM は beats per minute(1 分あたりの拍数)の略で、曲の鼓動の速さを表します。60 BPM なら 1 秒に 1 拍で、多くのポップスは 90〜130 BPM 前後です。

libsonare はこれらすべての機能を単一のライブラリで提供します。

誰のためのライブラリ? ​

libsonare は音楽関連アプリケーションを開発するデベロッパー向けに設計されています。

  • Web アプリ開発者 — バックエンドなしで音声解析機能をアプリに追加できます。DJ ツールの BPM 検出、練習アプリのコード表示、自動楽曲構造ビューアなどを、ブラウザ上の WebAssembly でクライアントサイド実行できます。

  • 音楽ツール制作者 — DAW プラグイン、コード検出器、自動採譜ツール、ブラウザミキサー、マスタリングワークフロー、音楽教育ソフトウェアを構築できます。libsonare が解析・ミキシング・マスタリングのエンジンを提供するので、ユーザー体験の構築に集中できます。

DAW とは?

DAW(Digital Audio Workstation)は音声の録音・編集・制作を行うソフトウェアです。DAW プラグインは、そこにエフェクト、楽器、解析ツールを追加する拡張モジュールです。

  • 音声研究者 — Python で librosa を使用している方向けに、互換性のある API とアルゴリズムを提供します。重いパイプラインはネイティブ C++ で実行でき、ブラウザでも動作します。

  • ゲーム / インタラクティブメディア開発者 — ストリーミング API を使って、リズムゲーム、音楽ビジュアライザー、アダプティブオーディオシステム向けのリアルタイム音楽解析を組み込めます。

音声解析の仕組み ​

音声解析は一発でできるものではなく、各段階が前の段階の出力を利用する パイプライン です。この流れを理解すると、libsonare が内部で何をしているのか、なぜ特定の機能が他の機能に依存するのかが見えてきます。

このセクションは概要、詳しい地図は MIR の全体像

ここではパイプラインをざっと一巡します。各特徴量がどう関係するかの、相互リンク付きの詳しい地図と「どの問いに、どの機能か」の表は MIR の全体像 を参照してください。

デコード済みサンプルから答えまで
デコードモノラル Float32ArraySTFT1 つの行列を共有特徴量時間方向の行列推定器1 つの判断STFT を通らないAudiofromMemory → dataSTFTnFft・hopLengthmelSpectrogramchromamfcconsetEnvelopermsEnergyzeroCrossingRatepitchYinpitchPyindetectKeydetectChordsanalyzeSectionsdetectBpmdetectBeatsanalyzeMelodyanalyze() は STFT を一度だけ計算し、同じ行列をすべての推定器に渡します。単一の答えを返すヘルパー(detectBpm、detectKey など)は毎回サンプルから組み直します。
  • STFT を経由して計算
  • サンプルから直接読む
  • 推定器(特徴量から 1 つの判断)
STFT は一度だけ計算して共有されます。メルが MFCC とオンセットエンベロープへ、クロマがキー・コード・セクションのラベル付けへ、オンセットエンベロープがテンポとビート追跡へ流れます。下段のレールはそこを通らない経路で、レベル、ゼロ交差率、ピッチ追跡は波形を直接読みます。

ステージ 1: スペクトル解析 ​

生の音声は時間に沿った振幅値の列、つまり波形です。値のひとつひとつがサンプルで、1 秒が何サンプルでできているかをサンプルレートと呼びます。サンプル、デシベル、周波数の基礎は オーディオ基礎 でゼロから説明しています。

音楽的な意味を抽出するには、まずこれを スペクトログラム に変換します。短時間フーリエ変換(STFT)を使い、音声を短いオーバーラップする窓に分割し、各窓の周波数成分を計算します。

結果は「各時刻にどの周波数がどれだけ含まれているか」を示す 2 次元マップになります。この解析は次の 3 つの値で決まります。

パラメータ意味トレードオフ
サンプルレート音声が 1 秒あたり何個のサンプルを持つか(例:CD 品質は 44,100 Hz)扱える最高周波数はレートの半分です(ナイキスト周波数。44.1 kHz なら 22,050 Hz)。高いほどデータ量が増えます
FFT サイズ(n_fft)各解析窓のサンプル数大きいほど周波数分解能が高く、時間分解能は低くなります
ホップ長(hop_length)窓を何サンプルずつ移動させるか小さいほど時間的な詳細が得られますが、計算量が増えます

libsonare は通常、呼び出し側がサンプルレートを明示します。n_fft=2048、hop_length=512 などの一般的な DSP パラメータは、librosa でよく使われる値に寄せています。各ブロックの端をなだらかにする窓関数は スペクトログラムと STFT で説明しています。

フーリエ変換とは?

フーリエ変換は信号をその構成周波数に分解する手法です。プリズムが白色光を虹色に分けるようなものです。

音声は様々な周波数が異なる振幅で重ね合わさったものです。フーリエ変換によって、どの周波数がどの程度含まれているかがわかります。

短時間フーリエ変換(STFT)は、これを音声の重なり合う窓に繰り返し適用します。これにより、周波数成分の時間変化を可視化できます。

このスペクトログラムが、以降すべての解析の基盤です。

STFT · SPECTRALIDLE
STFT — 時間と周波数を同時に見る

400 Hz から 1 kHz へ上昇するトーンに、4 つのクリックを重ねた信号。各列が1つの短時間スペクトルで、明るいほどエネルギーが大きい。nFft を切り替えると、256 ではクリックは細い線になり、トーンは幅約 170 Hz の帯になる。4096 ではトーンは幅約 20 Hz の線になり、クリックは約 280 ms にわたってにじむ。

nFft(窓長)

ステージ 2: 特徴量抽出 ​

スペクトログラムから、libsonare は音声の特定の側面を捉えるための 特徴量 を計算します:

  • クロマ — すべての周波数を 12 のピッチクラス(C, C#, D, ..., B)に畳み込み、各時刻でどの音が目立っているかを示します。キー推定とコード解析の基盤です。
ピッチクラスとは?

ピッチクラスは、同じ音名のすべてのオクターブをまとめたグループです。たとえば、C2、C3、C4 などすべての「ド」はピッチクラス「C」に属します。

西洋音楽には 12 のピッチクラスがあります: C, C#, D, D#, E, F, F#, G, G#, A, A#, B。

クロマ特徴量はオクターブを無視して、これら 12 クラスのエネルギー分布として音声を表現します。

CHROMA · PITCH CLASSIDLE
クロマグラム — ハーモニーを12ビンに畳む

すべての周波数を12のピッチクラスへ畳み込むため、オクターブは消え、ハーモニーが残ります。このクリップは C–Am–F–G の三和音だけを小節ごとに鳴らし、コードの間に1拍の休符を置いています。点灯する行の移動を見てから、進行を再生してください。

  • オンセット包絡線 — フレーム間のスペクトルエネルギーの変化量を測定し、新しい音や打撃音の開始点を強調します。ビート・リズム解析の入力になります。
オンセットとは?

オンセットとは音楽的イベントの始まり、つまり音が鳴り始める瞬間です。鍵盤を叩いた瞬間、ドラムを打った瞬間、新しい音が始まった瞬間がオンセットです。

オンセット包絡線は、これらの瞬間にピークを持つ連続曲線です。そのピークを検出すると、個々の音の発音タイミングを特定できます。

この情報はテンポ推定やビート位置の特定に繋がります。

  • メルスペクトログラム — スペクトログラムをメル尺度に再マッピングします。メル尺度は人間の聴覚がピッチを並べる間隔に合わせたもので、おおむね 1 kHz 以下では線形、それより上では対数的に変化します。同じ 100 Hz の差でも、200 Hz 付近では 5000 Hz 付近よりずっと大きな差として扱われます。オーディオ ML で広く使用されます。
メル尺度とは?

メル尺度はピッチの知覚的な尺度です。人間は周波数を線形には知覚しません。

100 Hz から 200 Hz への変化は大きく感じますが、5000 Hz から 5100 Hz はほとんど同じに聞こえます。

メル尺度は高い周波数を圧縮して、この知覚に合わせます。メルスペクトログラムはこの尺度を周波数軸に使うため、人間の聴覚に関連するタスクに向いています。

  • MFCC(メル周波数ケプストラム係数) — メルスペクトログラムから導出されるスペクトル形状のコンパクトな表現。音色や音楽テクスチャの分類に有用です。
音色(ティンバー)とは?

音色とは、同じ音の高さ・同じ音量でもピアノとギターの音が異なって聞こえる要因のことです。音の「色」や「質感」とも言え、おもに部分音の相対的な強さと、それが音の立ち上がりから減衰までにどう変わるかで決まります。MFCC はこのスペクトル形状をコンパクトに表現するため、異なる楽器、声、音の種類を区別するのに有用です。

SIGNAL · HARMONICSIDLE
波形とスペクトル — 倍音はどこから生まれるか

上段は時間波形、下段はそのスペクトル。サイン波は基音だけ、ノコギリ波はすべての倍音、矩形波は奇数倍音だけが立つ。波形を切り替えると倍音の櫛が現れる。

波形
周波数
220 Hz
  • CQT / VQT — 標準的なフーリエ変換(FFT。上記の STFT を支えるものと同じ計算)ではどの周波数でも分解能の幅が一定ですが、これらの変換は音楽的なピッチに対応した分解能を持ちます。
なぜ音楽のピッチには特別な周波数分解能が必要?

音楽の音は対数的に配置されています。各オクターブで周波数が倍になります(A3 = 220 Hz、A4 = 440 Hz、A5 = 880 Hz)。

標準 FFT は等間隔の周波数ビンを使います。そのため、低音の区別が不十分になり、高音では必要以上に細かい分解能になります。

定Q変換(CQT)は、ビンを対数的に配置して音楽のピッチに合わせます。可変Q変換(VQT)はこれを拡張し、分解能を調整可能にしたものです。

これらの特徴量は単体でも有用です(例:メルスペクトログラムを機械学習モデルに入力)が、次のステージの高レベル解析への入力としても機能します。

ステージ 3: 音楽解析 ​

多くのユーザーが求める高レベルの結果は、ステージ 2 の特徴量の 上に 構築されます:

解析構築元処理内容
キー検出クロマ → Krumhansl-Schmuckler アルゴリズムクロマプロファイルをキーテンプレートと比較し調を判定(例:「イ短調」)
コード認識クロマ → テンプレートマッチングクロマフレームをルートごとのコードテンプレートと照合し時系列コードを識別。単体の detectChords は既定で 12 ルート × 24 クオリティを探索し、analyze() の中では既定で 4 種のトライアドのみに絞る
BPM 検出オンセット包絡線 → テンポグラム + 自己相関オンセット強度の周期的パターンを見つけてテンポを推定
ビート追跡オンセット包絡線 → 動的計画法リズムの規則性を使ってビート位置を推定
セクション検出クロマ + スペクトル特徴量 → 自己類似性解析音楽的性格が変わる境界を検出し、イントロ・Aメロ・サビ等に分割
ピッチ追跡波形 → YIN / pYIN アルゴリズムモノフォニック音声の基本周波数(F0)を推定しメロディを抽出
テンポグラムとは?

テンポグラムは時間-テンポ表現で、各時刻における異なるテンポ候補の強さを示します。オンセット包絡線の周期的パターンを自己相関(信号が時間シフトした自分自身とどれだけ似ているかを測定)で分析して算出します。テンポグラムのピークが支配的なテンポを示します。

自己類似性解析とは?

自己類似性解析は、楽曲の各部分を他のすべての部分と比較します。その結果として、任意の 2 つの時点がどれだけ似ているかを示す行列を構築します。

ポップスでは、サビ同士は似ている傾向がありますが、A メロとは異なります。

この行列のブロック状パターンを見つけることで、libsonare は音楽がある構造から別の構造に移行するセクション境界を特定できます。

基本周波数(F0)とは?

基本周波数(F0)は、周期的な波形が繰り返す速さです。倍音を持つ音では倍音どうしの間隔にも等しく、ふつうは音の高さとして聞こえます。歌手が A4 の音を歌うとき、F0 は 440 Hz で、倍音は 880 Hz、1320 Hz と続きます。F0 の成分そのものが弱くても、欠けていても音の高さは聞こえます。そのためピッチ追跡は、最も低いスペクトルのピークではなく波形の周期性を読みます。YIN や pYIN などのピッチ追跡アルゴリズムはこの F0 を時間軸に沿って推定し、音声からメロディラインを抽出します。

DETECTOR · ONSET / BEATIDLE
オンセットとビート — 打点から拍へ

オンセット検出は音の打点をすべて捉え、ビート追跡はそこから手拍子を打つような一定の拍を導き出す。表示を切り替え、再生するとプレイヘッドが到達するたびにマーカーが光る。

検出

この階層的な設計により、libsonare は結果だけでなく各段階を公開しています。低レベルの特徴量を独自の解析に使ったり、ML パイプラインに組み込んだりできます。

ルーム音響解析と逆変換特徴量 ​

解析の中には、楽曲そのものではなく録音空間を扱うものもあります。

新しく出てくるルーム音響用語

等価ルーム は、音声から推定した実用上の部屋モデルです。シューボックス形状 は、長さ・幅・高さで表す直方体の部屋です。ルームモーフィング は、目標ルームの響きを音作り効果として適用する処理で、残響除去ではありません。

入口入力結果
analyzeImpulseResponse / analyze_impulse_responseクリーンなインパルス応答(IR)RT60、EDT、明瞭度、定義度を直接測定します。
detectAcoustic / detect_acoustic通常音声ルーム音響の手がかりを推定し、信頼度を返します。
estimateRoom / estimate_room通常音声またはインパルス応答体積、寸法、吸音率、DRR、信頼度を含む等価ルームを返します。
synthesizeRir / synthesize_rirシューボックス形状決定論的なモノラルのルームインパルス応答を返します。
roomMorph / room_morph音声と目標ルーム形状残響除去ではなく、音作り向けのルームモーフィングを行います。
roomMorphStereo / room_morph_stereo左右のチャンネルと目標ルーム形状ステレオペア向けの同じモーフィング。間隔を空けた 2 つのレシーバーで聴くので音像が保たれます。

ルーム音響の略語を先に押さえる

RT60 は残響が 60 dB 小さくなるまでの時間、EDT は聴感に近い初期減衰時間です。

C50 / C80 は音声/音楽の明瞭度、D50 は最初の 50 ms に届くエネルギー比率です。

ここでは「部屋の響き方を数値化する指標」とだけ理解しておけば十分です。詳しい読み方は ルーム音響解析 で説明します。

使い分けは ルーム音響解析 を参照してください。

また、デバッグや ML ワークフロー向けの逆変換ヘルパーも公開しています。メルスペクトログラムや MFCC が手元にあるとき、これらのヘルパーは変換を逆向きに実行して、近似的なスペクトルや、その特徴量が「どう聞こえるか」のおおまかなプレビューを得ます。ML パイプラインの妥当性確認に役立ちます。これは復元ツールではなく、ロスのある確認用プレビューです。詳細は 逆変換特徴量 を参照してください。

オーディオエフェクト ​

libsonare はスペクトル表現を操作する音声処理機能も提供します:

  • HPSS(Harmonic / Percussive Source Separation。倍音成分と打撃成分の分離) — スペクトログラム上のメディアンフィルターによる処理により、音声を倍音成分(ボーカル・メロディ・持続音)と打撃成分(ドラム・打楽器・過渡音)に分離します。解析精度を上げる前処理としてよく使われます。ほかの分離方式とあわせて 音源分離 で扱います。
倍音成分と打撃成分とは?

スペクトログラム上で、倍音的な音(ボーカル、弦楽器、持続音)は水平線として現れます。時間方向に安定した周波数を持つためです。

打撃的な音(ドラム、クリック、過渡音。音や打撃の出だしにある短く鋭い立ち上がり)は垂直線として現れます。瞬間的に多くの周波数を含むためです。

HPSS はこの違いをメディアンフィルターで利用します。水平方向のメディアンフィルターが倍音部分を、垂直方向のメディアンフィルターが打撃部分を抽出します。

  • タイムストレッチ/ピッチシフト — 位相ボコーダ(短い窓を重ねたスペクトルのフレームから信号を組み立て直す処理)とリサンプリングを組み合わせて、テンポや音の高さを変えます。
  • 編集 DSP — ターゲット MIDI ノートへのピッチ補正、ノート区間のストレッチ、ピッチとフォルマントを扱うボイスチェンジを提供します(編集 DSP)。
  • クリエイティブ FX / インサート — リバーブインサート、コーラス、フランジャー、フェイザー、ステレオディレイなどの音作り系 DSP です。
クリエイティブ FX の公開範囲

リバーブ、モジュレーション、ディレイの各インサート(effects.reverb.*、effects.modulation.*、effects.delay.stereo)は、クリエイティブ FX を有効にしたビルドで、ミキサーとリアルタイムエンジンのインサートカタログから使えます。インサート ID とパラメータの一覧は エフェクトインサート にあります。

chorus(...) のような単独ヘルパーはありません。FX 有効の WASM ビルドでは、幾何ルーム系とすべてのモジュレーション系を含むクリエイティブ FX のインサートがどれも masteringProcessorNames() に並び、ワンショットのプロセッサ経路でも実行できます。

ダッキングは一括編集ヘルパーではなく、dynamics.duckingProcessor やミキサールーティングとして扱います。

リアルタイムストリーミング ​

StreamAnalyzer は同じパイプラインを音声 チャンク単位 で低レイテンシ実行します。

リアルタイム可視化やライブ解析に適したフレーム単位の特徴量を出力します。更新される推定には BPM、キー、現在のコード、コード進行、小節単位のコード投票、パターンスコアが含まれます。

ブラウザでは、Web Audio API の AudioWorklet と組み合わせてリアルタイム処理できます。どちらも リアルタイムとストリーミング で扱います。

ミキシングとルーティング ​

libsonare のミキシングエンジンは、チャンネルストリップ、パンモード、ステレオ幅、センド、FX バス、VCA グループを提供します。さらに、シーンプリセット、オートメーションレーン、ゴニオメーター/True Peak 計測、オフラインステレオレンダーも扱えます。

一回きりの解析やマスタリングではなく、保持できるミキサーシーンが必要な場合は ミキシングエンジン を参照してください。

ミキサー用語をまとめて

「センド」はチャンネルのコピーを共有エフェクトへ送る仕組み、「バス」は複数チャンネルがまとまって流れ込むサブミックス、「VCA グループ」は 1 本のフェーダーで多数のチャンネルの音量をまとめて操作する仕組みです。「ゴニオメーター」はステレオの広がりを可視化し、「True Peak」計測はサンプル間ピーク(ISP)、つまりサンプルとサンプルの間にだけ現れるピークを捉えます。

プラットフォーム対応 ​

プラットフォームインターフェースユースケース
ブラウザJavaScript/TypeScript(WebAssembly)Web アプリ、クライアントサイド解析
Node.jsJavaScript/TypeScript(WebAssembly)サーバーサイド処理
Node.jsJavaScript/TypeScript(N-API ネイティブアドオン)高性能なサーバーサイド処理
PythonPython(ネイティブ C API を ctypes 経由で利用)データサイエンス、スクリプティング、librosa からの移行
Linux / macOSC++ネイティブアプリ、CLI ツール
その他(C API 経由)C他言語との FFI 連携

WebAssembly と JavaScript のフルバンドルは約 8,213 KB、gzip 圧縮後は 2,670 KB です。解析だけを行うページなら、ずっと小さい解析専用エントリを読み込めます。内訳は WebAssembly ガイド を参照してください。

librosa との関係 ​

librosa は MIR コミュニティにおけるデファクトスタンダードの Python ライブラリです。libsonare は、Python が使えない環境、ネイティブ統合が必要な環境、単一の C++ コアを使いたい場面向けに、librosa と似た MIR の基本部品を提供します。

  • よく使う DSP パラメータと API は、実用上可能な範囲で librosa に近づけています
  • STFT、メルスペクトログラム、MFCC、クロマなどのコア特徴量は librosa 参照テストで確認しています
  • 関数名と API パターンを意図的に類似させ、移行を容易にしています

さらに libsonare は librosa の範囲を超えた コード認識、セクション検出、音色解析、リアルタイムストリーミング も提供します。これらは Python エコシステムでは通常別々のツールとして提供される機能です。

詳細な比較と移行ガイドは librosa 互換性 を参照してください。

プロジェクトの状況とサポート ​

libsonare は単独の開発者が活発に開発しているオープンソースプロジェクト(Apache-2.0)です。バージョンは 1.0 を超えており、リリースにはセマンティックバージョニングのタグが付きますが、若いライブラリとして扱ってください。アップグレード前にリリースノートを確認し、本番環境ではバージョンを固定することをおすすめします。

  • リリースと変更点 — すべてのリリースは GitHub Releases にタグ付きで公開され、変更内容のノートが付きます。npm と PyPI のパッケージも同じタグに追従します。
  • バグ報告と質問 — libsonare の issue トラッカー に issue を立ててください。このドキュメントサイトやデモの問題は homepage リポジトリ へお願いします。
  • 「テスト済み」の意味 — 参照テストでカバーされている機能は 実装検証 に一覧があり、バインディング間の既知の挙動差は バインディング対応表 に記録されています。そこに載っていない機能は、依存する前にお手元の素材で検証してください。

次のステップ ​

このページを読み終えた人の目的は、大きく 2 つに分かれます。これから何をしたいかに合わせて、どちらかを選んでください。

何かを作りたい ​

  • はじめに — 普段使っている実行環境で、短いプログラム 1 つから最初の結果を得る
  • 学習順ガイド — 10 の分野を目的別に辿り、作りたいもののために書かれたガイドを 1 つ開く
  • 使用例 — 実行環境ごとの小さな動作パターン。読むより写すためのページ
  • 機能マップ — 機能ファミリーがどこにあり、どのバインディングから使えるか

エンジンを理解したい ​

  • オーディオ基礎 — サンプル、サンプルレート、デシベル、周波数と倍音をゼロから説明します。ほかのすべてのページが前提にする語彙です
  • 音源方式 — オーディオエンジンがサンプルを同梱しない理由、各合成方式のコスト、GS を制御語彙に選んだ理由
  • 楽曲解析 — 各解析結果の意味、それを返す呼び出し、信頼度の出どころ
  • MIR の全体像 — 各特徴量がどう関係するかの地図。用語ごとの説明は 用語集 に
  • アーキテクチャ — C++ コア、機能モジュール、バインディングの層構造。参照値と照合している範囲は 実装検証 に