基于Firefox模型的私有翻译服务MTranServer

本文题图背景由 AI 生成;

简介

什么是 MTranServer ?

MTranServer 是一个低资源消耗、快速且可私有部署的翻译服务器,旨在提供与 Google 翻译相似的功能。仅需 1G 内存即可运行,无需显卡。单个请求平均响应时间 50ms。支持全世界主要语言的翻译。

主要特点

  1. 低资源占用:仅需 1GB 内存即可运行,无需图形处理单元(GPU),适合在资源有限的环境中部署。
  2. 快速响应:单个请求的平均响应时间为 50 毫秒,支持高并发处理,适合需要快速翻译的应用场景。
  3. 多语言支持:支持多种主要语言的翻译,翻译质量与 Google 翻译相当。
  4. 私有部署:用户可以在自己的服务器上部署 MTranServer,确保数据的隐私性和安全性。
  5. 使用方便:提供 Docker 部署方式,使得安装和配置变得简单。
  6. 适配性:当前版本主要支持 AMD64 架构的 CPU,并正在适配其他架构。
  7. 性能测试:与其他翻译解决方案相比,MTranServer 在速度和内存占用方面表现良好。

应用场景

  • Web 应用:Web 应用提供机器翻译功能。
  • 移动应用: 为移动应用提供机器翻译功能。
  • 聊天机器人: 为聊天机器人提供机器翻译功能。
  • 内容本地化: 用于内容本地化,将内容翻译成不同的语言。
  • API 服务: 作为一个独立的 API 服务提供机器翻译功能。

当前限制

  1. 目前仅支持 amd64 架构 CPUDocker 部署。
  2. 需要 CPU 支持 AVX2 指令集, 其他 CPU 的兼容版本等作者测试完成发布。

总的来说,MTranServer 是一个适合需要快速、低资源消耗的翻译服务的解决方案,尤其对于希望在私有环境中保护数据的用户。

准备

建文件夹

docker 文件夹中,创建一个新文件夹 mtranserver,并在其中建一个子文件夹 models

下载模型

【注意】:需要先下载翻译模型文件再启动镜像,否则容器会因为找不到模型文件而自动终止;

  • 模型国内下载地址: https://ocn4e4onws23.feishu.cn/drive/folder/C3kffkLr8lxdtid5GYicAcFAnTh
  • 模型国外下载地址: https://github.com/xxnuo/MTranServer/releases/tag/models

根据需要下载模型文件

例如: enzh.zip:表示是英文翻译成中文的模型

zip 文件上传到 models 文件夹后解压

文件夹结构示意图

1
2
3
4
5
6
7
8
9
models/
├── enzh
│ ├── lex.50.50.enzh.s2t.bin
│ ├── model.enzh.intgemm.alphas.bin
│ └── vocab.enzh.spm
├── zhen
│ ├── lex.50.50.zhen.t2s.bin
│ ├── model.zhen.intgemm.alphas.bin
│ └── vocab.zhen.spm

如果没有下载模型,直接启动镜像,会遇到下面的错误

1
mtranserver    | Fatal error: No valid translation models found in directory: /app/./models

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 mtranserver ,选择第一个 xxnuo/mtranserver,版本选择 latest

本文写作时, latest 版本对应为 1.0.4

文件夹 装载路径 说明
docker/mtranserver/models /app/models 存放模型文件

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
8989 8989

环境

可变
CORE_API_TOKEN 为你自己设置的一个密码,使用英文大小写和数字。自己内网可以不设置

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 新建文件夹 mtranserver 和 子目录
mkdir -p /volume1/docker/mtranserver/models

# 进入 mtranserver 目录
cd /volume1/docker/mtranserver

# 将模型下载后放入 models 目录,找不到模型文件,容器会自动终止运行

# 运行容器
docker run -d \
--restart unless-stopped \
--name mtranserver \
-p 8989:8989 \
-v $(pwd)/models:/app/models \
-e CORE_API_TOKEN=123456 \
xxnuo/mtranserver:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
services:
mtranserver:
image: xxnuo/mtranserver:latest
container_name: mtranserver
restart: unless-stopped
ports:
- "8989:8989"
volumes:
- ./models:/app/models
environment:
- CORE_API_TOKEN=123456

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
11
12
# 新建文件夹 mtranserver 和 子目录
mkdir -p /volume1/docker/mtranserver/models

# 进入 mtranserver 目录
cd /volume1/docker/mtranserver

# 将 docker-compose.yml 放入当前目录

# 将模型下载后放入 models 目录,找不到模型文件,容器会自动终止运行

# 一键启动
docker-compose up -d

运行

不能像往常那样,在浏览器中输入 http://群晖IP:8989 进行访问,因为这不是一个 web 服务,而是个 api 接口服务,需要搭配翻译插件使用

你可以使用 沉浸式翻译 或者 简约翻译

设置

下面以 沉浸式翻译chrome 插件为例

设置页面,开发者模式 中启用 Beta 测试特性

翻译服务 的最后,能找到 自定义 API

进入设置

  • API URL: 指向我们前面安装的 mtranserver 容器的地址 http://192.168.0.197:8989/imme?token=123456。如果前面没用设置密码,使用 http://192.168.0.197:8989/imme
  • 每秒最大请求数: 老苏设了 5000
  • 每次请求最大段落数:老苏设了 10

回到基本设置,修改 翻译服务自定义API

或者在使用时动态切换

使用

打开一篇英文的文档

点右侧的 沉浸式翻译 的图标

翻译速度超快,同时显示双语

看下容器的资源占用情况

参考文档

xxnuo/MTranServer: Low-resource, fast, and privately self-host free version of Google Translate - 低占用速度快可私有部署的自由版 Google 翻译
地址:https://github.com/xxnuo/MTranServer

MTranServer
地址:https://mtranserver.2020818.xyz/