ByteScope

Live Captions

話す声にも、観ている動画にも。マイクの音声はもちろん、共有したタブの音も字幕にして一文ごとに翻訳——字幕ウィンドウは全画面のスライドにも動画にも重なります。

認識用の音声はブラウザの外に送信されます — ブラウザベンダーのサーバーで文字起こしされます。

音声は実際どこへ送られるのか

字幕が動作している間、マイクの音声は Google(Edge の場合は Microsoft)の音声認識サービスにストリーミング送信され、テキストがネットワーク経由で返ってきます。いったん送信された音声を、このページ側で取り戻す方法はありません。機密性の高い会議ではその前提で扱ってください。

翻訳はどちらの経路でも端末内で完結します。あなたの端末にダウンロードされたモデル上で実行されるため、字幕のテキストが翻訳のためにどこかへ送信されることはありません。ByteScope 自体も何も保存しません — 字幕はこのタブのメモリ上にあるだけで、閉じれば消えます。

字幕ウィンドウ

サンプル再生

最初の発話を待っています…

これはマイク音声ではなく、あらかじめ用意したサンプルです。会場の後ろからでも読みやすいサイズと表示モードに調整してから開始しましょう。

ブラウザからマイクの使用許可を求められます。停止すればマイクは解放され、録音中のインジケーターも消えます。

フローティングウィンドウはボタン操作から直接開く必要があります(ブラウザの制約です)。全画面のスライドの上にも重なって表示され、ドラッグで移動、端をつまんでサイズ変更できます。

字幕の設定

字幕の対象

マイクに向かって話している人に字幕を付けるか、この端末が再生している音声 — 動画、ライブ配信、別のタブでの通話など — に字幕を付けるか選べます。後者は開始を押すとブラウザの共有ダイアログが開きます。

字幕はこの入力デバイスの音声を聞き取ります。選び間違えてもエラーにはならず、字幕自体は表示され続けるだけなので — 話し始める前に必ず確認してください。話の途中で切り替えることもできます。

上の入力が BlackHole や Loopback、VB-Cable のような、システム音声を流し込む仮想デバイスの場合はこれをオンにしてください。エコーキャンセル、ノイズ抑制、自動ゲイン調整をすべて無効にします。これらは部屋にいる人の声に合わせて調整されているため、音楽や拍手など声ではない音を気づかないうちに消してしまいます。

実際に話す言語を選んでください。Chrome は話しながら自動判定することはできず、選択を間違えてもエラーにはならず、選んだ言語で自信満々のデタラメを生成してしまいます。話の途中で切り替えることもできます。

翻訳された行は聴衆が読む行なので、大きめのサイズとアクセントカラーで表示されます。

認識の実行場所

Chrome 139 以降では、自分の端末上のモデルで文字起こしできます。モデルがまだダウンロードされていない場合はオフのままになります — 誰も頼んでいないダウンロードのせいで、始まる直前のトークが止まってしまわないようにするためです。

この端末が単独で音声認識できるか確認しています…

ウィンドウサイズ

フローティングウィンドウの初期サイズ(ピクセル)です。後から端をドラッグして変更でき、文字サイズもウィンドウに合わせて変わります。

文字サイズ

100%

ウィンドウのサイズはそのままで、字幕の文字だけを拡大・縮小します。「両方」表示で 2 行を同じ高さに収めるときに便利です。ウィンドウを横長にしてから、後ろの席でも読めるところまで文字を大きくしてください。

表示内容

翻訳

この端末の翻訳対応を確認中…

リアルタイムで翻訳するものがありません。この言語ペアのオンデバイスモデルがないか、話す言語と翻訳先の言語が同じです。

対応ブラウザ

4 つの独立したブラウザ機能が関係します。字幕そのものに必須なのは 1 つ目だけで、残りの 3 つはあれば字幕がより良く、あるいはよりプライベートになるというものです。

機能ChromeEdgeFirefoxSafari
ライブ字幕(Web Speech API)Safari はプレフィックス付きの API を搭載していますが、発話のたびにセッションを終了し、連続モードを無視するため、長いトークだと途切れがちです。音声がどこに送られるかは次の行の話であって、この行の話ではありません。対応対応非対応一部対応
オンデバイス音声認識(Chrome 139 以降)自分の端末上のモデルで文字起こしを行うため、音声はアップロードされません。どの言語のモデルが使えるかは端末やプラットフォームごとに異なるため、一覧で示すのではなく実行時に確認しています。Edge も Chromium ベースなのでおそらく対応していますが、ここでは未検証です。対応一部対応非対応非対応
再生音声のキャプチャ(getDisplayMedia)タブ、ウィンドウ、または画面全体の音声に字幕を付けます。Firefox と Safari は共有ダイアログを表示しますが、ページに渡すのは映像だけです — それがこの行の要点です。タブの音声はこの行が対応していればどこでも使えます。ネイティブアプリの音声には macOS 14.2 以降の Chrome 141 以降が必要で、ブラウザの種類から推測するのではなく、このページが下で実際に測定します。対応一部対応非対応非対応
オンデバイス翻訳(Translator API)Chrome 138 以降で利用可能です。実行時に検出され、非対応の場合は字幕機能のみが動作します。対応一部対応非対応非対応
フローティングウィンドウ(Document Picture-in-Picture)Chrome と Edge の 116 以降で利用可能です。非対応の場合、字幕はページ内に表示されます。対応対応非対応非対応

この端末のキャプチャ対応

この端末が共有できる内容を確認中…

今回のセッション

認識用の音声はブラウザの外に送信されます — ブラウザベンダーのサーバーで文字起こしされます。

このブラウザでの検出結果

  • SpeechRecognition 確認中…
  • SpeechRecognition.available 確認中…
  • getDisplayMedia 確認中…
  • Translator 確認中…
  • documentPictureInPicture 確認中…

このツールについて

このページの仕事は2つ、パイプラインは1つです。音源にマイクを選べば、あなたの講演が話すそばから字幕になります。音源に「このPCで再生中の音」を選べば、観ている配信・動画・通話にリアルタイムの字幕が付きます——日本語の配信に中国語字幕を重ねたい、というのが典型です。認識するのはブラウザ内蔵のWeb Speech API(SpeechRecognition)。インストールも、アカウントも、APIキーも、分単位の課金もありません。文が確定するたびに、Chrome内蔵のTranslator APIが21言語から選んだ翻訳先へ端末内で訳します。講演ならマイク選択が壇上でこそ効きます。実際に声を拾っているピンマイクやUSBマイクはシステム既定になっていないことが多く、放っておくと数メートル先のノートPC内蔵マイクを字幕にしてしまうからです。どちらの使い方でも、ワンクリックで字幕バーをDocument Picture-in-Pictureウィンドウに切り離せます。常に最前面に居座る本物のウィンドウなので——macOSでもWindowsでも——プレゼン中は全画面のGoogleスライドやKeynote、PowerPointの上に、視聴中は全画面再生中のプレーヤーの上に浮かびます。

PCで再生中の音を字幕にする

再生音の取り込みは、ブラウザ自身の共有ピッカーを通ります。開始を押してタブ(またはウィンドウか画面全体)を選び、音声のチェックを入れる——この最後のチェックが肝心です。タブを共有して「タブの音声を共有」にチェックを入れるのが本命ルートです。タブの音のきれいなデジタルコピーがそのまま届くため、部屋の雑音もマイクも介在しません。そして音はその間もスピーカーから鳴り続けます——字幕化のために、観ているものが消音されることはありません。いちばん多い失敗が、タブは共有したのに音声のチェックを忘れるパターンです。ページは無音の共有を検知して知らせますが、チェックを代わりに入れることはできません。タブ音声の取り込みはChromeとEdge限定。ネイティブアプリの音(システム音声)は、WindowsとChromeOSなら以前から取り込めます。MacだけはChrome 141以降かつmacOS 14.2以降が必要——14.2より前のmacOSがアプリによるシステム音声の取得をそもそも許していなかったためで、それより古いMacでもタブ共有なら動きます。FirefoxとSafariは、画面共有の音声をページへ渡すこと自体ができません。ピッカーを経由しないルートもあります。BlackHoleやLoopbackのような仮想オーディオデバイスは、マイク一覧に普通の入力として現れるので、システム音声をそこへ流せばマイクと同じ感覚で選べます。その際は「再生音の入力」スイッチをオンにしてください。ブラウザのエコーキャンセルとノイズ抑制——生の声向けにチューニングされた、字幕にしたい音そのものを削ってしまう処理——を無効にできます。

音声はどこへ行くのか

このサイトは普段「何もブラウザの外に出ない」と約束していて、以前はこのページだけが例外でした。Chrome 139からは、それがスイッチ1つの選択になっています。既定は今もクラウド認識です。マイクの音声はChromeならGoogleの、EdgeならMicrosoftのサーバーへアップロードされて処理されます——ブラウザ自身の音声入力と同じ経路で、この経路を使っている間、アップロードは今までどおりの事実です。配信を字幕にするなら、この経路の重みはさらに増します。アップロードされるのが自分の声ではなく、他人の音声——観ている動画や、通話の相手——になるからです。もう1つが端末内認識です。ページがSpeechRecognitionにローカルモデルの有無を問い合わせ(processLocally)、言語パックを一度インストールした後は、認識はあなたの端末の中で完結し、音声はどこへも出ません。ただし全言語にローカルモデルがあるわけではなく、使えるかどうかは端末やOSで変わります。だからこのページは実行時に確認して、いまどちらの経路で動いているかをそのまま表示します。翻訳側はもともと端末内です——Chrome 138以降がモデルを一度ダウンロードした後、すべての文がローカルで訳されます。つまり端末内認識をオンにすれば、パイプライン全体がノートPCの中で完結し、このサイトのいつもの約束がこのページでも本当に成り立ちます。それでも既定がクラウドなのは意図的です。登壇の数分前に、モデルのダウンロード待ちで足止めされるべきではないからです。社内ロードマップや顧客の数字など内容が機密なら——あるいはその音声がそもそも自分のものでないなら——スイッチを切り替えて経路の表示を確かめてから始めてください。

なぜ話す言語を自分で選ぶのか

言語の自動検出はありません。意図的にそうしています。ブラウザの音声認識は、聞き取る言語を開始前に指定する必要があります。ブラウザ内で確実に自動判定する方法は存在せず、推測させると出てくるのは自信満々の意味不明な字幕——「わからない」と言う代わりに、声を間違った言語の単語へ強引に当てはめた結果です。だから話される言語は手動選択です。講演なら、登壇前に確認する価値のある唯一の設定。配信を字幕にするなら、選ぶのは「動画の中で話されている言語」であって、自分が読みたい言語ではありません——日本語の配信を英語設定で認識させると、エラーではなく流暢なデタラメが出てきます。翻訳先は21言語から別途選び、途中でも入れ替えられます。

全画面より上に出るウィンドウ

浮かぶ字幕が使っているのはdocumentPictureInPicture——フローティング動画と同じ「常に最前面」の仕組みに、動画ではなくドキュメントを丸ごと載せたものです。このウィンドウはOSのコンポジターが常に最前面へ保つため、KeynoteもPowerPointもGoogleスライドも、そして全画面の動画プレーヤーも、画面を占有したところで字幕バーの下になります。プレゼンでは翻訳をスライドの上に保ち、視聴では浮かぶ字幕を全画面配信の「本物の字幕」に変える——両方の使い方を支えているのが、この仕組みです。要件も正直に書いておきます。字幕とフローティングウィンドウはChromeまたはEdge 116以降。端末内翻訳はChrome 138以降、端末内の音声認識はChrome 139以降、システム音声の取り込みはMacに限りChrome 141以降かつmacOS 14.2以降(WindowsとChromeOSにこの制限はありません)。足りない環境ではできるふりをせず、クラウド認識、タブ共有、字幕のみへ正直に切り替わります。SafariとFirefoxはどの部品も積んでいません——このページは黙って失敗する代わりに、対応表で何が足りないかをそのまま示します。

よくある質問

話す言語の自動検出はないのですか?

ありません。ブラウザ内で言語を確実に自動判定する方法が存在しないからです。SpeechRecognitionは開始前に言語の指定を必要とし、推測させると認識器は「わからない」と言う代わりに、間違った言語へ強引に当てはめた意味不明の字幕を量産します。講演で話す言語は最初からわかっているはずなので、開始前に一度だけ手で選んで確認するほうが、本番の壇上で壊れる自動検出よりずっと誠実な設計です。

観ている動画や配信を字幕にするには?

音源をマイクから「このPCで再生中の音」に切り替えると、ブラウザの共有ピッカーが開きます。本命は、動画が再生されているタブを選んで「タブの音声を共有」にチェックを入れる方法です。タブの音のきれいなデジタルコピーが届くので部屋の雑音は入らず、音はそのまま鳴り続けます——消音されることはありません。「話される言語」を配信の言語に合わせ、翻訳先を選んだら、フローティングウィンドウを切り離して全画面プレーヤーの上に載せれば完成です。対応状況は2行で足ります。タブ音声はChromeとEdgeのみ。ネイティブアプリの音(システム音声)はWindowsとChromeOSなら普通に取り込めますが、MacではChrome 141以降かつmacOS 14.2以降が必要——古いMacでも、配信をタブで開いてそのタブを共有すれば動きます。FirefoxとSafariは、画面共有の音声をページへ一切渡せません。

タブを共有したのに字幕が出ません。何が悪いのでしょうか?

ほぼ間違いなく、音声のチェックボックスです。ブラウザの共有ピッカーは音声を「別途同意するもの」として扱うため、「タブの音声を共有」にチェックを入れないと、ページには完全に正常で、完全に無音のストリームが渡ります——この音源でいちばん多い失敗です。ページは無音を検知してその旨を表示するので、空の字幕バーを眺め続けることにはなりませんが、チェックを代わりに入れることはできません。共有を止めて、もう一度共有し直し、今度はチェックを入れてください。そもそも音声の選択肢が出ない場合は、その組み合わせでは音を渡せない環境です。ウィンドウや画面全体の共有はタブ共有より音声を運べる構成が少なく、Macの場合、システム音声にはChrome 141以降かつmacOS 14.2以降が必要です。

音声は端末内で処理されますか?それともアップロードされますか?

いまは選べます。そして、いまどちらで動いているかはページが表示します。既定はクラウド認識で、この場合、音声は本当にアップロードされます。ChromeはGoogleの、EdgeはMicrosoftのサーバーへマイク音声を送って処理する——この経路を使っている間は、他のクラウド文字起こしサービスと同じものとして扱ってください。実際そういうものだからです。配信を字幕にしているなら、なおさらです。アップロードされるのが自分の声ではなく、他人の音声——観ている動画や、通話の相手——になるからで、端末内認識ならこのアップロードを丸ごと避けられます。Chrome 139からは逃げ道があります。端末内認識に切り替えると、ブラウザが言語パックを一度インストールし、以降の認識は完全に端末内(processLocally)で、音声はどこにも送られません。ただし全言語にローカルモデルがあるわけではなく、使えるかどうかは環境次第なので、ページが実行時に確認して現在の経路をラベルで示します。翻訳はどちらの経路でも端末内です。既定をクラウドにしているのは意図的で、登壇の数分前にモデルのダウンロード待ちで詰まらないためです。機密の講演なら、話し始める前にスイッチを切り替えて、ラベルを確かめてください。

翻訳モデルのダウンロードはどれくらいの容量ですか?毎回必要ですか?

言語ペアあたり数十MB程度です。そのペアを初めて要求したときにChromeが一度だけダウンロードし、ブラウザ自身がキャッシュします。次回以降のセッションでも、同じペアを使う他のサイトでも、再ダウンロードはありません。ダウンロード中は進捗が表示され、モデルが揃うまでは字幕のみで動きます。端末内認識の言語パックも同じく一度きりのダウンロードですが、1つだけ違いがあります。こちらは進捗が取れないため、ページは「準備中」としか表示できません。会場のWi-Fiは当てにならないものなので、登壇前に一度ページを開いて言語を選び、ローカル経路を使うなら両方のモデルを入れ終えておくのがおすすめです。

全画面のスライドの上に、なぜブラウザのウィンドウが出せるのですか?

普通のウィンドウではないからです。Document Picture-in-Pictureのウィンドウは、フローティング動画が何の上にも表示され続けるのと同じ仕組みで、ブラウザとOSのコンポジターが常に最前面へ保ちます。全画面のKeynote、PowerPoint、Googleスライドの上でも同じで、macOSとWindowsの両方で動きます。字幕の定位置までドラッグして、普通のウィンドウと同じようにサイズを調整してください。マイクと認識は元のタブ側で動いているので、プレゼンにフォーカスが移っても字幕は流れ続けます。

SafariやFirefoxで動かないのはなぜですか?

致命的なのは音声認識そのものです。FirefoxはWeb Speech APIのSpeechRecognitionをまったく実装していないため、字幕の元になるものが何もありません——これだけで終わりです。Safariにはプレフィックス付きのwebkitSpeechRecognitionがありますが、連続でストリーミングせず一言ごとにセッションを終了するため、講演は字幕の流れではなく再起動の連続になります。加えて両ブラウザとも、内蔵のTranslator APIとDocument Picture-in-Pictureも積んでいません——仮に字幕が出せても、翻訳もできず全画面プレゼンの上に浮かべることもできません。再生音の取り込みも同じく閉じています。FirefoxもSafariも、画面共有の音声をページへ渡すこと自体ができません。中途半端に動くふりをする代わりに、このページは対応表を表示して、何が欠けているかを具体的に伝えます。本番ではChromeかEdgeの116以降を。翻訳まで使うならChrome 138以降、音声認識まで端末内で完結させたいならChrome 139以降です。

原文を隠して、翻訳だけを表示できますか?

できます。字幕バーには表示の切り替えがあり、原文のみ・翻訳のみ・両方の3択です。聴衆があなたの言語を解さないなら翻訳のみが定番で、バーの面積を丸ごと大きな文字に使えます。注意点は1つだけ。Translator APIのないブラウザ(Chrome 138未満)では翻訳のみに表示するものがないため、空白のバーを出す代わりに原文の字幕へフォールバックします。

システム既定ではないマイクを字幕にできますか?

できます。ページはブラウザから見えるマイクを一覧にして、どの入力を字幕にするかを選ばせてくれます。壇上ではこれが細部ではありません。実際に声を拾っているのはピンマイクやUSBオーディオインターフェイスで、システム既定になっていないことが多い——そのままだと、数メートル離れたノートPCの内蔵マイクを字幕にすることになり、出てくるのは想像どおりの崩れた文字列です。デバイスを明示的に選び、テストで一文話して、聴衆より先に字幕を確かめておいてください。なお、この一覧にはBlackHoleやLoopbackのような仮想オーディオデバイスも普通の入力として現れます。システム音声をそこへ流して選べば画面共有なしで再生音を字幕にできますが、その場合は「再生音の入力」スイッチをオンにして、生の声向けのエコーキャンセルとノイズ抑制が字幕にしたい音を削らないようにしてください。