プライベート · 端末内で処理 · Apple Neural Engine

Mac が再生する音に
リアルタイム字幕を

動画も、通話も、ポッドキャストも。再生しながら文字起こしして、常に最前面のオーバーレイとして描きます。アップロードもしません。録音もしません。ディスクにも何も書きません。

14 日間、理由を問わず返金します

買い切り $9、今後のアップデートはすべて込み · macOS 14.2 以降 · Apple Silicon
字幕は無制限、好きなだけ使えます。買い足す分数も、アカウントも、サブスクリプションもありません。

アプリを切り替えても字幕は残ります。オーバーレイはすべてのウインドウより前面にあり、クリックはそのまま下へ通します。

ウインドウをクリックすれば、そのウインドウが前面に出ます。動かしたいときは を押しながら字幕をドラッグしてください。アプリでの操作と同じです。

字幕にポインタを近づけると、その下が溶けて消えます。 を押しながらにすると、直前のいくつかが積み上がります。どちらもアプリとまったく同じように、ここで動きます。

Mac のどんなアプリでも、リアルタイム字幕を

Subtitles は特定のサービスと連携するのではなく、アプリそのものをタップします。だから Mac が再生できる音なら何にでも字幕が付きます。耳が聞こえない、あるいは聞こえにくい場合も、第二言語で聞いている場合も、ただ騒がしい場所で働いているだけの場合も、繰り返し出てくる場面は次の三つです。

01

会議と通話

ZoomGoogle MeetTeamsSlack のハドルミーティング、ブラウザのタブで開いた通話。どれもアプリから出てくる音声にすぎないので、どれも同じように字幕が付きます。第二言語かどうかは関係ありません。聞き慣れない訛りがあるとき、誰かのマイクの調子が悪いとき、二人が同時に話し出したとき、それだけで元は取れます。半分しか聞き取れなかった言葉は、聞き返すより読むほうが速いし、誰の話も止めずに済みます。

02

作業しながら話の流れを保つ

音声は待ってくれません。メモやエディタ、ブラウザのウインドウに切り替えた瞬間から、会話はこぼれ始めます。オーバーレイは常にすべてのウインドウより前面にあり、クリックは下へ通すので、その前で作業していても位置は変わりません。メモを取りながら、何かを調べながら、話されている内容を追い続けられます。Granola のようなメモアプリは会議が終わったあとにまとめてくれます。こちらは、会議がまだ続いているあいだに起きなければならない側です。

03

動画・ポッドキャスト・講義

字幕のない動画、あるいは無いほうがましな自動字幕しかない動画。まだ学んでいる途中の言語で聞くポッドキャスト録画された講義や配信中の講義、インタビュー、セリフの小さい映画。字幕はそれを再生しているウインドウの上に、設定した文字サイズで表示されます。9 言語に対応していて、言語はこちらで判定します。

三つに共通するものがあります。会議も、通話も、個人的な録音も、サーバーには関係のない話だということです。この音声はどれもアップロードされません。する必要がないからです。モデルはあなたの Mac の上で動きます。

三つの制約から作りました

ライブの音声は一時停止できないし、やり直しもきかないし、そもそも自分のマシンの外に出す必要はありません。ここにあるものはすべて、そこから決まっています。

Mac の外には何も出ません

ローカルかつオフラインで動きます。ネットワーク通信も、アカウントも、テレメトリもありません。音声はタップから認識エンジンへ直接渡され、そのまま捨てられます。ダウンロードされるのはモデル本体だけで、それも一度きりです。

CPU ではなく Neural Engine

目安は リアルタイムファクター 0.15。計算 1 秒あたり 6 秒ぶんの発話を文字起こしします。同じモデルを CPU で測ったときは、ライブの音声に追いつくには約 100 倍遅すぎました。

どのアプリでも、一度にひとつ

メニューバーからソースを選ぶと、そのアプリと、そこから起動されるヘルパープロセスをまとめてキャプチャします。ブラウザや Electron アプリで動くのはそのおかげです。こうしたアプリでは、音声がメインプロセスから出てくることはありません。

音楽が歌詞になりません

認識エンジンの手前で音声検出が動くので、バックの音楽がそこに届くことはありません。これがないと、音楽がモデルのコンテキストを埋めてしまい、その直後の数語が失われます。

話者ごとに新しいボックス

別の人が話し始めたら新しい字幕を始める、という動作も選べます。間が空いたときと同じ扱いです。既定ではオフです。1 つ目のモデルと並べて 2 つ目のモデルを動かすことになるからです。

9 言語

既定のモデルは言語を自分で判定します。英語にはさらに専用のチェックポイントが 7 つあり、160 ms から上でレイテンシと精度を交換できます。

オーバーレイは邪魔になりません

すべてのウインドウの上に出るものは、それ自体が避けて通る対象にならないときにだけ成立します。クリックを受け取らず、ポインタを向けたところで溶け、目を離した行を返してくれます。

向けたところに穴があく

ポインタをボックスに近づけると、その下が薄れて消えます。読んでいる文が、書いている文を覆うことはありません。どれくらい消えるか、穴がどこまで届くかは自分で決められます。 を押しているあいだは、そのままの濃さを保ちます。

聞き逃したぶんは ⌥ を押しながら

ボックスは放送字幕と同じようにページを繰ります。埋まって、消えて、また始まる。だから目を離した行はそれきりです。 を押しながらにすると、直前に閉じたボックスがいま出ているボックスの上に積み直されます。最大 30 個、古いものはスクロールで辿れます。指を離せば、また消えます。どこにも何も書き込まれません。

オーバーレイそのものがプレビュー

メニューから , で設定が開きます。ボックスが何行埋まったら消えるか、どれくらい濃いか、ポインタの下の薄れがどこまで届くか、 がどこまで遡るか。どのスライダーも、動かしているあいだそのままオーバーレイに反映されます。数字を選ぶのではなく、見ながら決めるということです。

仕組み

コピーしかしないリアルタイムオーディオスレッド、文字起こしを決してしない移植可能なコア、そして本来あるべき場所で動くモデル。

  1. 1

    Core Audio のプロセスタップ

    48 kHz ステレオ、10.7 ms ごとにコールバック。リアルタイムスレッドはロックフリーのリングバッファへコピーするだけで、ほかには何もしません。

  2. 2

    リサンプルとゲート

    ワーカースレッドで 16 kHz モノラルまで落とし、無音は飛ばします。発話の手前に約 1 秒ぶんを流し直すので、どの語も途中から始まりません。

  3. 3

    Neural Engine 上の Parakeet

    30 秒ぶんをまとめて処理するモデルではなく、ストリーミングのモデルです。音声に追従する字幕と、数秒遅れて届く字幕の差はここにあります。

  4. 4

    オーバーレイ

    3 行ぶんのページが、放送の字幕と同じようにいったん消えて次に進みます。消えるのは音声が止まってからではなく、最後に新しいテキストが出てから 4 秒後です。

リングバッファからモデルの境界までは、移植可能な Rust です。あえて文字起こしはせず、フレームを渡すだけです。Mac に固有なのはタップとオーバーレイだけです。

14 日間、理由を問わず返金します。

審査するものも、オフにするものもありません

これを仕事の通話に向けられるのは、これがサービスではないからです。サーバーもアカウントも文字起こしもないので、送るものがなく、あいだに入る相手もいません。ソースは公開されているので、どれも信用だけで受け取る必要はありません。

  • ボットは通話に入りません。Mac がすでに再生している音を捉えるだけなので、参加者一覧に何かが現れることはなく、何かが動いていると誰かに知らされることもありません。この分野の大半は代わりに目に見える参加者を送り込みますが、それを一切認めない会社は少なくありません。
  • 録音もしませんし、ディスクにも書き込みません。音声はタップから認識器へ渡り、その場で捨てられます。字幕は画面に出て、そして消えます。 が呼び戻すボックスは終了するまでメモリ上にあるだけで、そのあとに探せるファイルは、Mac にもどこにもありません。
  • マイクは一度も開きません。聞こえるのは Mac が再生している音だけです。これは本当の制約であり、同時に、あなたが話した内容がどこにも行きようがない理由でもあります。
  • アカウントなし、テレメトリなし、通信なし。サインインする先はなく、利用状況がどこかに送られることもありません。モデルは一度だけ、約 633 MB をダウンロードします。そのあとは残っている通信が一つもありません。Wi-Fi を切っても字幕は出続けます。
  • 学習させる材料がありません。送るべき文字起こしがそもそも存在しないので、探すべき学習設定も、確認すべき初期値も、データ契約に書く委託先もありません。それが自社の規程を満たすかどうかの判断はあなたのものですが、ここに審査すべき第三者はいません。
  • 唯一の例外が購入です。Gumroad が決済を扱い、どの店もそうであるようにメールアドレスを見ますし、アプリが更新されればあなたに知らせます。アプリ自体がそのどちらかを尋ねることはありません。

モデルではなく、言語を選ぶ

モデルを使えるかどうかを最初に決めるのは言語です。だからメニューの一番上の階層に置いてあります。同じパックの中での切り替えは一瞬です。パックをまたぐときはもう一方を取ってきますが、すでに持っているものはそのまま残ります。

ダウンロードの途中で気が変わったら、その場でキャンセルしてすぐ新しいほうを始めます。あとで戻したときは、最初からではなく続きから再開します。

住まいはメニューバーの中

Dock アイコンもなければ、管理するウインドウもありません。何をしているかはアイコンが教えてくれます。聞いているあいだはインディゴ、モデルのダウンロード中は青、パイプラインが遅れ始めたら黄色。赤になることはありません。赤は録音の色ですが、ここでは何もどこにも書き込まれないからです。スイッチ類はメニューに置いたままで、そこで , を押すと、その奥にあるつまみを並べた設定ウインドウが開きます。

S
一時停止と再開
を押しながら
オーバーレイをドラッグできるようにします。押していないあいだはクリックが下へ通ります
を押しながら
直前のボックスを、いま出ているボックスの上に積み直します。古いものはスクロールで
,
設定。開いたメニューから: ボックスあたりの行数、不透明度、ポインタの下で薄れる度合い、 がどこまで遡れるか
メニューバー
モデル、ソース、文字サイズ、オーバーレイの位置、権限の状態

Apple のリアルタイム字幕で足りないとき

macOS には字幕機能が標準で入っています。Apple Silicon の Mac ならどれでも無料で、システム設定 › アクセシビリティ › リアルタイム字幕から使えます。それで足りるなら、それを使ってください。ここに挙げるのは、私の用途では足りなくなった点です。長い版が読みたければ、項目ごとの比較もあります。

  • 9 言語、判定はこちらで。Apple のものはすべての言語・国・地域で使えるわけではありません。こちらの既定のモデルは言語を自分で割り出しますし、メニューバーから切り替えられます。
  • モデルは自分で選べます。160 ms から上でレイテンシと精度を交換できる英語のチェックポイントが 7 つ、それに多言語モデルが 1 つ。Apple が渡してくれるのは字幕であって、つまみではありません。
  • オーバーレイはクリックを通します。Apple のものは自分で動かしてサイズを変えるウインドウです。こちらはクリックをいっさい受け取らないので、その上から普通に作業できます。動かしたいときだけ を押してください。
  • 向けたところで、よけてくれます。ボックスはポインタの下で薄れ、下にあるものが読めます。どれくらい、どこまで広く薄れるかは設定次第です。Apple のものは不透明なウインドウで、別の場所へ動かすしかありません。
  • 1 つのアプリだけでも、全部でも。通話を再生しているタブに向ければ、マシンのほかの部分は静かなままです。Apple のものは既定ですべてのアプリの音声を文字起こしします。
  • 音楽が歌詞になりません。認識エンジンの手前で音声検出が動くので、バックの音楽がそこに届くことはありません。
  • 話者ごとに新しいボックス。オプションで既定はオフ、標準の機能に同じものはありません。

ダウンロードの前に知っておきたいこと

  • 初回の起動には数分かかります。モデルは約 633 MB あり、初めて起動したときに自分で取ってきます。進み具合はメニューバーに出ます。
  • macOS がシステムオーディオの録音許可を求めます。この確認を飛ばすと、どこにもエラーが出ないまま、サンプルがすべてデジタルの無音として届きます。だからアプリは、分かっているふりをせずにメニューへ権限のチェックを置いています。配布物は署名と公証を受けているので、一度答えた内容はアップデートのたびに聞き直されることはありません。
  • 歌も発話として数えられます。音声検出には区別が付かないので、ボーカルのある音楽は歌詞として出てきます。
  • 話者の切れ目は後追いです。話者分離は一定の間隔で結果を返すので、新しい話者の一語二語が、消える直前の古いボックスに入ってしまうことがあります。
  • ディスプレイは 1 台。オーバーレイはメインディスプレイに表示されます。
  • 一度試したモデルはディスクに残ります。8 つを行き来してみることこそが自分に合うものを見つける方法で、試したものはそれぞれ保持されます。設定には、どれにも使われていないものを削除するボタンがあります。使用中のものが消えることはありません。

最初によく聞かれること

Zoom、Teams、Google Meet で使えますか?
はい。特定のサービスと連携するのではなく、アプリが再生する音声をタップしているので、Zoom のウインドウも、Slack のハドルミーティングも、ブラウザのタブで開いた通話も、同じように字幕が付きます。ブラウザや Electron アプリも含みます。そうしたアプリが起動するヘルパープロセスをキャプチャするからです。音声が実際に出てくるのはそちらです。
オーバーレイは邪魔になりませんか?
クリックをいっさい受け取らないので、その上から普通に作業できますし、ポインタの下では薄れて消えるので、下にあるものが読めます。どれくらい薄れるか、それがどこまで届くか、ボックスがどれくらい濃いか、何行まで保つかは、すべて設定です。 を押しているあいだは濃さを保ったままドラッグして別の場所へ動かせます。置いた場所は覚えています。
自分の声にも字幕が付きますか?
いいえ。聞いているのは Mac が再生している音だけで、マイクは決して聞きません。通話では、自分ではなく相手を読むことになります。
インターネット接続は必要ですか?
初回起動時にモデルを取ってくるときの一度だけ、約 633 MB です。そのあとは完全にオフラインで動作し、ネットワーク通信はいっさい行いません。
文字起こしを保存したり書き出したりできますか?
いいえ、そしてそれは意図的です。ディスクには何も書き込まれません。字幕は画面に出て、そのまま消えます。アプリが動いているあいだは を押しながらで直前のボックスを呼び戻せますが、これは目を離した行に追いつくためのもので、記録を残すためのものではありません。会話の記録が必要なら、これは選ぶべき道具ではありません。
情シスの承認は必要ですか?
ここには承認すべき事業者がいません。アカウントもサーバーもなく、Mac から出ていく文字起こしもなく、参加者として通話に加わるものもないので、会議にいる誰も何かに記録されてはいません。1 台のマシンに入る、署名・公証済みのアプリが 1 つあるだけで、モデルを一度ダウンロードしたあとは通信をまったく行いません。それが自社の規程を満たすかどうかの判断はあなたのものですが、あいだに審査すべき第三者はいません。
ヘッドホンや AirPods でも使えますか?
はい。スピーカーから出てくる音ではなく、アプリが生成している音声をキャプチャするので、何で聞いているかは関係ありません。
Mac が遅くなりませんか?
文字起こしは CPU ではなく Neural Engine で動きます。リアルタイムファクターはおよそ 0.15、計算 1 秒あたり 6 秒ぶんの発話にあたります。同じモデルを CPU で測ったときは、追いつくどころか約 100 倍遅すぎるという結果でした。
どの Mac で動きますか?
Apple Silicon、macOS 14.2 以降です。バージョンの下限を決めているのは Core Audio のプロセスタップで、全体がその API の上に成り立っています。
サブスクリプションですか?
いいえ。$9 の買い切りで、今後のアップデートはすべて込み、作るアカウントも買い足す分数もありません。合わなければ 14 日間の返金があります。
ソースコードは見られますか?
はい。FSL-1.1-ALv2 で公開していて、各リリースの 2 年後に Apache 2.0 になります。読むのも自分でビルドするのも github.com/daformat/subtitles からどうぞ。

音声をどこにも送らずに、何にでも字幕を。

14 日間、理由を問わず返金します

買い切り $9、今後のアップデートはすべて込み · macOS 14.2 以降 · Apple Silicon
その Mac を使っているあいだ、リアルタイム字幕は無制限です。買い足す分数も、アカウントも、サブスクリプションもありません。