行业资讯

Python开发者福音:用asyncio异步调用translateLocally的完整API指南

发布时间:2026/8/22 12:58:50
Python开发者福音:用asyncio异步调用translateLocally的完整API指南 Python开发者福音用asyncio异步调用translateLocally的完整API指南【免费下载链接】translateLocallyFast and secure translation on your local machine, powered by marian and Bergamot.项目地址: https://gitcode.com/gh_mirrors/tr/translateLocallytranslateLocally 是一款基于 Marian 与 Bergamot 引擎的本地机器翻译工具所有翻译都在你自己的电脑上完成文本不会经过任何在线服务。本文是一份面向 Python 开发者的完整指南教你如何用asyncio 异步调用translateLocally 的 Native Messaging 接口实现并发翻译、模型管理与下载进度回调把本地翻译能力无缝嵌入你的 Python 程序。为什么选择 translateLocally 做本地机器翻译 很多开发者习惯调用在线翻译 API但面临三个痛点隐私风险文本上云、调用成本按量计费、网络依赖断网即瘫痪。translateLocally 用本地推理一次性解决了这些问题隐私安全文本从不出本机适合翻译敏感文档完全免费模型下载后翻译零成本、无速率限制⚡快速响应本地 CPU 推理配合asyncio并发调用吞吐更高接口友好内置 Native Messaging 服务天然适合 Python 异步客户端引擎层面它使用 Bergamot 对 Marian 神经机器翻译框架的优化分支8-bit 量化模型在普通 CPU 上即可流畅运行。工作原理asyncio 异步 API 的通信机制 translateLocally 以-p参数启动后会变成一个常驻的本地翻译服务器选项定义见 CLIParsing.h通过stdin/stdout与你的 Python 进程通信Python 端用asyncio.create_subprocess_exec启动子进程translateLocally -p每条消息格式为4 字节长度前缀 JSON 正文JSON 消息带自增id请求格式为{id: 1, command: Translate, data: {...}}服务端处理完成后按id回传结果客户端将对应的asyncio.Future置为完成完整消息协议在 NativeMsgIface.h 中有详细注释共支持 3 类命令Translate翻译、ListModels模型列表、DownloadModel下载模型。安装步骤获取 translateLocally 并下载翻译模型方式一直接下载预编译包推荐新手从官方 releases 页下载 Windows / Linux / macOS 版本即可。方式二源码构建git clone https://gitcode.com/gh_mirrors/tr/translateLocally cd translateLocally mkdir build cd build cmake .. make -j5构建依赖主要为 Qt ≥ 5 和 libarchive详细说明见 README.md。接下来下载一个翻译模型以下载英德 tiny 模型为例./translateLocally -a # 查看可下载的模型 ./translateLocally -d en-de-tiny # 下载模型 ./translateLocally -l # 查看本机已装模型tiny类型模型体积最小、速度最快适合入门测试base类型精度更高。快速上手3 行代码完成第一次异步翻译 项目自带官方异步客户端示例 native_client.py它已经把繁琐的序列化、消息路由封装成了TranslateLocally类核心用法只有 3 行import asyncio from native_client import get_build # 从项目 scripts/ 目录导入 async def main(): async with get_build() as tl: # 自动启动 translateLocally -p 子进程 print(await tl.translate(Hello world!, en, de)) asyncio.run(main())运行后输出Hallo Welt!—— 这就是你的第一条本地异步翻译。底层是怎么工作的官方示例中的Client.request()方法native_client.py做了一件很优雅的事发送请求时不阻塞等待而是先创建一个Future挂到消息 id 上然后继续执行后台reader()协程持续读取 stdout收到响应后按 id 唤醒对应Future。这让你可以在同一个事件循环里同时发起任意多笔请求而不用写任何回调地狱。三大核心 API 方法一览 方法作用关键参数tl.list_models(include_remoteFalse)列出翻译模型local字段标识是否已下载include_remote是否联网查询远程仓库tl.translate(text, src, trg, ...)翻译文本返回目标语言字符串src/trgBCP-47 语言码也可用model/pivot指定模型tl.download_model(model_id, update...)下载模型支持进度回调update接收{read: 已下载字节, size: 总字节}的回调函数几个实用细节无直达模型时自动 pivottranslate(你好, zh, fr)若没有中法模型服务端会自动寻找中转模型完成翻译HTML 保留传htmlTrue标签如i会被保留翻译适合富文本场景错误处理语言对不存在时抛出异常例如Could not find the necessary translation models用try/except捕获即可asyncio.gather 批量并发翻译实战 ⚡asyncio 调用 translateLocally 最大的价值在于并发。官方示例的测试用例就是 6 笔翻译一次并发发出translations await asyncio.gather( tl.translate(Hello world!, en, de), tl.translate(Lets translate another sentence., en, de), tl.translate(¿Por qué no funciona bien?, es, de), ) print(translations)对于批量任务比如翻译整个 CSV 数据集推荐按批次gather每批 10~50 条既控制内存又保持高吞吐BATCH 20 for i in range(0, len(sentences), BATCH): chunk sentences[i:i BATCH] results await asyncio.gather(*(tl.translate(s, en, de) for s in chunk))服务端内部使用 Bergamot 的AsyncService异步翻译服务见 MarianInterface.h天然支持多请求并行处理客户端并发越多、整体效率越高。模型管理异步下载与进度回调 download_model支持进度回调配合 native_client.py 里的download_with_progress可以做出漂亮的 tqdm 进度条def on_progress(data): print(f已下载 {data[read] / data[size] * 100:.1f}%) await tl.download_model(en-de-tiny, updateon_progress)还可以像官方test()用例那样用gather同时下载多个模型await asyncio.gather( tl.download_model(en-de-tiny), tl.download_model(en-es-tiny), )模型元数据语言对、版本、类型等都在ListModels的返回结果里字段说明参考 NativeMsgIface.h 中的ListModels注释。常见坑点清单与实用技巧 ✅10MB 消息上限单条输入消息不得超过 10MB与服务端kMaxInputLength一致大文档请切分段落上下文管理器很重要async with tl:退出时会自动关闭 stdin 并等待子进程优雅退出避免残留进程macOS 注意.app版本的部分命令行选项受沙盒限制但-p异步服务模式不受影响找不到二进制get_build()默认查找./translateLocally或build/translateLocally路径不同可自行修改 native_client.py 中的路径列表性能建议优先使用tiny学生模型速度可达 base 模型的数倍总结用 asyncio 异步调用 translateLocally你得到的不仅是一个本地机器翻译引擎更是一套隐私安全、免费无限量、可高并发的 Python 翻译 API以-p模式启动子进程通过 stdin/stdout 交换带 id 的 JSON 消息官方 native_client.py 封装了translate/list_models/download_model三大方法配合asyncio.gather即可轻松实现批量并发翻译如果你的项目需要翻译能力又不想依赖在线服务这套方案值得放进工具箱 ️【免费下载链接】translateLocallyFast and secure translation on your local machine, powered by marian and Bergamot.项目地址: https://gitcode.com/gh_mirrors/tr/translateLocally创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考