MTranServer
综合介绍
MTranServer是一个开源项目,它提供了一个可以自行搭建的翻译服务器。这个项目的主要特点是资源消耗非常低,并且翻译速度极快,在普通硬件上处理单次请求的平均响应时间仅为50毫秒。用户通过这个项目,可以拥有一个支持离线运行的、类似谷歌翻译的服务,但完全由自己控制,保障了数据的私密性。该服务启动后,加载中英互译模型大约只占用450MB内存,不需要显卡等昂贵硬件。MTranServer通过Docker进行封装,极大地简化了部署流程,用户只需几条命令就可以启动服务。它还支持与“沉浸式翻译”等流行的浏览器插件直接对接,为普通用户提供了便捷的使用方式,同时也为开发者提供了标准的API接口,方便集成到其他程序中。
功能列表
- 低资源消耗:加载单个语言模型后,内存占用约450MB,无需GPU。
- 快速响应:单个翻译请求的平均响应时间约为50毫T秒。
- 离线运行:除首次需要联网下载模型外,后续翻译过程完全在本地进行。
- 私有化部署:所有数据均在用户自己的服务器上处理,确保隐私安全。
- 易于部署:提供Docker镜像,支持通过
docker
或docker-compose
一键启动。 - 模型自动下载:首次请求翻译时,系统会自动在后台下载所需的语言模型。
- 兼容主流插件:可直接作为“沉浸式翻译”、“简约翻译”等浏览器插件的后端自定义API。
- 标准化API:提供Swagger UI文档和多种API接口,包括文本翻译、批量翻译和语言列表查询。
- 跨平台支持:提供支持
linux/amd64
和linux/arm64
等多种架构的Docker镜像。 - 高兼容性:其API设计兼容谷歌翻译接口,便于现有工具迁移。
使用帮助
MTranServer的设计目标是让用户可以轻松地在自己的设备上搭建一个私人翻译服务。整个过程最核心的工具是Docker,你需要先在你的服务器或个人电脑上安装它。
环境准备
部署MTranServer前,你的系统需要满足以下两个基本条件:
- 安装了
Docker
。 - 安装了
Docker Compose
(这是一个可选工具,但推荐使用,因为它能简化配置文件管理)。
部署方式一:使用 docker run
命令(快速体验)
这是最直接的部署方式,适合想快速启动并测试的用户。只需在你的终端执行以下命令:
docker run -d --name mtranserver -p 8989:8989 -e API_TOKEN=your_token xxnuo/mtranserver:latest
命令解释:
docker run -d
:让服务在后台运行。--name mtranserver
:为这个容器指定一个名字,方便后续管理。-p 8989:8989
:将服务器本机的8989
端口映射到容器内部的8989
端口。如果你想使用其他端口,可以修改前面的数字,例如-p 9999:8989
。-e API_TOKEN=your_token
:设置一个API访问密码。这是一个非常重要的安全措施,你需要将your_token
替换成一个你自己设置的、足够复杂的密码。如果是在公共云服务器上部署,强烈建议设置此密码,防止服务被他人滥用。xxnuo/mtranserver:latest
:指定要使用的Docker镜像。这个版本不包含任何内置模型,会在首次使用时自动下载。
部署方式二:使用 docker-compose
(推荐)
这种方式更适合长期运行和维护,因为它将配置信息保存在一个compose.yml
文件中,方便修改和管理。
- 创建并进入项目文件夹:
mkdir mtranserver cd mtranserver
- 创建配置文件:
touch compose.yml
- 编辑
compose.yml
文件:使用文本编辑器(如vim
或nano
)打开compose.yml
文件,并粘贴以下内容:services: mtranserver: image: xxnuo/mtranserver:latest container_name: mtranserver restart: unless-stopped ports: - "8989:8989" environment: - API_TOKEN=your_token
同样,记得将
your_token
替换成你的密码。 - 启动服务:
- 前台测试启动:
docker compose up
。此时你会看到服务的启动日志,如果一切正常,会显示服务正在http://0.0.0.0:8989
上监听。 - 后台正式启动:测试无误后,按
Ctrl+C
停止服务,然后执行docker compose up -d
,服务就会在后台持续运行。
- 前台测试启动:
模型下载
MTranServer的一大便捷之处在于模型的自动管理。
- 自动下载:当你通过API第一次请求某种语言(例如,从英语翻译到中文)的翻译时,服务器会自动从网络上下载对应的模型文件。你可以在Docker日志中观察到下载进度。这个过程只需要进行一次,后续所有相同语言对的翻译都将离线进行。
- 手动下载:如果你的服务器处于无法访问互联网的内网环境,你需要参照官方文档的指引,手动下载模型文件并放置到指定的路径。
如何与浏览器插件配合使用
将MTranServer与“沉浸式翻译”这类插件结合,是其最常见的应用场景。
- 打开沉浸式翻译插件的设置页面。
- 找到“翻译服务”选项,在列表中选择“自定义API”。
- 在自定义API的设置中,将 API地址 填写为:
http://你的服务器IP:8989/imme
。 - 如果你设置了
API_TOKEN
,则API地址需要包含密码,格式为:http://你的服务器IP:8989/imme?token=your_token
。请将your_token
替换成你自己的密码。 - 为了充分发挥服务器性能,建议将插件的“每秒最大请求数”调高(例如5000),并将“每次请求最大段落数”设置为10。
设置完成后,你在网页上划词翻译或翻译整个网页时,请求就会发送到你自己搭建的MTranServer上,体验飞快的翻译速度。
开发者API使用
如果你是开发者,可以访问服务提供的Swagger文档来查看所有可用的API。
- API文档地址:
http://你的服务器IP:8989/docs
- 认证方式:API请求通过HTTP头部的
Authorization
字段进行认证,值为你设置的API_TOKEN
。 - 常用接口示例:
- 普通翻译:向
http://你的服务器IP:8989/translate
发送POST请求。请求体:{"from": "en", "to": "zh", "text": "Hello, world!"}
响应:{"result": "你好,世界!"}
- 批量翻译:向
http://你的服务器IP:8989/translate/batch
发送POST请求。请求体:{"from": "en", "to": "zh", "texts": ["Hello, world!", "How are you?"]}
响应:{"results": ["你好,世界!", "你好吗?"]}
- 普通翻译:向
应用场景
- 个人隐私保护对于注重数据隐私的用户,可以使用MTranServer搭建完全私有的翻译环境。所有翻译请求都在本地或自己的服务器上完成,避免将敏感或私人内容发送给第三方商业翻译服务。
- 集成到第三方软件MTranServer可以作为后端服务,被集成到其他软件中。例如,已经有用户将其集成到Zotero文献管理器的插件
zotero-pdf-translate
中,实现了在阅读PDF文献时进行快速、私密的翻译。 - 内部网络或离线环境使用对于企业内部网络或无法访问互联网的设备,只需在首次部署时下载好所需语言模型,之后即可提供稳定可靠的离线翻译服务,满足内部文档和日常沟通的翻译需求。
- 降低API成本对于有大量翻译需求的应用开发者或小型企业,使用商业翻译API会产生持续的费用。通过自建MTranServer,可以一次性投入硬件成本(或利用现有服务器),实现几乎零成本的翻译服务。
QA
- MTranServer的翻译质量如何?它的翻译质量与谷歌翻译的常规水平相当,其模型技术源于Firefox内置的翻译项目。 但是,项目作者明确指出,其效果不如GPT-4这类大型语言模型,项目的核心优势在于速度、低资源消耗和私有化部署。
- 部署MTranServer需要什么样的服务器配置?它对硬件要求很低,不需要GPU。加载一个中英互译模型后,内存占用大约在450MB左右。因此,一台拥有1GB或更高内存的入门级云服务器或个人设备(如树莓派)即可流畅运行。
- 为什么第一次翻译请求那么慢?第一次请求某个语言对的翻译时,服务器需要从网上自动下载对应的模型文件。这个过程耗时取决于你的网络速度。下载完成后,模型会被加载到内存中,后续的所有翻译请求都会变得非常快。
- 我可以在哪些设备上部署它?只要设备支持Docker,就可以部署。官方提供了
amd64
(普通x86电脑和服务器)和arm64
(如树莓派、苹果M系列芯片Mac等)架构的镜像,覆盖了绝大多数现代设备。