{"id":39893058,"url":"https://github.com/febilly/yakutan","last_synced_at":"2026-05-16T17:05:23.198Z","repository":{"id":321088575,"uuid":"1083679874","full_name":"febilly/Yakutan","owner":"febilly","description":"更适合中国宝宝体质的 VRChat 语音翻译器 - A VRChat Interpretor/Translator for native Chinese speakers","archived":false,"fork":false,"pushed_at":"2026-04-01T22:09:59.000Z","size":963,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T02:23:51.008Z","etag":null,"topics":["interpretation","translation","vrchat"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/febilly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/supported-languages.mdx","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-26T14:12:18.000Z","updated_at":"2026-04-01T22:05:48.000Z","dependencies_parsed_at":"2025-10-30T12:00:14.033Z","dependency_job_id":null,"html_url":"https://github.com/febilly/Yakutan","commit_stats":null,"previous_names":["febilly/vrchat-interpretor-ci","febilly/yakutan"],"tags_count":88,"template":false,"template_full_name":null,"purl":"pkg:github/febilly/Yakutan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/febilly%2FYakutan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/febilly%2FYakutan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/febilly%2FYakutan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/febilly%2FYakutan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/febilly","download_url":"https://codeload.github.com/febilly/Yakutan/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/febilly%2FYakutan/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31479006,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T14:34:32.243Z","status":"ssl_error","status_checked_at":"2026-04-06T14:34:31.723Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["interpretation","translation","vrchat"],"created_at":"2026-01-18T15:00:43.268Z","updated_at":"2026-04-30T10:07:48.715Z","avatar_url":"https://github.com/febilly.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Yakutan\n\n更适合中国宝宝体质的 VRChat 语音翻译器（翻译你自己的声音）\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"images/screenshot.png\" alt=\"A Screenshot of the WebUI of Yakutan\" style=\"max-width: 100%; width: 512px; height: auto;\"\u003e\n\u003c/div\u003e\n\n\n- 可用大模型进行**流式翻译**，实现**边说边翻译**的效果，减少对方等待时间。\n    - 也有 DeepL、qwen-mt、谷歌翻译等选项\n- 使用阿里的 [Qwen3实时语音识别（默认）](https://bailian.console.aliyun.com/?tab=model#/model-market/detail/qwen3-asr-flash) 或 [Fun-ASR](https://bailian.console.aliyun.com/?tab=model#/model-market/detail/fun-asr-realtime) 进行语音转文本，也有部分其他ASR可选\n    - 本地语音识别正在开发中，可下载最新Pre-release版本尝试，但可能有bug\n- 将结果通过 OSC 发送至游戏\n- 有一些 [独特的功能](#特点)\n- ~~其实就是把一堆 API 粘在了一起~~\n\n## 快速开始\n\n1. 在 [https://github.com/febilly/Yakutan/releases/latest](https://github.com/febilly/Yakutan/releases/latest) 中下载最新的稳定版 exe\n2. 将 exe 放在一个空文件夹中并运行，WebUI 应该会自动打开\n3. 根据 WebUI 中 `API Keys 配置` 面板的说明获取并填入 API Keys\n4. 点击 `启动服务` 按钮\n5. 有问题的话请参见 [常见问题](#常见问题) 部分\n\n## 不是已经有人做过了吗，为什么要再做一个翻译器？？？\n\n目前，语音翻译最大的短板在语音识别上。而现有的给 VRChat 做的翻译器识别中文及带中文口音的英语的效果并不好。\n_可以说我就是为了这点醋包的这顿饺子_\n\n### 语音识别方面\n- 准确性方面：\n    - 断句断不准是最致命的问题，这个解决不了的话其他都白干\n    - Whisper识别汉语效果实在是一坨\n    - Edge的WebSpeech面对中国人口音识别效果不好\n    - VRChat里经常出现一些一般的语音识别认不出来的词，需要用热词功能提升识别效果\n- 一些细节的优化问题：\n    - VAD断句需要一两秒的时间来等待说话结束\n    - 闭麦时可能会漏掉用户说的最后一个字\n\n### 翻译方面\n- 翻译需要上下文\n    - 没有上下文的话，比如看这句话被翻译成了啥：\n        - 现在总行 _(xíng)_ 了吧？\n        - Is the head office now?\n- 现有的翻译一般都需要等到一整句话说完后才进行翻译，别人得等半天，等你说完，再等它翻译完，才能看到你到底说了个啥\n\n## 特点\n\n### 语音识别方面\n\n- 准确性：\n    - 使用阿里的 Qwen3 或者 Fun-ASR：我试了好几个 STT 的 API，感觉阿里这个是挺好的，以及他有给免费额度\n        - 但我对比的大部分都是国外的 API，感觉不是很公平...... 有更好的 API 可以跟我说一声！\n    - 增加了热词词库\n        - 自带一部分公共的词库\n            - 部分比较， _咳咳，不太好_ 的词被我删掉了，请自行添加\n        - 可自己添加私人的词库\n- 断句：\n    - 游戏内语音模式请使用 toggle 模式。说完一句话后，按下静音键，即视为一句话说完，马上全部进行转录。这样能提高响应速度。\n        - 停止录制时会额外继续录制一小段音频（默认0.2s），防止漏掉最后一个字\n    - VAD：仍然有 VAD 作为补充断句方法\n\n### 翻译方面\n\n- 实现了翻译的上下文，默认附带一条简短的场景说明，和最近的6条消息\n- 附带备用语言选项，如果识别到的源语言和主目标语言相同，则翻译至备用语言\n    - 可以实现两种语言之间的互译\n- 默认使用Deepl翻译\n    - 可以指定翻译的正式程度（比如对于日语来说）\n    - 原生支持上下文\n    - 可以自定义词库（本项目还没实现）\n- 可以切换为使用大模型进行流式翻译\n    - 内置若干 LLM 预设，也支持自定义 LLM 配置\n- 支持第二输出语言，可同时输出两种译文\n- 可以切换为开箱即用的谷歌翻译（但有网络连通性问题，及速率限制）\n\n\n## 局限性\n- ~~你得会配Python环境~~ **已提供打包好的可执行文件**\n- ~~目前没（懒得）写 GUI，所有配置需要在 `config.py` 文件中修改~~ **现在有Web UI了**\n- ~~使用脚本启动时系统的默认麦克风~~ **现在可以在Web UI中选择麦克风了**\n- ~~目前暂不支持和其他 OSC 程序同时运行~~ **已改用 OSCQuery，不再冲突**\n- 使用完毕后请**一定记得停止服务**，否则可能会持续使用转录 API，产生额外费用\n- 需要用商业服务的API Key，有一定免费额度，但免费额度用完后需要付钱\n    - 阿里云的免费额度是一次性的，但是 [大学生可以拿到每年的免费额度](https://university.aliyun.com/buycenter/)\n    - DeepL的免费额度每月重置，但是怎么拿到Key需要自己想办法\n        - 实在懒得折腾可以把翻译器换成谷歌的\n- 语言识别默认使用一个简单的中日韩英检测器\n    - 已添加自动切换逻辑\n\n## 命令行运行（高级）\n\n一般用户不需要此步骤，直接使用打包好的可执行文件即可。\n\n\u003cdetails\u003e\n\n### 1. 克隆项目\n\n```bash\ngit clone https://github.com/febilly/Yakutan\ncd Yakutan\n```\n\n### 2. 创建虚拟环境（推荐，非必须）\n\n```bash\npython -m venv .  # 推荐使用uv，速度爆快\n.venv\\Scripts\\activate  # Windows\nsource .venv/bin/activate  # macOS/Linux\n```\n\n### 3. 安装依赖\n\n```bash\npip install -r requirements.txt  # 推荐使用uv，速度爆快\n```\n\n### 4. 运行程序\n\n```bash\npython run_ui.py\n```\n\n\u003c/details\u003e\n\n## API Key 获取\n\n- **阿里云百炼（必需）**：https://bailian.console.aliyun.com/?tab=model#/model-market/detail/fun-asr-realtime\n  - 注册后可获得免费额度\n  - 大学生可申请每年的免费额度\n  \n- **DeepL（可选）**：https://www.deepl.com/en/pro-api\n  - 每月有 500,000 字符的免费额度\n  - 需要使用特殊方式获取 API Key\n  \n- **OpenRouter（可选）**：https://openrouter.ai/\n  - 提供多种 LLM 模型\n  - 部分模型有免费额度（如 Gemini）\n\n## 热词配置\n\n热词功能可以显著提高特定词汇的识别准确度，特别适合专业术语、人名、地名等。\n以及某些 VRChat 的 _特殊_ 词汇\n\n\u003cdetails\u003e\n\n### 热词文件结构\n\n```\n可执行文件或脚本所在文件夹/\n└── hot_words_private/  # 私人热词目录（不会被提交到 Git）\n    ├── zh-cn.txt      # 中文私人热词\n    ├── en.txt         # 英文私人热词\n    └── ...\n```\n\n### 热词文件格式\n\n每个热词文件是纯文本格式，每行一个词\n\n**注意事项：**\n- 每行一个热词，不要有多余空格\n- 空行会被忽略\n- 总热词数量不超过 500 个（阿里云限制）\n\n### 如何设置私人热词\n\n- **编辑私人热词文件**\n\n   打开 `hot_words_private/` 目录下对应语言的文件（如不存在则请手动创建）：\n   例如：\n\n   ```\n   hot_words_private/zh-cn.txt\n   hot_words_private/en.txt\n   ```\n\n- **启用的语言配置**\n\n   在 `hot_words_manager.py` 中配置要加载的语言：\n   \n   ```python\n   # 要加载的语言列表\n   ENABLED_LANGUAGES = ['zh-cn', 'en']  \n   # 可添加更多：['zh-cn', 'en', 'ja', 'ko']\n   ```\n\n\u003c/details\u003e\n\n## VRChat OSC 配置\n\n### 启用 OSC\n\n1. 启动 VRChat\n2. 打开快捷菜单（圆盘菜单）\n3. 进入 Options → OSC\n4. 点击 \"Enable\" 启用 OSC\n\n## 常见问题\n\n\u003cdetails\u003e\n\n### 1. 没有任何转录\n\n- 检查 WebUI 中选择的麦克风是否为你正在使用的麦克风\n- 检查麦克风是否有声音输入\n- 检查 `游戏静音时暂停转录` 配置：\n  - 如果打开，需要在 VRChat 中**第一次由闭麦状态切换到开麦状态后**才能开始识别\n  - 如果关闭，程序启动后会立即开始识别\n\n### 2. VRChat 聊天框没有显示\n\n- 确认 VRChat OSC 已启用\n- 打开游戏小菜单看有没有因发送消息过快被禁言（等待30秒后自动解除）\n- 如果你在用加速器，请不要使用“进程模式”\n- 检查是否有除 VRChat 之外的其他程序在占用 UDP 9000端口\n\n### 3. 识别不到游戏内的麦克风的开启与关闭\n\n- 确认 VRChat OSC 已启用\n- 一般重启电脑可以解决，如果暂时懒得重启可以先暂时关闭 `游戏静音时暂停转录` 配置作为临时解决方案\n\n### 4. 翻译延迟较高\n\n- 如果使用 LLM 翻译，建议换用响应速度更快的模型，以及检查 LLM 是否使用了思考模式（通过自定义 extra_body 来关闭，具体方式请查阅 LLM 提供商文档）\n- 可以使用 DeepL 或 Google API 以获得更快的响应速度\n\n### 5. 语音识别报错\n\n- 如你在使用阿里的语音识别服务：\n    - （国内版）检查阿里账号是否已实名\n    - （国际版）检查阿里账号是否已绑定手机号与信用卡\n\n### 6. 重启识别时程序自动退出\n\n- 目前是有这么个 bug 偶发出现，咋办？先凑合用着呗，我之后再去修\n\n\u003c/details\u003e\n\n## 附录\n\n- 要翻译别人的声音的话建议用 [soniox](https://github.com/febilly/realtime-subtitle/releases)，这个效果很好，不过 Soniox API 是付费的（我是一分钱没赚啊喂）\n    - 也可以试试免费的 [LiveCaptions Translator](https://github.com/SakiRinn/LiveCaptions-Translator)\n    - 以及被我狠狠地嫖了代码的 [LiveTranslate](https://github.com/TheDeathDragon/LiveTranslate)\n- 我还没太试过国内其他家的识别服务效果怎样，如果有更好的（并且有不少免费额度的）请告诉我谢谢\n\n## 致谢\n\n- 本项目部分基于阿里给的 Fun-ASR 示例代码\n- 快速的 Google Translate API 来自 https://github.com/SakiRinn/LiveCaptions-Translator\n- 提示词少量参考了 https://github.com/kapitalismho/PuriPuly-heart\n- 还未进入稳定版的本地语音识别：\n    - 本地ASR代码来自 https://github.com/TheDeathDragon/LiveTranslate\n    - ONNX版Sensevoice来自 https://github.com/lovemefan/SenseVoice-python\n    - 用到的其他东西：\n        - https://github.com/snakers4/silero-vad\n        - https://github.com/FunAudioLLM/SenseVoice\n        - https://github.com/ggml-org/llama.cpp\n        - https://github.com/microsoft/onnxruntime\n        - https://github.com/HaujetZhao/Qwen3-ASR-GGUF\n\n## 许可证\n\n本项目的代码，除下述例外以外，遵循 MIT 许可证，详见 [LICENSE.md](LICENSE.md) 文件\n- /docs 文件夹下的内容来自各 API 提供商的文档，是啥授权我也不知道","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffebilly%2Fyakutan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffebilly%2Fyakutan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffebilly%2Fyakutan/lists"}