Olign 1.1 登場、単語タイムスタンプがより正確に

Product

Olign 1.1 登場、単語タイムスタンプがより正確に

Olign 1.1 は FA-Bench のすべてのテストセットで、クリーンな音声でもノイズの中でも、Olign 1.0 より正確に単語の時刻を求めます。今お使いのリクエストはそのまま動きます。

Introducing Olign 1.1, with More Accurate Word Timestamps

FA-Benchリーダーボード · github.com/olewave/fa-bench

Olign 1.1 を Olign API で公開しました。測定したすべてのテストセットで、クリーンな音声でもノイズのある音声でも、Olign 1.0 より正確に単語の時刻を求めます。

単語のタイミングのずれは、見る人や聞く人にすぐ伝わります。字幕は話し始めに表示され、話し終わりに消えるべきです。吹き替えではポーズで音声をセリフに分けるため、ポーズは実際の位置にある必要があります。語学アプリは、各単語が読み上げられるその瞬間に光らせるべきです。どれも 100 分の数秒の違いで決まります。

Olign 1.1 は単語の時刻を実際の音声に近づけ、ポーズも実際の長さに近い形で返すようになりました。FA-Bench の4つのテストセットの平均で、20 ms での単語タイムスタンプ F1 は、音声だけの場合に 0.681 から 0.712 へ、書き起こし付きの場合に 0.735 から 0.759 へ上がりました。今お使いのリクエストはそのまま動きます。

ご自分の録音で、強制アライメントとASRタイムスタンプを試せます。
サンプル音声 · LibriSpeech © 2014 Vassil Panayotov · CC BY 4.0
英語の音声を最長30秒まで。アカウントは不要です。
Olignで動作

測定方法

2026年11月に本番サービスで測定した Olign リリース 1.1.3 と、2026年10月に測定した Olign 1.0 を比べました。どちらも同じテストセットで実行し、同じ公開の FA-Bench スコアラーで採点しています。

FA-Bench は、単語と音素の境界を人手でラベル付けした2つの英語コーパスを使います。TIMIT core test は読み上げ音声、Buckeye test は会話音声です。どちらもクリーンな音声と、残響、雑音、音楽、バブルノイズを加えた音声で実行します。以下の「ノイズ」はその4種類の平均です。これで4つのテストセットになり、「4つの平均」はその平均値です。

トラックは2つあります。タイムスタンプ付き ASR は音声だけを受け取り、Olign が自ら認識した単語を時刻付きで返します。強制アライメントは書き起こしも受け取ります。

20 ms での単語タイムスタンプ F1 は、単語の開始時刻と終了時刻のうち、人手のラベルから 20 ms 以内に収まるものの割合を、適合率と再現率を合わせて表したものです。高いほど良い値です。

単語誤り率 は、置き換えられた単語、抜けた単語、余分に加わった単語を数え、話された単語数に対する割合で表します。低いほど良い値です。

単語境界誤差 は、Olign の単語境界と人手でラベル付けした境界との平均距離を、ミリ秒で表したものです。低いほど良い値です。

20 ms での音素境界 F1 は、単語タイムスタンプ F1 と同じ指標を、音と音の境界に当てはめたものです。

Olewave は FA-Bench と Olign の両方を開発しています。そのため、Olign は FA-Bench のリーダーボードで順位なしとして表の最下部に掲載されています。この記事では FA-Bench を、公開され再現できる物差しとして使っています。順位付けは一切していません。

タイムスタンプ付き ASR

音声だけを送ります。

20 ms での単語タイムスタンプ F1
音声のみ。高いほど良い値です。
TIMIT クリーン Olign 1.0, 0.786 Olign 1.1, 0.804
TIMIT ノイズ Olign 1.0, 0.695 Olign 1.1, 0.726
Buckeye クリーン Olign 1.0, 0.660 Olign 1.1, 0.702
Buckeye ノイズ Olign 1.0, 0.585 Olign 1.1, 0.615
4つの平均 Olign 1.0, 0.681 Olign 1.1, 0.712

単語タイムスタンプ F1 は4つのテストセットすべてで上がりました。最も大きく伸びたのはクリーンな Buckeye で、0.660 から 0.702 です。単語誤り率はほとんど変わらず、平均で 7.5% から 7.4% です。つまり、伸びたのはタイミングです。

すべての数値
TIMIT クリーンTIMIT ノイズBuckeye クリーンBuckeye ノイズ4つの平均
単語タイムスタンプ F1、Olign 1.00.7860.6950.6600.5850.681
単語タイムスタンプ F1、Olign 1.10.8040.7260.7020.6150.712
単語誤り率、Olign 1.02.2%3.2%10.2%14.3%7.5%
単語誤り率、Olign 1.12.2%3.2%9.9%14.2%7.4%

強制アライメント

音声とその書き起こしを送ります。

20 ms での単語タイムスタンプ F1
音声と書き起こし。高いほど良い値です。
TIMIT クリーン Olign 1.0, 0.805 Olign 1.1, 0.824
TIMIT ノイズ Olign 1.0, 0.710 Olign 1.1, 0.747
Buckeye クリーン Olign 1.0, 0.755 Olign 1.1, 0.775
Buckeye ノイズ Olign 1.0, 0.668 Olign 1.1, 0.689
4つの平均 Olign 1.0, 0.735 Olign 1.1, 0.759
単語境界誤差
人手の境界からの平均距離。低いほど良い値です。
TIMIT クリーン Olign 1.0, 18.2 ms Olign 1.1, 17.0 ms
TIMIT ノイズ Olign 1.0, 33.0 ms Olign 1.1, 25.7 ms
Buckeye クリーン Olign 1.0, 22.4 ms Olign 1.1, 18.7 ms
Buckeye ノイズ Olign 1.0, 43.8 ms Olign 1.1, 38.8 ms

単語タイムスタンプ F1 は4つのテストセットすべてで上がり、単語境界誤差は4つすべてで下がりました。単語境界誤差が最も大きく下がったのはノイズのある TIMIT で、33.0 ms から 25.7 ms です。音素境界 F1 はどこでもわずかに上がり、平均で 0.452 から 0.458 です。変化の大部分は単語の端で起きています。

すべての数値
TIMIT クリーンTIMIT ノイズBuckeye クリーンBuckeye ノイズ4つの平均
単語タイムスタンプ F1、Olign 1.00.8050.7100.7550.6680.735
単語タイムスタンプ F1、Olign 1.10.8240.7470.7750.6890.759
単語境界誤差、Olign 1.018.2 ms33.0 ms22.4 ms43.8 ms
単語境界誤差、Olign 1.117.0 ms25.7 ms18.7 ms38.8 ms
音素境界 F1、Olign 1.00.4100.3930.5230.4830.452
音素境界 F1、Olign 1.10.4130.3960.5290.4920.458

変わったこと

Olign のリリースと API には、それぞれ別のバージョン番号があります。以下では両方を記します。

ポーズが実際の長さに近くなりました。 リリース 1.1.3 より前は、ポーズの前の単語がポーズに食い込んでいました。Buckeye でのテストでは、その幅は中央値でおよそ 80 から 90 ms でした。そのため、ポーズは実際より短く返っていました。今は単語が音の終わりで終わり、中央値は数ミリ秒以内です。字幕と吹き替えはポーズで音声を区切るため、ここで効いてきます。

すべての結果にポーズとフレーズ。 API v1.1.0 から、各結果にリストが2つ加わりました。pauses には、どの単語にも含まれない 0.05 秒以上の区間がすべて入ります。phrases は、0.1 秒以上のポーズごとに単語を区切ります。7単語、4.5秒のクリップでは次のようになります。

"pauses": [
  {"begin": 0.0, "end": 0.47},
  {"begin": 0.75, "end": 0.84},
  {"begin": 1.132, "end": 1.213},
  {"begin": 1.89, "end": 2.173},
  {"begin": 4.36, "end": 4.48}
],
"phrases": [
  {"begin": 0.47, "end": 1.89, "words": [0, 2]},
  {"begin": 2.173, "end": 4.36, "words": [3, 6]}
]

単語の間のポーズのうち 0.1 秒以上のものが1つあるため、このクリップは2つのフレーズになります。words は各フレーズの最初と最後の単語を示します。

2種類の単語の端。 API v1.2.0 から、単語の時刻の付け方を選べます。word_edges=phonetic が既定で、音声学者が境界を置く位置に端を置きます。word_edges=audible は、各単語を耳に聞こえる位置で始めて終えます。このとき p、t、k、b、d、g の前の無音は単語の外に残ります。吹き替えや字幕に必要な形です。audible の端は、スタジオ品質のクリーンな録音で使ってください。

curl https://api.olewave.com/olign/v1 \
  -H "X-API-Key: $OLIGN_KEY" \
  -F [email protected] \
  -F [email protected] \
  -F word_edges=audible

最初の単語と息継ぎ。 最初の単語が、その前の息や雑音の中から始まることはなくなりました。p、t、k、b、d、g で始まる最初の単語は、破裂の前の無音を最大 30 ms までしか含みません。ポーズの後の単語も、その前の息継ぎの中から始まることはなくなりました。

人名と新しい語。 リリース 1.1.0 から、人名、ブランド名、新しい語にも発音が付き、その語自身の音に合わせてアライメントされます。以前はこうした語が音素なしで返り、前後の単語がそのタイミングの誤りを引き受けていました。

長い録音。 録音のいちばん最初と最後の単語が、切れたり抜けたりしなくなりました。隣り合う2つの単語が重なることもなくなりました。

移行作業は不要です。 API の変更は追加のみです。Olign 1.0 で動いていたリクエストは Olign 1.1 でも動きます。audible の端を指定する古いオプション名も引き続き使えます。

この数値の読み方

テストは英語のみで、読み上げ音声と会話音声が対象です。FA-Bench は Olewave 自身のベンチマークで、Olign はそこに順位なしで掲載されています。スコアラーは GitHub で公開されており、TIMIT と Buckeye は誰でもライセンスを取得できます。同じ音声を Olign に送り、返ってきた結果を採点してみてください。