「この本、代わりに読んでくれたらいいのに」を、自分で作った話 ── OCR→TTSオーディオブック自作のまとめ
「この本、代わりに読んでくれたらいいのに」
このブログのAI実験室で、自分が一番よく口にしてきた言葉かもしれない。子どもの読み聞かせで、寝かしつけているはずの自分が先に寝落ちする。手持ちの小説を音声で聴ければ、通勤中にも続きが聴ける。目が疲れていても物語を楽しめる。そんな願いから、OCRとTTSを組み合わせたオーディオブック作りに手を出した。
OCR→TTSまわりの実験ログだけで、気づけば8本近くたまっていた。このブログでは「ログが10本くらいたまったら、1本まとめを書く」と決めている。少し早いけれど、区切りがいいので一度まとめておきたい。3ヶ月分の試行錯誤を、失敗ごと振り返る。

その前に ── 止まっていた自分が、動き出せた理由
正直に書くと、ブログ自体は2024年に始めていた。意気込んで最初の記事を書いたのに、そこからしばらく、更新が止まった。
何もしていなかったわけじゃない。AIツールは触っていたし、情報も調べていた。ただ、書けなかった。キーボードの前に座って「書こうかな、どうしようかな」と思っているうちに、時間だけが経つ。頭の中を整理して、文章にして、箇条書きにするだけで、ずいぶん時間がかかる。WordPressの操作も億劫だった。調べればすぐ答えは出てくるのに、その画面にたどり着く前に「もういいや」となる。それの繰り返しだった。
変わったきっかけは、2つ重なった。
ひとつはClaude Code。コードを自分で書けなくても、やりたいことを言葉で伝えれば形になる。「だったらブログの設定も全部任せればいいんじゃないか」と思って、WordPressをやめてAstroに作り変えた(WordPressをやめてリニューアルした話)。XサーバーにSSHで……と自分で調べていた頃には越えられなかった環境構築の壁が、AIに任せたら案外あっさり片付いた。
もうひとつは音声。止まっていた期間も、ChatGPTやGrokと音声で会話しながら考えを整理することは、よくやっていた。やってみて分かったのは、キーボードで打つより、声に出すほうが自分の考えをすらすら出せるということ。音声メモをAIに清書させて貯めるようになって、「これでそのまま記事を作ればいい」と気づいた。その流れが入力デバイスを見直した話や、Claude Codeに落ち着くまでにつながっている。
コードを書かなくてよくなって、キーボードに張り付かなくてよくなった。その勢いのまま、ずっと頭の片隅にあった「本を音声で聴きたい」に、ようやく手を出した。
OCR→TTSの3ヶ月、ほとんど失敗だった
2026年の春。紙の本をテキストにして、音声で読み上げる。それを自分のPCで動かす挑戦に、本腰を入れた。3ヶ月ほどの記録を、順番にたどる。
まず「本当にできるのか」を確かめるところから始めた。やりたいことをAIに相談したら「可能です」と返ってきて、頭の中のぼんやりした願いが、初めて具体的な手順に変わった(挑戦を始めた話)。
ところが最初のOCRは文字化けだらけだった。定番のTesseractに縦書きの小説を読ませたら、返ってきたのはアルファベットと記号の羅列。日本語の小説なのに、原文の面影すらない。日本語特化のYomiTokuに変えて、やっとまともなテキストが取れた(最初のOCRは文字化けだらけだった)。
次の壁はLLMだった。OCRの誤字をAIに直させたら、修正じゃなくて要約されて返ってきた。3ページ分が1段落に縮んでいた。前処理の順番を3回も間違えて、やっと「LLMは魔法じゃない。きれいな入力を用意するのは人間の仕事だ」という当たり前にたどり着いた(AIに文章を直させたら、内容が消えた)。
途中、並行作業をさせたくてtmuxでマルチエージェント環境も整えた。本筋からは少し外れる寄り道だけど、「掃除機をかけている間にAIが調べてくれる」状態は素直に面白かった(tmux環境を整えた話)。
モデル選びでも転んだ。「大きいモデルほど賢い」と思って70Bを選んだらメモリ不足で起動すらせず、次に選んだモデルは考え込むクセが暴走して処理が14倍に膨れた。設定を1つ変えただけで14.6倍速くなったときは、脱力した(14倍遅くなった日、Qwen3 32Bで安定した日)。
テキストが固まって、いよいよ声に進んだ。3つのエンジンを聴き比べて気づいたのは、「正確に読ませると棒読みになる。自然に読ませると漢字を間違える」というトレードオフだった。どれも一長一短で、正解は1つじゃなかった(声を3つ試して気づいたこと)。
8.6時間分の音声を耳で全部チェックするのは、もう「読む」のと変わらない。だから「品質を上げる」と「品質を測る」を分けて、Whisperで読み間違いを数値で拾う仕組みを作った。ここで504ページの小説が、8.6時間のオーディオブックになった(ComfyUIとWhisperで音質が変わった)。
山場は「完全自動化はあきらめた」
16ステップのパイプラインができあがった。でも、完全自動にはならなかった。
読み仮名の辞書登録も、最後の品質判断も、結局は人間がやるほうがよかった。作っている間ずっと、「もう少しで完全自動になりそう」という手応えと、「やっぱり人が見ないと無理だ」という現実が、交互にやってきた。
最終回の完全自動化はあきらめた。それでいいと思った話に書いたとおり、その割り切りに至れたことが、たぶん一番の成果だった。聴くために作ったのに、品質チェックで聴く時間は無駄じゃなくて「先行試聴」だった。AIが万能じゃないと、身をもって知った。
並べてみて、今思うこと
こうして振り返ると、ほとんど失敗の記録だ。文字化け、要約事故、メモリ不足、14倍の遅延、棒読みと誤読。胸を張れる成功はほとんどない。
でも、一個ずつ潰してきた。そのたびに「次はこうしよう」と思えた。コードを書けない自分でも、言葉で伝えれば動く。長いあいだ止まっていた頃には、想像できなかったことだ。
それに、こうやってまとめて並べ直すと、見えてくるものがあった。一つひとつ手作業で越えてきた処理を、ワークフローとして組み直して、繰り返し回せる形にすれば、もっと精度のいいものができそうだ。まとめてみて初めて、次の一手が見えた。これは思わぬ収穫だった。
次にやること
OCR→TTSは、ワークフロー化と繰り返し処理で、もう一段精度を上げてみたい。
それと並行して、今は別のことにも手を出している。AIとの試行錯誤で増え続けたメモや会話を、Obsidianで整理し直す取り組みだ。
作って、書いて、整える。やってみたいことは、まだしばらく尽きそうにない。不器用でも、やってみたいをやってみたら、ここまで来れた。その実感だけは、止まっていた頃と確かに変わった。
この挑戦で使った道具【PR】
このオーディオブック作りは、1台のグラフィックボードがなければ始まらなかった。OCRも、LLM校正も、音声合成も、品質チェックも、全部この上で動いている。
ZOTAC GAMING GeForce RTX 5090 SOLID — VRAM 32GBが、ローカルAIでできることの幅を広げてくれた。
そして、すべてのきっかけになった一冊。
パンどろぼうとなぞのフランスパン — 子どもに読み聞かせていた絵本。これが「代わりに読んでくれたら」の出発点だった。