0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカルLLMで実現する無料翻訳エンジンの使い方:Ollama + Gemma、LibreTranslate、LTEngine

Posted at

はじめに

前回は OpenAI の API を利用し、PDFのレイアウトを保ったまま翻訳するツールを紹介しました。
今回はその発展版として、完全ローカルで動作する無料翻訳環境 を構築するための前段階として、ローカルPCで翻訳エンジンを動作させる方法をまとめます。

紹介するのは以下の3つの方法です:

  1. Ollama + Gemma:ローカルLLMを使った高品質翻訳
  2. LibreTranslate:軽量なNMT翻訳サーバー
  3. LTEngine + Gemma:LibreTranslate互換のLLM翻訳エンジン

1. Ollama + Gemma で翻訳する方法

Ollamaのインストール

まず、MacなどでローカルLLMを動かすために Ollama をインストールします。

# Ollamaのインストール
brew install ollama

# サーバー起動
ollama serve

# 起動時に自動実行したい場合
brew services start ollama

Gemmaモデルの実行

Ollamaはさまざまなオープンモデルを簡単に動かせます。
翻訳性能の高い Gemma 3 12B モデルを利用してみましょう。

# Gemma 3 12B モデルの実行
ollama run gemma3:12b

初回実行時にはモデルデータ(数GB)がダウンロードされます。

API動作確認

OllamaはOpenAI互換APIを提供しているため、ローカルで同様に呼び出せます。

curl -s http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemma3:12b",
    "messages": [
      {"role": "user", "content": "次の英文を日本語に翻訳してください: Hello, world."}
    ]
  }' | jq .

成功すれば、Gemmaが生成した翻訳結果がJSON形式で返されます。

出力例
{
  "id": "chatcmpl-673",
  "object": "chat.completion",
  "created": 1761631346,
  "model": "gemma3:12b",
  "system_fingerprint": "fp_ollama",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "こんにちは、世界。\n"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 21,
    "completion_tokens": 6,
    "total_tokens": 27
  }
}

2. LibreTranslate を使ったローカル翻訳

LibreTranslateとは

LibreTranslate は、完全オープンソースの機械翻訳(NMT)エンジンです。
Dockerで簡単に起動でき、クラウド不要で使えるのが特徴です。

Dockerでの起動

docker run -ti --rm -p 5001:5000 libretranslate/libretranslate --load-only="en,ja"
  • -p 5001:5000:ホスト側ポート5001でアクセス
  • --load-only="en,ja":英語・日本語のみをロードして軽量化

起動後、ブラウザで http://127.0.0.1:5001 にアクセスし、UIが表示されれば成功です。

Pythonから利用する

公式Pythonバインディング libretranslatepy を使うと簡単に翻訳できます。

from libretranslatepy import LibreTranslateAPI

lt = LibreTranslateAPI("http://127.0.0.1:5001/")
print(lt.translate("こんにちは、世界。", "ja", "en"))

LibreTranslateはREST APIを採用しており、他の言語やアプリケーションからも容易に統合できます。

コンテナ操作の基本

操作 コマンド
停止 docker stop libretranslate
再開 docker start libretranslate
削除 docker rm -f libretranslate
状態確認 docker ps -a

設定を変更したい場合は、一度削除して再起動すれば反映されます。

3. LTEngine + Gemma で翻訳する方法

LTEngineとは

LTEngine は、LibreTranslateと同じAPI仕様で動作するLLMベースの翻訳エンジンです。
GemmaやMistralなどのローカルモデルをバックエンドとして利用でき、LibreTranslateと置き換え可能です。

インストール手順(macOS Arm)

まず依存ライブラリをインストールします。

brew update && brew upgrade
brew install rust llvm cmake
brew cleanup -s

次にLTEngineをクローン・ビルドします。

git clone https://github.com/LibreTranslate/LTEngine --recursive
cd LTEngine
cargo build --features metal --release

LTEngineの実行

ビルド後、以下のように起動します。

# 通常起動
./target/release/ltengine

# Gemmaモデルを指定して起動
./target/release/ltengine -m gemma3-12b

この状態でLibreTranslate互換API(例:http://127.0.0.1:5050/translate)が利用可能になります。

Pythonやツールから利用

LibreTranslateと同じAPI仕様なので、設定を変えずにそのまま置き換えられます。

lt = LibreTranslateAPI("http://127.0.0.1:5050/")
print(lt.translate("This is a test.", "en", "ja"))

LLMを利用しているため翻訳精度は非常に高く、自然な日本語訳を得られます。

まとめ

手法 概要 メリット デメリット
Ollama + Gemma ローカルLLMで翻訳 高品質・柔軟 モデルサイズが大きい
LibreTranslate NMTベースの翻訳サーバー 軽量・高速 翻訳精度は中程度
LTEngine + Gemma LLM+LibreTranslate互換API 高精度・API互換 ビルドにやや手間

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?