FA-Bench、フォースドアライナーの音素レベルと単語レベルのタイムスタンプ精度を評価するベンチマーク
フォースドアライナーの結果の多くは、再現が困難です。FA-Benchは、オープンで標準化されたベースラインです。30のシステムを、音素レベルと単語レベルのタイムスタンプ精度で採点しました。基準は、人間の言語学者が付けた境界です。クリーンな音声と、4種類の劣化を加えた音声で評価しています。
github.com/olewave/fa-bench · arXivの論文
音素レベルと単語レベルのタイムスタンプの精度を測るオープンなベンチマーク、FA-Benchを公開します。
フォースドアライナーの結果の多くは、再現が困難です。論文ごとに、使う音素セット、テスト分割、評価指標が異なります。そのため、ある論文の数値が、次の論文の数値と同じものを測っていることはほとんどありません。その結果、音声研究者は条件をそろえたアブレーション実験を行えず、音声AIエンジニアはどのシステムを導入すべきか判断できません。
FA-Benchは、ラベルのまとめ方から各境界の採点方法まで、評価のすべてをコードとして公開します。すべてのシステムが同じパイプラインを通るため、その数値は他のどのシステムの数値とも直接比較できます。
評価対象
30のシステムを採点しました。オープンモデルが21個、商用APIが9個です。各システムは、クリーンな音声と、その音声に残響、ノイズ、音楽、バブルノイズのいずれかを加えた4種類の劣化版で実行します。どの結果表も、クリーンな音声のスコアと4つの劣化条件のスコアを1行にまとめています。そのため、音声が難しくなるにつれて、システムがどれだけ精度を保てるかを確認できます。
採点には、TIMITの読み上げ音声と、Buckeyeの自発音声を使います。どちらのコーパスにも、人間の言語学者が手作業で修正した音素境界と単語境界が付属しています。その境界を正解の基準として使います。FA-Benchは独自のアノテーションを一切加えません。境界の時刻はコーパスが与えるとおりに保ち、音素ラベルは共通のTIMIT-39セットにまとめます。
結果は2つのトラックで報告します。正解書き起こしトラックでは、各システムに正解の単語を渡すため、スコアはタイミングだけを測ります。ASRトラックでは、各システムが自分で単語を認識するため、認識の誤りがタイミングの誤りに加わります。2つのトラックは別々に順位付けします。
わかったこと
Olign 1.0は、正解の書き起こしを与えたすべてのシステムの中で、単語境界F1が最も高い値でした。これは両方のコーパスで、クリーンな音声でもノイズを加えた音声でも同じです。
20 msでの単語境界F1、正解書き起こしトラック。値が高いほど良い結果です。
| システム | TIMIT core-test | Buckeye test |
|---|---|---|
| クリーン / ノイズあり | クリーン / ノイズあり | |
| Olign 1.0 | 0.782 / 0.669 | 0.744 / 0.659 |
| MFA 3.4 | 0.644 / 0.624 | 0.682 / 0.583 |
| Qwen3-ForcedAligner-0.6B | 0.399 / 0.377 | 0.432 / 0.391 |
| WhisperX | 0.180 / 0.170 | 0.165 / 0.165 |
ノイズありは、4つの劣化条件の平均です。ノイズを加えると、OlignがMontreal Forced Aligner 3.4を上回る差は、TIMITでは0.138から0.045に縮まります。Buckeyeでは0.062から0.076に広がります。
対象システム
正解の書き起こしを与えるフォースドアライナー。 BFA · Charsiu · CrisperWhisper · FALCON · MAPS · Montreal Forced Aligner 2.0と3.4 · MMS-FA · NeMo Forced Aligner · NeuFA · Qwen3-ForcedAligner · stable-ts · TorchAudio-FA · UnitY2 · WhisperX
タイムスタンプ付きで、自分で単語を認識するオープンなASR。 Parakeet-TDT · Qwen3-ASR · TorchAudio wav2vec2 · Whisper large-v3 · Whisper-timestamped
商用API。 Olign · Amazon Transcribe · AssemblyAI Universal 3.5 · Azure AI Speech · Deepgram Nova-3 · ElevenLabs Scribe v2 · Google Chirp 2 · IBM Watson · Speechmatics
さらに、19の2段階カスケードも採点します。これは、ASRが出力した単語のタイミングを、フォースドアライナーのいずれかで付け直す構成です。
採点方法
何かを測る前に、システムが出力した各単位を、正解の単位と対応付ける必要があります。FA-Benchは、この対応付けを2通りの方法で行います。それぞれの方法に死角があり、もう一方がそれを補うからです。
境界MAE、中央値、符号付き誤差は、ラベルを先に対応付ける方法を使います。ラベルの列に対してLevenshteinアライメントを実行し、見つかったペアの時刻を比較します。すべての数値に、ブートストラップによる95%信頼区間を付けています。10、50、100 msの閾値での精度も併せて示します。対応が付かなかった音素はこの平均から外れます。そのため、難しい音素を飛ばしても、ここでは減点されません。
S、D、I、PERは、正解の音素が対応付かなかった理由を示します。Sはシステムが別のラベルに置き換えた音素を数えます。Dはシステムが一度も出力しなかった音素を数えます。Iはシステムが余分に作り出した音素を数えます。MAEを下げるために難しい音素を飛ばすシステムは、Dに現れます。そのため、MAEが低くても削除率が高い場合は、必ずしも優れているとは限りません。
20 msでの境界F1は、ラベルと時刻を同時に使って対応付ける方法です。境界が数えられるのは、その両側の単位が正解と一致し、かつ20 ms以内に収まる場合だけです。発話の両端の境界も含めます。これが主要な数値です。音素を飛ばすと、その前後の境界で得点を失います。ラベルが置き換えられた境界は、時刻が正しくても得点になりません。
時刻のみの適合率、再現率、過分割、R-valueは、詳細ページに掲載しています。これらはラベルを無視します。そのため、詳細ページでは、時刻が正しければ、誤った単語上の境界も検出できたと数えます。主要なF1では、この境界に得点を与えません。
単語ティアでは、MAEと、同じくラベルを照合する20 msでのF1を報告します。単語ティアは音素に依存しません。そのため、単語だけを出力するシステムを採点できるのは、このティアだけです。
自分で実行する
FA-Benchには、マニフェストとレシピが付属しています。音声は、ご自身で入手する必要があります。TIMITはLDCから、BuckeyeはOSUへの登録を通じて、それぞれのライセンスのもとで入手します。fabench initを実行すると、各コーパスの場所を尋ねられます。
ライセンスのある音声を扱う前に、測定チェーンを確認できます。セルフテストは合成コーパスを作成し、その上でチェーン全体を実行します。各ゲートは、結果をあらかじめ固定した答えと比較します。そのため、チェーンが壊れていれば、ゲートは失敗します。
git clone https://github.com/olewave/fa-bench && cd fa-bench
uv venv --python 3.12 .venv && . .venv/bin/activate
uv pip install -e ".[test]"
fabench selftest
fabench gates
GitHubには、TIMITの単語とBuckeyeの単語の全結果を、評価方法とともに掲載しています。
FA-Benchは、PolyForm Noncommercial 1.0.0のもとで公開しています。研究、教育、個人での学習のほか、慈善団体、教育機関、公共安全機関、環境保護団体、政府機関による業務には、無料で使えます。商用利用には、Olewaveから別途ライセンスを取得する必要があります。
