rr-translator 一个免费翻译服务

koishi-plugin-rr-translator

downloads npm
一个开箱即用的翻译插件。使用 nllb 进行翻译
无需配置,消息将发送至开发者的服务器使用机器学习模型进行翻译,支持高达200多种语言互译


用户使用:

  1. 安装此插件后将会激活 translate 命令,可以直接在聊天框进行翻译。
  1. 安装此插件后将会激活 translator 服务,可以在适配的插件中启用翻译。
    image
    已适配的插件:
  • rryth
  • novelai

开发适配:
针对绘图关键词进行了优化,可以使用 , 进行分词翻译。


@article{nllb2022, title={No Language Left Behind: Scaling Human-Centered Machine Translation}, author={{NLLB Team} and Costa-jussà, Marta R. and Cross, James and Çelebi, Onur and Elbayad, Maha and Heafield, Kenneth and Heffernan, Kevin and Kalbassi, Elahe and Lam, Janice and Licht, Daniel and Maillard, Jean and Sun, Anna and Wang, Skyler and Wenzek, Guillaume and Youngblood, Al and Akula, Bapi and Barrault, Loic and Mejia-Gonzalez, Gabriel and Hansanti, Prangthip and Hoffman, John and Jarrett, Semarley and Sadagopan, Kaushik Ram and Rowe, Dirk and Spruit, Shannon and Tran, Chau and Andrews, Pierre and Ayan, Necip Fazil and Bhosale, Shruti and Edunov, Sergey and Fan, Angela and Gao, Cynthia and Goswami, Vedanuj and Guzmán, Francisco and Koehn, Philipp and Mourachko, Alexandre and Ropers, Christophe and Saleem, Safiyyah and Schwenk, Holger and Wang, Jeff}, year={2022} }

1 个赞

临时停服通知

由于近期 rryth 服务高负载,现需要腾出算力优先供新后端使用,元宵后会新增计算节点重新恢复服务。
带来不便恕不另行通知,祝大家新年快乐。

2 个赞

欢迎来使用 hlai-painter

现 Anything 模型拥有 2*V100 1*A100 充足的算力节点

3 个赞

大佬你好,不知道 translate是否恢复,现在无法使用已经2周多了,上个月偶尔能用.

我用来给novelAI 翻译tgr。我也申请了百度翻译API,但需要我提供服务器IP,我还是用大佬的吧

希望大佬能能看到

2 个赞

收悉,我一会开一台机器以 CPU 模式跑。

2 个赞

时隔超级久,人人翻译重新上线了,原因是在用户交流群打赌两天不上线就发 50 红包
(果然 ddl 是第一生产力
F~421OWOQ1%MZS_5}GEI_9
《23:59》

4 个赞

新版本更换了后端,原有的 nllb 资源占用巨大且翻译效果不佳,已被遗弃,第二版使用 opus-mt-zh-en 作为翻译后端,效果大幅提升,但仅支持中英互译。

感兴趣的话可以自行部署

后端
import torch
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import uvicorn

# Define request model
class TranslateRequest(BaseModel):
    text: str
    src: str
    tgt: str

# Check for available device
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# Initialize FastAPI app
app = FastAPI()

# Add CORS middleware
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# Define model and tokenizer dictionary
model_dict = {
    "zh2en": "Helsinki-NLP/opus-mt-zh-en",
    "en2zh": "Helsinki-NLP/opus-mt-en-zh",
}

# Load models and tokenizers
models = {}
for key, value in model_dict.items():
    tokenizer = AutoTokenizer.from_pretrained(value)
    model = AutoModelForSeq2SeqLM.from_pretrained(value)
    model.to(device)
    models[key] = (model, tokenizer)

# Translation function
def translate(model, tokenizer, text):
    inputs = tokenizer(text, return_tensors="pt").input_ids.to(device)
    outputs = model.generate(inputs)
    translated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return translated_text

# FastAPI route
@app.post("/translate")
async def translate_route(translate_request: TranslateRequest):
    text = translate_request.text
    src = translate_request.src
    tgt = translate_request.tgt

    if src == "zh" or tgt == "en":
        model_key = "zh2en"
    elif src == "en" or tgt == "zh":
        model_key = "en2zh"
    else:
        raise HTTPException(status_code=400, detail="Unsupported language pair")

    model, tokenizer = models[model_key]
    translated_text = translate(model, tokenizer, text)
    return {"text": translated_text}


# Run server
if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=4200)

3 个赞

可以发一个github吗,我想研究一下翻译插件是怎么样提供翻译服务的

2 个赞

明天晚上9点后叫我

3 个赞

rr translator 和 rr translator2 是有区别的吗

2 个赞

翻译1用的nllb,支持超多语言互相翻译
翻译2用的中英模型

3 个赞