オートダビング構文はどう作ったか
― 自動吹き替えの日本語を数える

YouTube の自動吹き替えの日本語は、何を言っているのか分からないのに、毎回きっちり同じ壊れ方をします。あの壊れ方には規則があるはずだと考えて、実際に数えて、規則として実装した記録です。

2026-08-02 / RustyWorks

1. 壊れ方が一定なら、規則がある

自動吹き替えの日本語には、聞いてすぐ分かる癖があります。やたらと「えぇ」と言う。主語をいちいち言う。「〜を持っています」が多い。そして女性の声はなぜか「〜だわ」「〜のよ」と喋る。

おかしいのに、おかしさが毎回同じです。ということは、そこには手続きがあります。手続きがあるなら、逆にたどって再現できます。

立てた仮説はこうです。あの日本語は「英語の頭で考えた日本語」である。英語の音声認識を通し、英語として構造を決め、それを機械的に日本語へ移す。そのとき英語の側にあって日本語には無いもの――主語、冠詞、所有格、フィラー――が、日本語に無理やり持ち込まれる。

だとすれば、作るべきものは翻訳器ではありません。「日本語を、いったん英語を経由したかのように書き直す装置」です。

2. 実測1 ― 英語側にフィラーはいくつあるか

まず前提を確認しました。「そもそも英語の音声認識はフィラーを拾っているのか」です。拾っていなければ「えぇ」の出どころが説明できません。

61分の対談動画1本、英語の自動字幕を数えました。

表現回数毎分
you know811.33
so,450.74
like,310.51
uh290.48
um270.44
I mean250.41
well,230.38
合計2614.3

61分で261回。毎分4.3回です。きれいに消されているどころか、たっぷり残っていました。ここが出発点です。

3. 実測2 ―「えぇ」は単語ではなかった

同じ動画の日本語側を数えて、思っていたものと違うことが分かりました。

日本語回数
ええと38
ええ(単独)20
えっと9
え系 小計67
うん54
まあ19
相槌を含む合計140

「えぇ」の正体は、ひとつの語ではなく「え」で始まる一群でした。聞いているぶんには「ええと」「えっと」「ええ」はすべて同じ「え」の音で始まるので区別されず、まとめて「やたら『えぇ』と言う」と知覚されます。

もうひとつ、英語側との対応で予想が外れました。

英語回数日本語での対応保持率
yeah80うん(54) + ええ(20) = 7493%
um / uh113ええと(38) + えっと(9) + まあ(19) = 6658%

主犯は umuh ではなく、相槌の yeah でした。対談形式でフィラーが濃く感じるのは、話し手が交互に yeah を打ち続けるからです。

実装への含意は明確でした。単一の「えぇ」を挿入するのは間違いで、重み付きの集合から引く必要があります。

ええと  57%
ええ    30%
えっと  13%

4. 実測3 ― レジスタが2つあった

ここが一番の収穫です。ジャンルの違う動画を測ったら、同じ「自動吹き替え」なのに、まったく別の喋り方が出てきました。

対談(61分)vlog(11分)
ええと / えっと38 / 90 / 0
わよ・のよ・るわ・わねほぼ無し32回(2.9回/分)
その・この15回(1.4回/分)
千人の戦士の精神と1万人の男の力を間違いなく持ってるわ
一番の態度と一番の意思を持ってるわ
これには秘密のトリックがあるのよ

女ことばは翻訳日本語の最も有名な特徴です。英語は文末に話し手の性別が出ないのに、日本語の吹き替えは付けます。日本語話者にとっては「えぇ」よりも即座に「これは翻訳だ」と分かる目印です。

アプリに複数のモードがあるのは、趣味で分けたのではなく、測ったら2つ出てきたからです。

5.「かしら」は一度も出てこなかった

吹き替え音声248セグメントのうち、82(33%)が終助詞で終わっていました。その内訳です。

女ことば重み
46
のよ25
わよ21
わね8
かしら0
のね0

「かしら」「のね」は0回です。翻訳の女ことばと言われて反射的に入れていた語が、実データには存在しませんでした。

思い込みで入れた語を消せたことが、実測の最大の収穫でした。数えなければ、ありもしない「かしら」を出し続けるアプリになっていました。

もうひとつ。終助詞が付く先はすべて常体でした。実物は「持ってわ」であって「持っています」ではありません。丁寧語のまま終助詞を足していた実装を、ここで書き直しています。

6. 実装 ― 敬体に正規化してから常体へ戻す

変換は 65KB ほどの JavaScript 1ファイルで、外部への通信はありません。入力した文章はブラウザの中だけで処理されます。

入力
 ├ 引用・括弧の中身を退避
 ├ 定型文・短い口語の表引き
 ├ 構造変換   ← 文に割る前に、テキスト全体へ
 ↓ ここで文に分割
 ├ 語彙・慣用句・述語パターン
 ├ 一人称/所有格/冠詞の付与
 ├ 敬体に正規化   ← 活用の判定はここ一箇所だけ
 ├ 主語の補完・冗長化
 ├ 常体へ逆変換   ← 常体モードのみ
 ├ 終助詞
 └ フィラーの挿入

設計上の要点は「いったん敬体に揃えてから常体へ戻す」ところです。日本語の活用は面倒なので、判定を一箇所に集めないと、モードの数だけ活用ルールを二重に持つことになります。常体化はその逆写像として書けば済みます。

もうひとつ、途中で諦めた判断があります。五段活用と一段活用は、表記から見分けられません。「走る」と「見る」は字面が同じ形です。機械的に活用させると「走ます」のような壊れ方をします。

そこで活用を諦めて「〜のです」で受けることにしました。「彼は走るのです」なら活用の判別が要りません。しかも、もったいぶった言い回しはこの構文の持ち味そのものなので、逃げが逃げに見えないという副産物が付いてきました。

7. ハマったところ

日本語を規則で書き換えるとき、繰り返し踏んだ穴です。

語尾の「置換」が語幹を食う

最頻出でした。"した"→"しました" という単純な置換が、「でした」の中に当たって「でしました」を作ります。長いキーから当てる、直前の文字で除外する、そして置換ではなく付け足す。

規則が自分の出力を再処理する

「ますが、」を「ます。しかし、」に変えた直後、別の規則がその「しかし、」を切って「しか。そして、」になりました。生成物にマッチしない条件が要ります。

確率的な不具合は1回では見えない

文末に接続詞だけが残って「そして、です。」という中身の無い文が出る不具合がありました。発生率は 2.3%。数回試した限りでは気づけません。率が知りたい欠陥は、数千回まわして率で出すしかありませんでした。

検出器も実装物である

壊れた出力を自動で見つける検出器を書きましたが、その検出器が2回バグりました。既知の型しか見ておらず新しい壊れ方を素通りさせた回と、「ください」を誤りとして12件誤検出した回です。

同じ罠は grep にもあります。MALE_RE を消したか確認しようとして grep MALE_RE を打つと、FEMALE_RE に当たって「まだ残っている」と読めてしまいます。部分一致で判定しない。

8. できないこと

正直に書いておくと、カタカナの専門語ばかりの文は、あまり変わりません。

「リポジトリの CI がタイムアウトするのでワークフローのキャッシュ設定を見直した」のような文には、当てる辞書がありません。日常語の言い換え表を持っていても引っかからないので、できるのは文を分割することとフィラーを入れることくらいです。

これは辞書を厚くすれば減りますが、ゼロにはなりません。手法の限界です。

9. 試す

ブラウザだけで動きます。読み上げも付いているので、あの平板な合成音声で読ませるところまで再現できます。題材が吹き替えなので、音が出て初めて完成する種類のものです。

オートダビング構文を開く