Kokoro 82M、Qwen、llama.cppで完全ローカルなPDF→オーディオブック作成ワークフローを作る

Reddit r/LocalLLaMA / 2026/4/30

💬 オピニオンDeveloper Stack & InfrastructureSignals & Early TrendsTools & Practical Usage

要点

  • 技術系PDFを音声で読み上げつつ、再生中に対応する本文テキストを同期してハイライトするローカルファーストのデスクトップアプリについて述べています。
  • Tauri 2.0を使ってMac上で動作させ、テキスト読み上げ(TTS)には端末内で動作するKokoro 82Mを利用しています。
  • ワークフローは、PDFの読み込みとレンダリング、読めるテキストの抽出、TTS向けの分割、ローカルでの音声生成、そして音声再生とアクティブなテキスト区間の連動、という流れです。
  • 出力モードとして、PDFをオーディオブック用の音声ファイル群に最適化する案(llama.cppとQwen 0.8B/2Bを使用)と、内容をより会話調に変換するポッドキャスト風モードを検討しています。
  • 技術的な主な課題は、生成音声を元のPDFテキストに正確に合わせること、コード断片や表の扱い、初回生成の待ち時間を減らして対話的にすることです。
Kokoro 82M、Qwen、llama.cppで完全ローカルのPDF-to-オーディオブック・ワークフローを構築する

みなさん、こんにちは。

私は、技術書を音読でき、読みながら発話されたテキストをハイライト表示できるローカル・ファーストのデスクトップPDFリーダーを作っています。

最初の動機はかなり実用的でした。私はプログラミングや技術書をたくさん読みますが、多くの出版社ではオーディオ版が提供されていないか、AI生成の音声に対して追加料金を請求されます。そこで、完全にローカルな構成でどこまでできるか試してみたかったんです。

このアプリはTauri 2.0で作られており、私のMac上でローカルに動作します。TTSにはKokoro 82Mを使っています。M1 Macでは、ウォームアップのために最初に少し待ちが発生しますが、その後は通常のリスニングに十分な速さで生成されます。音声が再生されている間、現在の文/テキスト区間がリーダー内でハイライトされるので、ただ切り離された音声ファイルを聴いているというより、読み進めている感覚になります。

現在のパイプラインはおおむね次のような流れです:

  1. デスクトップアプリでPDFを読み込み、レンダリングする
  2. 現在のセクションから読み取り可能なテキストを抽出する
  3. テキストをTTSに適したチャンクに分割する
  4. Kokoro 82Mで音声をローカル生成する
  5. 対応するソーステキストをハイライトしながら音声を再生する

私が考えているエクスポート(出力)モードは2つあります:

  • オーディオブック形式そのもの。PDFを、Qwen 3.5 0.8B または 2Bモデルを使って llama.cpp で最適化した一連の音声ファイルに変換する
  • ポッドキャスト風の形式。素材を、より会話的なフォーマットに変換する

これまでで最も面白い技術的課題は:

  • 生成した音声を、元のPDFテキストとどれだけ正確に同期させるか
  • 技術書にあるコードスニペットや表の扱い
  • 最初の生成を、アプリがまだインタラクティブだと感じられるほど速くすること

読み上げられる最初の15文を読み込んだ後、読みをスムーズに続けるために、次の15文を処理する必要があります。あるいは、物事の前処理のやり方を完全に別のアプローチにするかもしれません。

以上が、現時点でのプロジェクトの状況です。私はまだ主に自分の読書ワークフローのために作っていますが、結果が十分に役立つものになって、コードベースがあまり恥ずかしい出来でなければ、後でオープンソース化するかもしれません。

submitted by /u/purellmagents
[link] [comments]