Pocket Reader — ウェブページ読み上げ拡張
概要
Pocket Readerは、ウェブページの本文を音声で読み上げることに特化したChrome拡張です。バックエンドにはKyutai LabsのPocket TTS(CPU上で動作する軽量な音声合成モデル)を用いる想定で、拡張は段落ごとにテキストを分割して順次合成・再生することで、長文でも最初の音声を素早く再生できます。自動コンテンツ抽出、複数の音声選択肢、簡潔な再生コントロールを備え、拡張側とローカルサーバー(またはTTS提供元)を組み合わせた構成で動作します。
リポジトリの統計情報
- スター数: 8
- フォーク数: 1
- ウォッチャー数: 8
- コミット数: 2
- ファイル数: 5
- メインの言語: JavaScript
主な特徴
- 段落単位の処理で長文でも素早く再生開始
- 8種類の音声オプションをサポート
- 記事本文の自動抽出(ノイズを削ぎ落とす)
- シンプルな再生コントロール(再生・停止など)
技術的なポイント
リポジトリ構成(extension と server)から判断すると、拡張はブラウザ側でページの本文を抽出し、サーバー側でPocket TTSを使って音声を生成する設計になっています。段落ごとの処理は「段落を小さなチャンクに分けて逐次合成し、最初のチャンクが生成されたら即座に再生を始める」ことでユーザー待ち時間を短縮する手法です。これにより、長文を一括で合成してから再生する場合に比べて体感レイテンシが大幅に改善されます。
音声の切り替えはTTSモデルの音声パラメータや複数モデルの選択によって実現していると推測できます。自動コンテンツ抽出には、DOM解析やReadability系のアルゴリズムを利用して本文候補を抽出する実装が一般的で、この拡張も同様のアプローチを採っている可能性が高いです。拡張とローカルサーバー間はHTTP/Fetch等で通信し、音声データはストリーミングまたはチャンクごとに受け取りWeb Audio APIやHTMLAudioElementで再生する流れが自然です。
generate_icons.py はアイコン生成やサイズ変換などの補助スクリプトで、images ディレクトリにはデモ画像や拡張用画像が格納されています。ローカルCPUでTTSを実行する設計は、クラウドに音声・テキストを送らずに済むためプライバシー面での利点があり、ネットワーク非依存で動作できる点も強みです。一方で、ローカルでのTTS実行はCPU負荷やメモリ使用量が問題となることがあるため、軽量化や段階的処理(ストリーミング合成)は実用性を高める重要な工夫です。
拡張自体はJavaScriptで実装されており、Chrome拡張のマニフェスト、コンテンツスクリプト、ポップアップUI、バックグラウンド処理のいずれかを組み合わせている想定です。シンプルかつ局所的な構成のため、カスタマイズや他のローカルTTSとの置換も比較的容易に行えます。
プロジェクトの構成
主要なファイルとディレクトリ:
- README.md: file
- extension: dir
- generate_icons.py: file
- images: dir
- server: dir
まとめ
ローカルTTSで素早く読み上げるシンプルなChrome拡張。実用性が高く拡張性もあり。
リポジトリ情報:
- 名前: pocket-reader
- 説明: 説明なし
- スター数: 8
- 言語: JavaScript
- URL: https://github.com/lukasmwerner/pocket-reader
- オーナー: lukasmwerner
- アバター: https://avatars.githubusercontent.com/u/55150634?v=4
READMEの抜粋:
Pocket Reader
A Chrome extension that reads web page content aloud using Pocket TTS - a lightweight text-to-speech model that runs on your CPU.
Features
- Read any web page content aloud
- Paragraph-by-paragraph processing - audio starts playing quickly even for long documents
- Multiple voice options (8 different voices)
- Automatic content extraction (focuses on main article content)
- Simple playback controls (pl…