MiraEcho
記事一覧

単語誤り率で ASR モデルを選んではいけない

約 10 分
  • ASR
  • 評価
  • 指標

世に出ている ASR の比較は、ほぼ例外なく単語誤り率(WER、日本語なら文字誤り率)を軸に組み立てられている。モデル A はあるベンチマークで 4.1%、モデル B は 5.3%。結論は勝手に書けてしまう。研究の指標としては真っ当だが、調達の指標としては良くない。ほとんどの製品が実際には問いていない問いに答えているからだ。

WER が数えるのは編集回数(置換・挿入・削除)を参照文の語数で割った値である。どの語も一回、どの語も同じ重み。 問題は後半だ。意味のある書き起こしの中で、語と語は交換可能ではない。

サポート通話の書き起こしにある二つの誤りを見てほしい。

「注文 A-4471 をキャンセルしたい」 → 「注文 A-4417 をキャンセルしたい」

「注文をキャンセルしたいんですけど」 → 「注文をキャンセルしたいのですが

どちらも置換 1 回。WER への寄与はまったく同じだ。一方は返金を別の購入に飛ばし、もう一方は下流の誰ひとり気づかない表記の揺れにすぎない。この二つを同点にする指標は、あなたの製品が気にしているものを測っていない。

誤りが実際に落ちる場所

コストになる失敗はごく少数のトークン種別に集中している。しかもそれは、汎用モデルにとって最も分布外になりやすい種別とちょうど一致する。

固有名詞。 製品名、社名、人名。業務の書き起こしでは情報の大半をこれらが担っているのに、語彙の中でいちばん難しい。低頻度で、そもそも普通の語でないことも多く、文脈のある人間でさえ聞き違える。

数値と識別子。 注文番号、用量、価格、日付、口座番号。ここでの誤りは「品質の低下」ではなく事実の誤りである。「15」を「50」と書き起こしたモデルが出したのは、流暢で、もっともらしく、完全に間違った文だ。しかも崩れた固有名詞と違い、下流のどこもそれを不審だと気づかない。

ドメイン語彙。 どの業界にも、汎用モデルがほとんど見たことのない数百語がある。そこを外すと、周辺のフィラーでいくら良いスコアが出ていようと、その分野の人間には意味不明な文章になる。

一方で、正しく取りやすい語──助詞、フィラー、「えーと」「まあ」──は数のうえでは最多で、分母を支配する。あるモデルが「の」と「えーと」で競合より明確に強く、WER で勝ち、人間が読むあらゆる書き起こしで負けるということが普通に起こりうる。

WER に原理的に見えない失敗

重み付けの問題に加えて、製品として致命的なのに指標からは完全に不可視な挙動がいくつかある。

非音声区間での流暢な捏造。 いまのアテンション型 ASR は「もっともらしいテキスト」を出すよう訓練されている。だから無音、呼吸音、音楽、保留音を渡されても、もっともらしい一文を返してくるものがある。よく出るのは訓練中に大量に見た定型句──字幕のクレジット、「ご視聴ありがとうございました」といったものだ。きれいに切り出された音声のベンチマークではこれは起こらないので、数字には一生現れない。だが保留音が 30 秒入った通話録音では絶えず起きる。しかも脱落より悪い。本文の体裁で、自信たっぷりに出てくるからだ。

ストリーミングにおける中間結果の揺れ。 ストリーミングでは、文の残りを聞き終える前に仮説を出し、文脈が届くたびに書き換える。最終的な書き起こしは非常に良いかもしれない──WER は最終結果に対して計算される──その裏で、画面上のライブ字幕は一文のあいだにユーザーの目の前で三回書き換わっている。ユーザーが体験しているのは書き換えのほうで、最終テキストではない。 最終 WER が完全に同じ二つのモデルがここでは天と地ほど違いうるのに、この指標には構造上どちらがどちらか言う能力がない。

分割と話者の帰属。 二人の発話を一つに融合したり、一文を二つに割ったりすると、連結テキスト上の WER はほぼ満点なのに、アプリが実際に消費する構造化出力は間違っている。書き起こしを下流の LLM に流す構成なら、語数よりこちらのほうがはるかに重要だ。

句読点と表記。 慣例としてスコア計算の前に落とされることが多い。そして多くの場合、それこそが「人が読める書き起こし」と「読めない書き起こし」の差であり、モデルに食わせるなら下流の解釈にも実際に効く。

コードスイッチング。 ベンチマークは単言語だが、世界の大半の実際の発話はそうではない。英語の製品名が三つ混ざった日本語の一文をきちんと扱えるモデルは、あなたの実トラフィックでは名目上強いモデルに勝つ。そしてそれを事前に教えてくれる標準ベンチマークは存在しない。

では何を測るか

以上は「指標を持つな」という主張ではない。誤りをあなたにとってのコストで重み付けして測れという主張である。

エンティティ誤り率。 アプリが実際に消費するトークン──人名、ID、数値、専門用語──だけを取り出し、そこだけで正解率を出す。数百発話に少し注釈を付ける程度の作業で済み、WER よりはるかに鋭くモデルを弁別する。差を平坦にしていたフィラーを取り除いているからだ。

非音声に対する捏造率。 小さな敵対的セットを作る。無音、保留音、背景の会話、キーボード音、咳。正解は「空」だ。各モデルがどれだけの頻度でテキストを発明するかを測る。他の点では優秀なモデルがここで派手に落ちることがあり、それは本番の後ではなく前に知るべきことだ。

中間結果の安定性。 ストリーミングでは中間仮説をすべてログに残し、「すでに表示済みの前置き部分が書き換えられた回数」を発話ごとに数える。ライブ字幕が「どっしり」感じられるか「そわそわ」感じられるかを予測するのはこの数字だ。中間結果をどれだけ早く出すかとセットで見ること。両者は直接トレードオフで、待ちを長くすればどんなモデルでも安定して見せられる。

エンドツーエンドのタスク精度。 ASR の後段が構造化結果を抽出する LLM なら、その構造化結果を採点する。誤りを真の下流コストで自動的に重み付けする唯一の測り方であり、ときに「書き起こしとしては悪いほうが結果は良い」と教えてくれる。LLM が修復できる誤りの種類と、できない種類があるからだ。

テストセットは自社のトラフィックから作る

ここでいちばん価値があるのは特定の指標ではなく、評価音声が自分の製品から来ていることそのものだ。実録音を 100 本、丁寧に人手で書き起こす。それがどの公開ベンチマークよりも「どのモデルを買うか」を教えてくれる。あなたの音響環境、訛り、語彙、背景ノイズ、マイクの質を丸ごと抱えているからだ。

公開ベンチマークの大半は朗読音声か整えられた放送音声である。クリーン、近接マイク、単一話者、かぶりなし、圧縮ノイズなし、車内から電話している人もいない。その欠落のひとつひとつが、モデルの順位が入れ替わる地点だ。ベンチマークの首位が実トラフィックで負けるのはありふれた話で、理由も不思議でもなんでもない。ベンチマークにあなたのユーザーが置かれている条件が入っていなかった、それだけである。

100 発話あれば大きな差は見える。作業量は 1 日だ。一度作り、モデルの乗り換えを検討するたびに回し直す。音声分野で使える評価の実践として、これがいちばんレバレッジが高い。

まとめ

WER は固定コーパス上で研究の進捗を追うぶんには問題ない。購買判断の土台としては貧しい。すべての語を等しく重み付けし、最終書き起こしより前に起きたことをすべて無視し、非音声音声とストリーミングが持ち込む失敗モードを見ることができないからだ。

意味を担っているトークンを採点し、テキストを発明しないかを明示的に試験し、ライブ字幕がどれだけ自分を書き換えるかを測る。そのすべてを自社ユーザーの録音の上でやる。出てくる順位はリーダーボードのそれとは違い、そして持ちこたえるほうの順位になる。

MiraEcho で作る

ストリーミング TTS、リアルタイム ASR、音声クローンを 1 つの API キーで。無料で始められます。

無料で始める