Kazami
返回部落格列表

文字翻譯本地模型實作

發佈於 2025年10月15日· 約 1 分鐘閱讀· 5,988 views
文字翻譯本地模型實作
文章朗讀

繁體中文

文字翻譯本地模型實作

0:000:00

<span className="text-emerald-500">前言</span>

因為本blog一開始就是要支援多國語言,所以一開始就想著如何把本地端的中文轉成日文跟英文,API雖然可以很快達成我的需求,但還是想要來親身體驗一下,順便看看本地模型產生的文字翻譯,到底可不可靠。

在進行下面細節說明之前,先說

<span className="text-amber-500">快速結論「本地模型跑出來的翻譯品質慘不忍賭」</span>

# NLLB-200 + CTranslate2(macOS, Apple Silicon)離線翻譯環境

> 適用:MacBook Pro (M-series),含 M4 / 48GB RAM  
> 方向:日文 `jpn_Jpan` ↔ 繁中 `zho_Hant`(FLORES-200 語碼)

---

## 0) 前置需求
- macOS 13+(Apple Silicon)
- Xcode Command Line Tools(若未安裝:`xcode-select --install`)
- 可用儲存空間 ~10 GB(模型 + 轉換輸出)

---

## 1) 建立 Python 虛擬環境
```bash
python3 -m venv ~/.venvs/nllb && source ~/.venvs/nllb/bin/activate
python -m pip install -U pip wheel


python -m pip install --only-binary=:all: "torch>=2.6,<2.7"
python -m pip install -U ctranslate2 transformers sentencepiece huggingface_hub safetensors


python - << 'PY'
import torch, transformers, sentencepiece, ctranslate2
print("TORCH =", torch.__version__)
print("TRANSFORMERS =", transformers.__version__)
print("OK")
PY


# FP16(先驗證流程用)
python -m ctranslate2.converters.transformers \
  --model facebook/nllb-200-distilled-600M \
  --output_dir nllb-200-distilled-600M-ct2-fp16 \
  --quantization float16

# INT8(省 RAM/較快)
python -m ctranslate2.converters.transformers \
  --model facebook/nllb-200-distilled-600M \
  --output_dir nllb-200-distilled-600M-ct2-int8 \
  --quantization int8

mkdir -p ~/translate && cd ~/translate

curl -L -o flores200_sacrebleu_tokenizer_spm.model \
  https://opennmt-models.s3.amazonaws.com/nllb-200/flores200_sacrebleu_tokenizer_spm.model

#(可選)字典
curl -L -o dictionary.txt \
  https://opennmt-models.s3.amazonaws.com/nllb-200/dictionary.txt

2025-10-16-zh-TW

以上是我打的中文,然後用本地端模型翻出來的結果,基本上翻的不好之外,他也沒有把我中文所有的句子翻譯出來。

所以當時我天真的想說,可以透過本地模型把我blog的中文,直出日文 跟英文,看來應該是無法。

所以迫於無奈,現在 blog的其他語言只好透過 AI API幫我實現。

翻一則blog一千文字上下,我看了一下 dashboard,也不貴,大概在0.0x美金左右,比圖片便宜多了。

我最一開始的構想是:本地端輸入中文完畢之後,可以無腦一鍵點擊生成日文英文翻譯以及三語言聲音檔。<span className="text-rose-500">從結果來說是作到了,但是翻譯品質不佳,所以現在要點擊兩次按鈕,無奈。</span>

現在流程是:打完中文 -> 透過API翻譯成日文跟英文並儲存到資料庫 -> 點擊生成語音 (語音檔是根據文字生成)。

當初為了文字翻譯還設計了一個FastAPI:

2025-10-16-zh-TW

不過效果太差,只好含淚放棄。

留言

留言載入中...

文字翻譯本地模型實作