github地址
https://github.com/LibreTranslate/LibreTranslate
docker images地址
https://hub.docker.com/r/libretranslate/libretranslate
官网体验地址
https://libretranslate.com/
免费开源机器翻译 API。自托管、离线功能且易于设置
不依赖于 Google 或 Azure 等专有提供商来执行翻译。相反,它的翻译引擎由开源Argos Translate库提供支持。
截止到目前为止
云翻译准确度相对高的有
-
谷歌翻译
-
DeepL翻译
但是它们断网不可用,且DeepL有免费闲置,谷歌受网络影响不便使用
需要一个可以离线托管,且能相对准确翻译的开源免费应用来代替谷歌翻译等(避免受到网络,价格,广告等其他因素影响)
新建docker-compose.yml文件
version: '3.5'
services:
libretranslate:
image: libretranslate/libretranslate
container_name: libretranslate
ports:
- 3051:5000
command: –load-only en,zh
# network_mode: “host”
开放端口
sudo ufw allow 3051
拉取镜像并启动服务
docker-compose up
遇到报错
libretranslate | (URLError(ConnectionRefusedError(111, 'Connection refused')),)
libretranslate | (URLError(ConnectionRefusedError(111, 'Connection refused')),)
libretranslate | (URLError(ConnectionRefusedError(111, 'Connection refused')),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | (RecursionError("encoding with 'idna' codec failed (RecursionError: maximum recursion depth exceeded in comparison)"),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | (RecursionError('maximum recursion depth exceeded'),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | Traceback (most recent call last):
libretranslate | File "/app/./venv/bin/libretranslate", line 8, in <module>
libretranslate | Updating language models
libretranslate | Cannot update models (normal if you're offline): maximum recursion depth exceeded while calling a Python object
libretranslate | sys.exit(main())
libretranslate | File "/app/venv/lib/python3.10/site-packages/libretranslate/main.py", line 192, in main
libretranslate | app = create_app(args)
libretranslate | File "/app/venv/lib/python3.10/site-packages/libretranslate/app.py", line 160, in create_app
libretranslate | language_target_fallback = languages[1] if len(languages) >= 2 else languages[0]
libretranslate | IndexError: list index out of range
libretranslate exited with code 1
解决方案(无法解决)
尝试修改网路模式network_mode: “host”,经过测试依旧不行
尝试切换网络线路,也依旧还不行
可能的错误原因
-
URLError(OSError(99, ‘Cannot assign requested address’)):这个错误通常是由于尝试绑定到无法分配的地址¹。你可以尝试将服务器绑定的地址更改为本机地址¹。如果你在云服务器(如阿里云或腾讯云)上遇到这个问题,你可以尝试将服务端的 IP 填写为私网 IP,客户端填写为公网 IP¹。
-
RecursionError(‘maximum recursion depth exceeded while calling a Python object’):这个错误是因为 Python 的递归深度超过了限制。你可能需要检查你的代码,看看是否有无限递归或者递归深度过深的情况。
-
IndexError: list index out of range:这个错误是因为你试图访问一个超出范围的索引。在这种情况下,你可能需要检查 `languages` 列表的长度,确保你访问的索引在列表长度范围内。
简而言之就是libretranslate依赖的模型无法拉取,导致代码检测模型时发现数量不对,导致无限循环报错
使用conda创建环境
conda create -n ibretranslate python=3.10
输入y,回车
切换到新的环境
conda activate ibretranslate
切换后,红框出会变为当前的环境名称
官方安装文档
https://github.com/LibreTranslate/LibreTranslate#arguments
运行安装命令
pip install libretranslate
等待安装完成
启动命令
libretranslate --load-only en,zh
同样报错
(URLError(ConnectionRefusedError(111, 'Connection refused')),)
一些可能的问题
-
检查服务器是否启动:确保你试图连接的服务器已经启动并正在监听预期的端口¹²。
-
检查地址和端口:确保你正在使用正确的地址和端口号¹²。
-
检查防火墙设置:防火墙可能会阻止某些连接,尤其是如果你试图从外部网络连接到内部服务¹²。
-
使用内网穿透服务:如果你在尝试从外部网络访问本地网络中的服务,你可能需要使用内网穿透服务⁴。
-
检查服务器资源:如果服务器资源不足(例如,内存不足),也可能导致连接被拒绝²
猜测是内存不足的问题
零刻小主机16GB内存,无GPU,Ubuntu Server20.04运行失败
换win系统运行,64GB内存,12GB显存 RTX显卡
拉取项目文件
git clone https://github.com/LibreTranslate/LibreTranslate.git
拉取完成
进入到文件夹
双击运行run.bat
获取命令端执行run.bat
会跳转到docker安装界面
下载并双击安装
安装docker desktop
点击ok
继续安装
重启电脑
找不到镜像,无法运行
Unable to find image 'libretranslate/libretranslate:latest' locally
[docker-credential-desktop.system][W] Windows version might not be up-to-date: The system cannot find the file specified.
可能原因
这个问题可能是由于Docker在尝试从本地获取名为’libretranslate/libretranslate:latest’的镜像,但是没有找到。这可能是由于以下几个原因:
-
镜像不存在:你可能没有在本地创建或拉取过这个镜像1。
-
标签问题:如果你在创建镜像时使用了特定的标签,但在运行时没有指定,Docker会默认寻找带有’latest’标签的镜像1。
-
Docker登录问题:如果这个镜像是存储在Docker Hub上的,你可能需要先登录你的Docker Hub账户才能拉取这个镜像2。
你可以尝试以下步骤来解决这个问题:
-
确保你已经正确地创建或拉取了这个镜像。
-
在运行命令时使用正确的镜像名和标签。
-
如果这个镜像是存储在Docker Hub上的,确保你已经登录了你的Docker Hub账户
先登录docker账户
登录后,可以查找并拉取镜像了
点击pull拉取
提示拉取成功
再次点击run.bat,开始下载模型
看描述找到60个模型
下载到一半,关掉再次打开,发现没有下载模型了
直接启动webui
访问ip:端口
也就是http://localhost:5000/
可以看到界面已经正常运行访问了
简单的翻译
这是一个测试文字,用来测试简体中文转为英文的翻译测试
翻译结果
This is a test language used to test the Chinese translation test of the simplified Chinese into English
使用谷歌翻译反向翻译,意思差不多
至此LibreTranslate成功在win上的docker运行,这样在离线的时候也同样可用
END.
觉得本文还行,不妨顺手点赞和收藏,下期见。
推荐阅读
《HomeLab迷你小主机(x86):Docker部署开源AI相册应用PhotoPrism(支持树莓派部署)》
《HomeLab迷你小主机(x86):Docker部署开源跨平台ChatGPT应用Next-Web》
☕ 朋友,都看到这了,确定不关注一下么? 👇