(简体中文|english)
这是一个调用faster-whisper和libreTranslate的docker服务端程序
既可以配合VoiceLinkVR的其他客户端如VRCHAT-OSC客户端VRCLS一起使用,也可以独立作为服务端使用
集成了一个非常简单的用户控制界面,项目依赖于faster-whisper-server(现在叫speeches) 与libreTranslate
本程序只推荐使用docker compose 方式运行
请先下载本仓库
cd至项目目录中
如果机器的GPU支持cuda12.2以上请运行(国内的朋友):
docker-compose -f docker-compose-cuda-cn.yml up -d
如果机器的GPU支持cuda12.4.1以上且性能足够(双cuda)请运行(国内的朋友):
docker-compose -f docker-compose-cuda-all-cn.yml up -d
如果仅拥有cpu以上请运行(国内的朋友):
docker-compose -f docker-compose-cpu-cn.yml up -d
海外用户:
# GPU版本
docker-compose -f docker-compose-cuda.yml up -d
# CPU版本
docker-compose -f docker-compose-cpu.yml up -d
等待一切运行就绪后请访问:http://{服务器ip}:8980/ui/login
首次登陆时输入的用户名和密码将作为默认管理员的账户和密码,请妥善保管
如果忘记管理员账户和密码请自行修改数据库文件,在docker中该文件位于/usr/src/app/data/db/users.db
程序保留了原有两个包的后端,分别在8000端口与5000端口
- 管理界面入口:/ui/login
- 管理界面主页:/ui/manage_users
- 管理界面退出 /ui/logout
- 管理界面删除用户 /ui/deleteUser
除管理员注册接口在启动后无用户时不需要token外,都需要增加token
该接口在无用户信息时会自动将第一个用户作为管理员,其他时间将验证token
方法:POST url: /manageapi/registerAdmin 传入参数:
{
"username":"",
"password":""
}响应格式:
{"message": "AdminUser created successfully"}方法:POST url:/manageapi/changePassword 传入参数:
{
"username":"",
"password":""
}响应格式:
{"message": "user:{username}, Password changed successfully"}方法:POST url:/manageapi/register 传入参数:
{
"username":"",
"password":""
}响应格式:
{"message": "User created successfully"}方法:POST url:/manageapi/addUser 传入参数:
{
"username": "",
"password": "",
"is_admin": false,
"is_active": true,
"limit_rule": "10000/day;1000/hour",
"expiration_date": "2025-12-31T23:59:59"
}字段说明:
username: 用户名(必填,3-50字符)password: 密码(必填,最少6字符)is_admin: 是否为管理员(可选,默认false)is_active: 是否激活(可选,默认true)limit_rule: 限速规则(可选)expiration_date: 过期时间(可选,ISO格式)
响应格式:
{"message": "User created successfully", "user": {"username": ""}}方法:POST url:/manageapi/updateUser 传入参数:
{
"username": "",
"password": "",
"is_admin": false,
"is_active": true,
"limit_rule": "10000/day;1000/hour",
"expiration_date": "2025-12-31T23:59:59"
}字段说明:
username: 用户名(必填,用于定位要更新的用户)password: 新密码(可选,不传则不修改)is_admin: 是否为管理员(可选,不传则不修改)is_active: 是否激活(可选,不传则不修改)limit_rule: 限速规则(可选,不传则不修改)expiration_date: 过期时间(可选,不传则不修改)
响应格式:
{"message": "user:{username}, updated successfully"}方法:POST url:/manageapi/deleteUser 传入参数:
{
"username":""
}响应格式:
{"message": "User deleted successfully"}方法:POST url:/api/login
{
"username":"",
"password":""
}响应格式:
//成功
{"message": "Login successful", "access_token": "", "token_type": "bearer"}
//失败
{"detail": "Invalid credentials"}方法:POST url:/api/whisper/transcriptions 传入参数:
//form-data格式
'file':{文件二进制}
响应格式:
{"text": ""}方法:POST url:/api/libreTranslate 传入参数:
{
"source":"",
"target":"",
"text":""
}响应格式:
{"text": ""}方法:POST url:/api/func/translateToEnglish 传入参数:
//form-data格式
'file':{文件二进制}
响应格式:
{"text": "","translatedText":""}方法:POST url:/api/func/translateToOtherLanguage 传入参数:
//form-data格式
files["file"]:{文件二进制}
data={"targetLanguage":""}
//支持的目标语言格式请查看自己部署libreTranslate的/language 接口
响应格式:
{"text": "","translatedText":""}| 变量名 | 说明 | 默认值 |
|---|---|---|
| WHISPER_HOST | Whisper服务地址 | localhost |
| WHISPER_PORT | Whisper服务端口 | 8000 |
| LIBRETRANSLATE_HOST | LibreTranslate服务地址 | localhost |
| LIBRETRANSLATE_PORT | LibreTranslate服务端口 | 5000 |
| SENSEVOICE_HOST | SenseVoice服务地址 | localhost |
| SENSEVOICE_PORT | SenseVoice服务端口 | 8800 |
| LIMIT_ENABLE | 是否启用限速 | False |
| LIMITER_REDIS_URL | Redis连接URL | - |
| TRANSLATOR_SERVICES_LIST | 翻译服务列表 | bing,modernMt,cloudTranslation |
| UPDATE_PUBLIC_BASE_URL | 更新资源对外访问基础URL(可选) | - |
| UPDATE_STATIC_ROOT | 热更新静态资源根目录 | src/data/update/files |
| UPDATE_MANIFEST_PATH | 应用更新manifest路径 | src/data/update/update_manifest.json |
| MODEL_MANIFEST_PATH | 模型目录manifest路径 | src/data/update/models_manifest.json |
| TRANSLATION_PROFILE_MANIFEST_PATH | 翻译能力profile manifest路径 | src/data/update/translation_profile_manifest.json |
| TRANSLATOR_RUNTIME_MANIFEST_PATH | 翻译运行时manifest路径 | src/data/update/translator_runtime_manifest.json |
| TRANSLATION_CAPABILITIES_CACHE_SECONDS | 翻译能力缓存秒数 | 1800 |
| TRANSLATION_CAPABILITY_TIMEOUT | 单引擎语言探测超时(秒) | 4.0 |
| ENABLE_WEB_TRANSLATORS | 启用在线翻译服务 | True |
| JWT_SECRET_KEY | JWT密钥(生产环境请修改) | voicelinkvr-secret-key |
| SQL_PATH | 数据库连接字符串 | sqlite:///data/db/users.db |