LibreTranslate – matoken's blog https://matoken.org/blog Is there no plan B? Tue, 30 Apr 2024 10:24:57 +0000 ja hourly 1 https://wordpress.org/?v=7.0 https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9-32x32.jpeg LibreTranslate – matoken's blog https://matoken.org/blog 32 32 LibreTranslate のモデルデータのダウンロード https://matoken.org/blog/2024/04/30/libretranslate-model-download/ https://matoken.org/blog/2024/04/30/libretranslate-model-download/#respond Tue, 30 Apr 2024 10:24:55 +0000 https://matoken.org/blog/?p=4011

先日新しい端末を入手したので,Debian を入れて使っています.これに LibreTranslate を Docker 経由で入れたのですが,モデルのダウンロードに失敗して再ダウンロードしてくれなかったのをダウンロードし直しさせたメモです.

Note
HP t430 thin client CPU Intel N4000/RAM 4GB/eMMC 32GB,ヤフオクにて 1,000円 + 送料 1,680円

LibreTranslate は Argos Translate に web インターフェイスや API を付けたような感じのもので,セルフホストして回線無しでも使うことが出来ます.

LibreTranslate については 鹿児島らぐの 鹿児島Linux勉強会 2022.12 で発表しました.このときは pip で導入,今回は Docker で導入しました.

Docker 利用時は, ./run.sh を実行すると導入されていなければ導入,そして起動してくれます.
モデルがない場合,モデルのダウンロードもしてくれます.

しかし,回線が不安定だとモデルのダウンロードが途中で失敗してしまうことがあります.

$ ./run.sh
  :
Downloading English → Czech (1.9) ...
(IncompleteRead(15249408 bytes read, 56611648 more expected),)
  :
^c

再度実行するとダウンロードされなかったモデルが使えない状態で起動します.今回は一番使いたい日本語のモデルがない状態です……

$ ./run.sh
Checking for docker...   found
Running on http://*:5000

run.sh を確認すると,最後の行で,libretranslatrun.sh の引数付きで呼んでいるようです.

docker run -ti --rm -p $LT_PORT:$LT_PORT $DB_VOLUME -v lt-local:/home/libretranslate/.local libretranslate/libretranslate ${ARGS[@]}

ということで libretranslat の usage や README.md の Arguments を見ると --update-models が使えそうです.このオプションを付けて起動すると足りないモデルのダウンロードをしてくれました.

$ ./run.sh --update-models
Checking for docker...   found
Updating language models
Found 88 models
Downloading English → Danish (1.3) ...
  :

しかし,やはり回線が駄目なのでよく転けるし時間がかかります. --load-only オプションを指定し,一番使う英語と日本語を使うように指定すると,英語と本語のモデルだけをダウンロードしてくれて,英語<→日本語相互翻訳が可能になりました.

$ ./run.sh --load-only 'ja,en' --update-models
Checking for docker...   found
Updating language models
Found 88 models
Keep 2 models
Downloading English → Japanese (1.1) ...
Downloading Japanese → English (1.1) ...
Loaded support for 13 languages (2 models total)!
Running on http://*:5000

残りのモデルはおいおいダウンロードしようと思います.

Note
usage を見ると --force-update-models というオプションもありました.未確認ですが,モデルファイルが壊れている場合などに使えそうです.
]]>
https://matoken.org/blog/2024/04/30/libretranslate-model-download/feed/ 0
LibreTranslate で自分用翻訳サーバ https://matoken.org/blog/2022/12/31/libretranslate-your-own-translation-server/ https://matoken.org/blog/2022/12/31/libretranslate-your-own-translation-server/#respond Sat, 31 Dec 2022 10:35:34 +0000 https://matoken.org/blog/?p=3791

ArgosTranslate でローカルで機械翻訳を試していい感じだったので,ArgosTranslate を使った翻訳ウェブサーナのLibreTanslate も試してみました.

pipでかんたんに導入できます.ここではvenvで環境を分けています.

$ python3 -m venv venv (1)
$ source venv/bin/activate (2)
$ pip install libretranslate (3)
$ du -Hs . (4)
3518928 .
$ libretranslate (5)
Updating language models
Found 58 models
Downloading Arabic → English (1.0) ...
Downloading Azerbaijani → English (1.5) ...
Downloading Catalan → English (1.7) ...
  :
^c
$ du -Hs ~/.local/share/argos-translate/ (6)
6137956 /home/matoken/.local/share/argos-translate/
$ libretranslate --frontend-language-source en --frontend-language-target ja (7)
Running on http://127.0.0.1:5000
  1. venv設定
  2. venv反映
  3. pipでLibreTranslateを導入
  4. 容量確認
  5. モデルデータが無い場合はダウンロードされる
  6. モデルデータの容量確認
  7. 翻訳元既定値をen, 翻訳先既定値をjaにして起動
Note

argostranslateも一緒に導入されます.

$ argos-translate -h
usage: argos-translate [-h] [--from-lang FROM_LANG] [--to-lang TO_LANG] [TEXT]

Open-source offline translation.

positional arguments:
  TEXT                  The text to translate. Read from standard input if missing.

options:
  -h, --help            show this help message and exit
  --from-lang FROM_LANG, -f FROM_LANG
                        The code for the language to translate from (ISO 639-1)
  --to-lang TO_LANG, -t TO_LANG
                        The code for the language to translate to (ISO 639-1)

ウェブブラウザで http://127.0.0.1:5000/ にアクセスします.左側のテキストエリアに翻訳したい文字列を入力すると入力されるたびに翻訳され右側にテキストエリアに結果が表示されます.

libretranslate00

curl経由でも実行してみます.

$ curl -X POST --silent --show-error -F "q=hello world." -F "source=en" -F "target=ja" http://127.0.0.1:5000/translate | jq .
{
  "translatedText": "こんにちは世界。."
}
Tip

ウェブインターフェイスで一部の言語しか選べなかったり,

Cannot translate text: 400 Bad Request: English (en) is not available as a target language from Japanese (ja)

のようなエラーとなった.

初回起動時にダウンロードする言語モデルが壊れていたためのようで一旦削除してダウンロードし直すことで動作するようになった.(ダウンロード中にNotePCをサスペンドしてしまったせいだと思う……)

$ rm -r ~/.local/share/argos-translate
$ libretranslate
Updating language models
Found 58 models
Downloading Arabic → English (1.0) ...
Downloading Azerbaijani → English (1.5) ...
  :
環境
$ dpkg-query -W python3 python3-pip
python3 3.10.6-3+b1
python3-pip     22.3.1+dfsg-1
e$ lsb_release -a
Distributor ID: Debian
Description:    Debian GNU/Linux bookworm/sid
Release:        n/a
Codename:       bookworm
$ arch
x86_64
]]>
https://matoken.org/blog/2022/12/31/libretranslate-your-own-translation-server/feed/ 0