LM Studioを使ってローカルで多言語翻訳するHTMLツールをつくった
はじめに
ChatGPTやClaudeなどのLLMサービスを使って翻訳をする機会が増えましたが、いくつかの制限に直面することがあります。
- 大量の文章を一度に翻訳できない(一度に処理できるトークン数に制限がある)
- epubファイルに対応していない
- APIを使うとコストがかかる
これらの問題を解決するために、LM Studioを使ってローカルで動作する多言語翻訳HTMLツールを作成しました。サーバは必要なく、ブラウザで完結するため、手軽に利用できます。
plamoの翻訳に特化したplamo-2-translate
が発表されてから、ずっとやりたいと思っていたのですが、なかなか手が回らず、今回ようやく形にすることができました(plamo-2-translateは5GB程度と軽量なので、比較的メモリが少ないマシンでも走る・・・はず)。
まだまだ改善の余地ありで、表示が崩れることが多々ありますが、宜しければお試しください。
私は先日Macbook Pro M4 Max メモリ128GBを購入して、ハッスルしながらgpt-oss-120Bを動かしていて、やっとマシンの性能を活かせるようになってきたので、これからはローカルで色々試していきたいと思っています。
作成したツール
ダウンロード
📦 LLM Translator - Release より最新版をダウンロードしてください。
このツールは、LM Studioのローカルサーバーと連携して、テキストやepubファイルを翻訳するHTMLアプリケーションです。対応言語は使用するLLMモデルに依存します。
主な特徴
- ローカル環境で完結: LM Studioを使用することで、インターネット接続なしで翻訳が可能
- 柔軟な言語対応: 使用するLLMモデルが対応している言語間での翻訳が可能
- epub対応: epubファイルをアップロードして章ごとに翻訳
- 大量テキスト対応: チャンクごとに分割して処理するため、長文の翻訳も可能
- コスト削減: ローカルLLMを使用するため、APIコストが発生しない
使い方
1. LM Studioのセットアップ
- LM Studioをダウンロード・インストール
- 翻訳したい言語に対応したLLMモデルをダウンロード
- 日本語対応モデル例:Qwen2.5、Llama 3-ELYZA-JP-8Bなど
- モデルによって対応言語が異なるため、用途に合わせて選択
- LM Studioでローカルサーバーを起動(デフォルト: http://localhost:1234)
2. 翻訳ツールの使用
- 📦 LLM Translator - Release から最新版のZIPファイルをダウンロード
- ZIPファイルを解凍
- ブラウザで
translator.html
を開く - テキストを入力するか、epubファイルをアップロード
- 翻訳先言語を選択
- 「翻訳する」ボタンをクリックして翻訳開始
詳細な設定方法や使用方法については、README.mdをご参照ください。
チャンクサイズをデフォルト1000にしていますが、ここを増減させると翻訳の粒度が変わります。
一括で大きく翻訳したい場合は大きく、細かく翻訳したい場合は小さくしてください
(ただし訳の精度や、表示の崩などに影響する可能性があります)。
どの程度が良いかは、使用するモデルや翻訳元の文章によって異なるため、試行錯誤が必要です。
注意事項
このツールは複数のepubファイルで動作確認を行っていますが、完全ではありません。epubの構造によっては、HTMLの表示が崩れる場合があります。特に以下のような場合に問題が発生する可能性があります:
- 複雑なレイアウトを持つepubファイル
- 特殊なCSSスタイルが適用されているepub
- 画像が多く含まれるepub
技術的な詳細
- フロントエンド: 純粋なHTML/JavaScript(フレームワーク不使用)
- epub処理: JSZipとXMLパーサーを使用してepubを解析
- API連携: LM StudioのOpenAI互換APIエンドポイントを使用
- 翻訳処理: チャンク分割により大量テキストにも対応
おわりに
このツールは個人的なニーズから生まれたものですが、同じような課題を抱えている方の役に立てば幸いです。
改善点や機能追加のアイデアがありましたら、ぜひGitHubのIssueやコメントでお知らせください。特に以下の点についてフィードバックをいただけると嬉しいです:
- epubの表示崩れを改善する方法
- 翻訳品質を向上させるプロンプトの工夫
- UIの改善案
- その他の便利な機能のアイデア
本当はやりたかったこと
- 画像を適切に挿入
- 目次と該当部分へのリンク
皆様のご意見をお待ちしております!
Discussion