AI英会話の復習でいちばん困るのは、「あの言い間違いは、録音のどこだったか」が分からないことだ。
文字起こしは残っている。音声も残っている。それなのに、両者が結びついていない。
この結びつきを作っているのがタイムスタンプ、つまり単語ごとの時刻情報だ。
音声認識の部品は、文字と一緒に「その単語が何秒から何秒まで鳴っていたか」を返すことができる。
ただし、返す条件も、刻みの細かさも、単位も、会社ごとに違う。
この記事では、AIの部品を売っている会社が公開している開発者向けドキュメントの記述だけを材料にして、そこを1つずつ開けていく。
サービスの順位づけはしない。仕組みの話だけをする。
【結論】AI英会話のタイムスタンプは「どの単語が何秒から何秒まで鳴ったか」の記録だ
先に答えを置く。
グーグルの 単語のタイムスタンプを取得する には、時間オフセットの値は「認識された各単語の開始と終了を示す」と書かれている。
そして時間オフセットの値は「音声の先頭から経過した時間を表す」とある。
| 項目 | 公式ドキュメントに書かれていること |
|---|---|
| 何を示すか | 認識された各単語の開始と終了 |
| 基準点 | 音声の先頭からの経過時間 |
| 刻み | 100ミリ秒単位で増える |
| 想定された用途 | 長い音声の中から特定の単語を探し、元の音声でその位置に飛ぶ |
| 付く場所 | 認識応答の最初の候補のみ |
⇒ タイムスタンプは、録音に索引を付ける機能だ。文字起こしの単語をクリックすると音が鳴る、あの動きの土台になっている。
復習の効率は、この索引があるかどうかで変わる。
AI英会話のタイムスタンプの実物|1.400sから1.800sまでが「okay」
公式ドキュメントに載っている応答例を見ると、形がそのまま分かる。
グーグルのページには、長時間音声の認識結果として次のような構造が載っている。
| startTime | endTime | word |
|---|---|---|
| 1.400s | 1.800s | okay |
| 1.800s | 2.300s | so |
| 2.300s | 2.400s | what |
| 2.400s | 2.600s | am |
| 2.600s | 2.600s | I |
| 2.600s | 2.700s | doing |
| 2.700s | 3s | here |
ここで注目したいのは、I の開始と終了がどちらも 2.600s になっていることだ。
刻みが100ミリ秒なので、それより短く発音された語は幅ゼロとして記録され得る。
- 単語の区切りは、0.1秒より細かくは分からない。
- 速く弱く言った機能語は、時間の幅を持たないことがある。
- 同じ応答には
"confidence": 0.96596134のような信頼度も並んでいる。
「この単語だけ極端に短い」という見え方は、発音の癖ではなく刻みの粗さから来ている場合がある。
AI英会話でタイムスタンプを出すには、設定を1つ立てないといけない
タイムスタンプは、黙っていても付いてこない。
グーグルのドキュメントには、結果に時間オフセットを含めるには、リクエストの設定で enableWordTimeOffsets を true にする、と書かれている。
コマンドライン側では --include-word-time-offsets というフラグが同じ役目を持つ。
そして時間オフセットは、3つの認識方法すべてでサポートされると明記されている。
speech:recognize(短い音声を同期で処理する)speech:longrunningrecognize(長い音声を非同期で処理する)- ストリーミング(話しながら処理する)
⇒ あなたが使っているAI英会話に単語ジャンプが無いとしても、部品の能力が足りないとは限らない。
設定を立てるかどうかは、サービスを作る側が決めることだからだ。
AI英会話のタイムスタンプは、第1候補にしか付かない
ここは仕様として明確に線が引かれている。
グーグルのドキュメントには、時間オフセットの値は認識応答で提供される最初の候補にのみ含まれると書かれている。
実際に載っている応答例でも、2つ目の候補には transcript と confidence しか入っていない。
Cloud Speech-to-Text の基礎 のほうには、応答の最初の候補は常に最良(最も可能性が高い)候補である、とある。
つまり「別の聞き取り方もあり得た」という候補には、時刻が付かない。
聞き取りが割れた箇所ほど、時刻をたどって聞き返したいのに、そこは1本に絞られたあとの結果しか見られない。
AI英会話のタイムスタンプは、会社によって単位が違う(秒とティック)
同じ「時刻」でも、返ってくる形はそろっていない。
グーグルは 1.400s のように秒の文字列で返す。
マイクロソフトの 音声を認識する方法 に載っているREST応答の例では、"Offset": 6600000 と "Duration": 32100000 という大きな整数が並んでいる。
この整数の正体は、キャプションの概念 のページに書かれている。
オフセットは、SDKが処理する最初のオーディオバイトに関連付けられた0ティックから始まるティック数で測られ、1ティックは100ナノ秒(1,000万分の1秒)を表す、とある。
| 会社 | 時刻の返り方 | この単位で読むと |
|---|---|---|
| Google Cloud Speech-to-Text | startTime / endTime を秒の文字列で返す | 1.400s はそのまま1.4秒 |
| Azure AI Speech | Offset / Duration をティック数で返す | 1ティック=100ナノ秒なので 6600000 は0.66秒 |
もうひとつ、マイクロソフト側には注意書きがある。
経過時間(Duration)には、末尾と先頭の無音は含まれないと明記されている。
言い終わってから沈黙した時間は、発話の長さには数えられていない。
AI英会話の字幕は、タイムスタンプで音と同期している
画面に字幕が出るタイプのAI英会話は、この時刻情報をそのまま使っている。
マイクロソフトのキャプションのページには、音声サービスがSRT(SubRip Text)という字幕形式と、WebVTT(Web Video Text Tracks)をサポートしていると書かれている。
SRTの期間の出力形式は hh:mm:ss,fff、WebVTTは hh:mm:ss.fff で、区切り文字が違うだけだ。
載っている例は 00:00:00,180 --> 00:00:03,230 という行で、ここに Welcome to applied Mathematics course 201. という1文がぶら下がる。
- 字幕ファイルの中身は、時刻の範囲+その間に表示する文という単純な組み合わせだ。
- これらはVLCなど多くの動画プレーヤーに読み込める、と書かれている。
- OpenAIのファイル文字起こしでも、字幕形式が必要なときは専用のモデルを使うよう案内されている。
自分の会話ログを字幕ファイルにできれば、音声プレーヤーで頭出ししながら聞き直せる。
リアルタイムのAI英会話では、タイムスタンプが揺れるか、そもそも返らない
話しながら文字が出るタイプは、事情が変わる。
マイクロソフトのキャプションのページには、発話がまだ認識されている間、音声認識の結果が変化する可能性がある、と書かれている。
途中経過は Recognizing イベントで返り、各単語が処理されるたびに新しい文脈で発話が再評価される。
完全で最終的な文字起こしは Recognized イベントで返る、とある。
同じページに載っている例が分かりやすい。
| イベント | その時点のテキスト |
|---|---|
| RECOGNIZING | welcome to |
| RECOGNIZING | welcome to applied math |
| RECOGNIZING | welcome to applied mathematics |
| RECOGNIZED | Welcome to applied Mathematics course 201. |
途中で出ていた math が、あとから mathematics へ書き換わっている。
同じ例では、いったん course 2 と出た部分が、最終的に course 201 になったとも書かれている。
この揺れを減らす設定も用意されている。
SpeechServiceResponse の StablePartialResultThreshold というプロパティを 0 と 2147483647 の間で設定すると、その回数だけ単語を認識してから途中経過を返すようになる、と書かれている。
例として挙がっている 5 を設定すると、単語は変更も撤回もされなくなる、とある。
ただし、より安定した途中経過を要求すると、信頼度の高い結果を待つ待機時間が長くなる可能性がある、とも書かれている。
さらに、途中経過の結果には句読点が使えないという注記もある。
会話中の字幕がぶれるのも、句点が付かないのも、仕様として説明できる。
「復習用に単語ジャンプを付けたい」と思っても、使うモデル次第で不可能な組み合わせがある。
OpenAIの リアルタイム文字起こしのガイド には、gpt-live-transcribe は単語レベルのタイムスタンプ・話者ラベル・文字起こしの信頼度スコアを返さないと書かれている。
タイムスタンプや話者ラベルが必要なら、対応するファイル文字起こしのモデルを使うか、アプリ側でフォールバックを足すよう案内されている。
そのファイル側の ファイル文字起こしのガイド はどうか。
単語またはセグメントのタイムスタンプが必要なときは whisper-1 を使う、と書かれている。
timestamp_granularities[] というパラメーターが、キャプションや動画編集のための構造化された時刻データを返す、とある。
そしてtimestamp_granularities[] は whisper-1 でのみサポートされるとも明記されている。
| やりたいこと | 公式ドキュメントが案内している向き |
|---|---|
| 会話しながら文字を出す | リアルタイムのモデル(ただし単語タイムスタンプは返らない) |
| 単語やセグメントの時刻がほしい | whisper-1 と timestamp_granularities[] |
| 話者ラベル・字幕形式・英訳がほしい | 専用のモデルを使う |
会話しながらの時刻取得と、あとから録音を切り刻む用途は、別の部品が担当している。
長い録音のAI英会話は、バッチ処理でタイムスタンプを取ることになる
レッスン1本まるごとを索引化するなら、リアルタイムの経路ではない。
マイクロソフトの バッチ文字起こし は、オーディオデータを送って結果を非同期で受け取る仕組みだ。
結果はストレージコンテナーに格納され、あとから取り出す。
ここには時間の目安がはっきり書かれている。
- ピーク時には、処理が開始されるまでに最大30分、完了するまでに最大24時間かかる場合がある。
- ただし90パーセンタイルの待機時間は6時間未満だと書かれている。
- 正規化された待機時間の式は
ProcessDuration - AudioLength/5で、この5という係数はシステムが約5倍のリアルタイム速度で処理することを意味する、とある。
録音を投げてすぐ索引が返ってくる、という設計ではない。
AI英会話のアプリで「レッスンの書き起こしは少し経ってから見られます」という挙動になるのは、この経路を通っている場合がある。
AI英会話のタイムスタンプを復習に使う(仕組みから言えることだけ)
ここまでの仕様から、復習の組み立て方は絞られる。
- 時刻が出る画面を優先して選ぶ。 単語や文をクリックして音が鳴るなら、時刻情報が取れている。
- 聞き返す単位は「単語」ではなく「発話」にする。 刻みは100ミリ秒単位で、短い語は幅ゼロになり得る。
- 会話中の字幕は当てにしない。 途中経過は書き換わるうえ、句読点も付かない。
- 言い終わりの沈黙は長さに数えない。 経過時間から先頭と末尾の無音は除かれている。
- 字幕ファイルで出せるなら出す。 SRTやWebVTTは多くのプレーヤーで頭出しに使える。
タイムスタンプの価値は、聞き直す回数を増やせるところにある。
探す手間が減った分だけ、同じ時間で耳に入れられる量が変わるからだ。
AI英会話のタイムスタンプに関するよくある質問
Q. 文字起こしはあるのに、単語をクリックしても音が鳴らない。故障か。 A. 故障とは限らない。グーグルの仕様では、時間オフセットを含めるにはリクエストで enableWordTimeOffsets を true にする必要がある。立てるかどうかはサービスを作る側の判断だ。
Q. 時刻はどのくらい正確なのか。 A. グーグルのドキュメントには、時間オフセットの値は100ミリ秒単位で増えると書かれている。応答例では I の開始と終了がどちらも 2.600s になっている。
Q. 聞き取りが割れた場所を、別の候補の時刻で聞き直せるか。 A. できない。時間オフセットの値は応答の最初の候補にのみ含まれると明記されている。
Q. 会話中に出る字幕の時刻は当てになるか。 A. 時刻より先にテキストが変わる。途中経過は再評価のたびに書き換わり、句読点も使えないとマイクロソフトが書いている。
Q. レッスンの書き起こしが出るまで時間がかかるのはなぜか。 A. バッチ文字起こしを通っている場合、ピーク時は開始まで最大30分、完了まで最大24時間かかることがあると公式に書かれている。
まとめ|AI英会話のタイムスタンプは、録音を検索できる索引だ
もう一度整理する。
- タイムスタンプは認識された各単語の開始と終了で、音声の先頭からの経過時間として100ミリ秒単位で返る。
- 出すには設定を立てる必要がある。付いていない画面は、部品の限界ではなく作りの選択であることがある。
- 時刻が付くのは第1候補だけ。聞き取りが割れた別候補には付かない。
- 単位は会社ごとに違う。秒の文字列で返す側と、1ティック=100ナノ秒で返す側がある。
- リアルタイムのモデルには単語タイムスタンプを返さないものがあり、そこは別のモデルが担当する。
⇒ 復習の設計は「時刻が取れているか」で決まる。取れていれば、録音は検索できる教材になる。
取れていなければ、同じ録音でも最初から聞き直すしかない。
※本記事の一次ソースは、各公式ドキュメントを2026-09-16および2026-09-18に取得した生テキストで確認した。仕様は更新されるため、最新は各公式ドキュメントで確認してほしい。
Comments