MC语音是面向 Minecraft Fabric 的文字转语音模组,当前提供 26.x、1.21.11、1.21.8、1.21.1 四个 jar。输入文字后,本地生成中文语音,并通过 Simple Voice Chat 或 Plasmo Voice 发给服务器里其他安装了对应语音模组的玩家。
本模组基于 FlooferLand 的 Text to Voice 修改,原项目为 FlooferLand/ttvoice-mod,版权归 FlooferLand 所有。本模组遵循 GPLv3 许可证。
- Windows x64 打包,macOS/Linux 会显示不支持提示
- 中文配置界面、说话界面、聊天栏指令
- 自动朗读开关:聊天框发送的文字可直接说出来,可用 B 键或
/mcvoice auto快速切换 - 说话界面历史记录可点击再次朗读,默认停在最新一条,右侧带滚动条
- 滞留模式(默认关闭):退出说话界面不丢草稿,发送后界面照常关闭
- 配置、高级设置、外部 TTS 服务、模型下载等可滚动界面右侧带滚动条
- 音量调节:支持 0%-200%
- 传播距离:支持 1-128 格,实际生效受 SVC/PV 服务端和群组规则限制
- 通过 Simple Voice Chat 播放音频
- 支持 Plasmo Voice 服务端桥接,PV 玩家也能听到 TTS
- 支持 Piper 离线中文模型,可一键下载或手动放入多个声线
- 支持 Sherpa-onnx 离线中文模型,提供更多本地声线
- 支持 Windows SAPI 系统声线,不需要额外下载模型
- 支持外部 TTS 命令,可接入 edge-tts、自建脚本或任意能输出 WAV 的工具
- 支持外部 TTS 服务,可选用内置免费 TTS、URL 模板或 OpenAI 兼容接口
- 默认按键:
~打开说话界面,X打开配置菜单,B切换自动朗读 - Fabric API 和 Mod Menu 必装,Simple Voice Chat 和 Plasmo Voice 均为可选
- Simple Voice Chat 现在是可选前置,不装 SVC/PV 时仍可本地播放语音
- 配置页显示 SVC 和 PV 连接状态,未连接时会提示模组仅本地生效
/mcvoice say <文本>
/mcvoice stop
/mcvoice test
/mcvoice auto
/mcvoice auto on
/mcvoice auto off
/mcvoice volume <0-200>
/mcvoice distance <1-128>
/mcvoice external on
/mcvoice external off
/mcvoice external set <命令>
/mcvoice voice list
/mcvoice voice set <声线ID>
/mcvoice config
要让其他 PV 玩家听到 MCvoice 的 TTS,服务器必须同时安装 MCvoice、Plasmo Voice,并在需要群组时安装 pv-addon-groups。客户端只负责本地生成 48kHz/16bit 单声道 PCM,并把音频通过自定义数据包发给服务器;服务器再通过 PV API 广播给其他 PV 玩家。
- 如果玩家在 PV 群组中,使用群组广播源,群组规则优先,忽略距离滑块。
- 如果没有群组,使用 PV 近聊源,并沿用 MCvoice 的距离滑块(1-128 格)。
- Simple Voice Chat 接入保留,SVC 和 PV 可以同时存在。
模组不再内置模型,避免 jar 体积过大。
- 在配置界面点击“下载中文声线”,从国内镜像下载花颜或花颜低配。
- 也可以打开
mcvoice/models,手动放入声线的.onnx和.onnx.json两个文件。 - 重进游戏后,配置界面或
/mcvoice voice list会显示这些声线。
已知可用声线示例:
zh_CN-huayan-medium
zh_CN-huayan-x_low
在“下载中文声线”页面右侧下载 Sherpa 模型。模组会自动解压到 mcvoice/models/sherpa,无需手动处理压缩包。
也可手动放入模型目录,格式要求为:
mcvoice/models/sherpa/<模型名>/
*.onnx
tokens.txt
lexicon.txt(可选)
当前右侧一键下载包含:MeloTTS 中英女声、寒冰、伊拉、繁辰 WNJ、小爱风格、超文、小雅。超文和小雅来自 phoneme_type=pinyin 的 Piper 模型,但以 Sherpa-onnx 打包格式提供,不需要单独安装 g2pW 运行时。
在 Windows 配置界面切换到“系统声线 · 声线名”即可使用系统已安装的语音。SAPI 不依赖模型文件,但需要系统里已经安装对应的中文语音包。
在配置界面的“高级设置”里勾选“使用外部TTS命令”,并填写命令。命令中支持 {text} 和 {file}:
edge-tts --voice zh-CN-XiaoxiaoNeural --text "{text}" --write-media "{file}"
也可以使用环境变量 MCVOICE_TEXT 和 MCVOICE_OUT,然后命令只负责读取文本并生成 WAV。
在“高级设置”里打开“外部TTS服务设置”,有三种请求方式:
- 免费 TTS(内置):默认使用微软 Edge 直连,无需 API Key,可直接生成中文语音。
- URL 模板:适合自建 GET 接口。
- OpenAI 兼容:适合 OpenAI 或兼容服务的
/audio/speech接口。
免费 TTS 模式提供线路按钮,可在微软 Edge 直连和 apizero 备用之间切换。微软 Edge 直连支持标准中文音色;apizero 备用支持四川话等音色。如果备用线路限流或不可用,模组会自动回退到微软 Edge 直连,避免出现“显示生成成功但没有声音”的情况。 免费模式下会隐藏服务地址、API Key 和模型输入框,音色改为点击切换。
微软 Edge 直连失败时会自动重试;连续失败时会自动回退到微软区域 HTTP 线路,降低单条线路抽风的影响。apizero 限流或不可用时仍会自动回退到 Edge 直连。若线路返回空音频,会明确提示而不是静默失败。
外部 TTS 服务设置里新增“服务输出音量”滑条,范围 0%-200%,三种请求方式都会生效。
URL 模板示例:
http://127.0.0.1:9880?text={text}&voice={voice}
OpenAI 兼容地址示例:
https://api.openai.com/v1/audio/speech
除免费模式外,其他方式都可以填写 API Key、音色名和模型名。服务支持返回 WAV、常见格式和 MP3。
说话时模组需要在内存中缓存当前语音;使用较大本地模型或在服务器里频繁说话时,如果遇到内存不足,建议在启动器中调高游戏分配内存,并可安装匹配游戏版本的内存优化类模组(例如 FerriteCore 等)。这只是建议提示,不是模组前置依赖。
- 说话界面历史记录支持点击再次朗读,点击项用边框高亮,悬停显示完整文字。
- 新增滞留模式(默认关闭):退出说话界面时未发送的文字保留,下次打开自动恢复;发送后界面照常关闭。
- 说话界面和各可滚动菜单右侧新增滚动条;历史默认显示最新一条,最旧的需要向上翻。
- 点击历史重读不会重复加入历史记录。
- 配置页一级菜单的自动朗读选项改名为“自动朗读输入聊天框的文字”,用途更明确。
- 新增 B 键自动朗读快捷键:与配置页开关、
/mcvoice auto状态同步,反馈文字一致。 - Edge 直连失败自动重试,连续失败自动回退区域 HTTP 线路;空音频明确报错。
- 说话时内存优化:请求队列有上限、超长文本分段合成、MP3 解码减少整段重复副本。
- 26.x、1.21.11、1.21.8、1.21.1 四个版本同步更新。
- 新增超文(男声)和小雅两套中文声线,放入 Sherpa 下载区,无需安装额外 g2pW 运行时。
- Sherpa 引擎自动加载模型目录中的
phone.fst、date.fst、number.fst,改善数字、日期和电话号朗读。 - 同步更新 26.x、1.21.11、1.21.8、1.21.1 四个版本,均可用新模型。
- 0.2.2 热更:配置页自动朗读选项改名为“自动朗读输入聊天框的文字”。
- Piper 下载状态改为跨下载页共享:切回配置页再进入时,下载中、失败、完成状态不会丢失。
- Piper 下载过程中会显示正在尝试哪个下载源以及失败原因;下载源增加备用 URL。
- Piper 下载失败或退出游戏时保留
.part断点,下次点击按钮可从已下载部分继续,不再整包重下。 - 重新打开下载页时,若检测到未完成模型,对应按钮显示“上次未完成,继续下载”。
- 修复 Plasmo Voice 开启“让自己也听到”时本地回放卡顿的问题,正常结束会播完剩余音频,手动停止才立即清空。
- Mod Menu 设为所有版本的必装前置,Simple Voice Chat 和 Plasmo Voice 不要求必装。
- 新增 1.21.1 独立构建;本机只存入历史目录,不部署到 1.21.1 游戏文件夹。
- Simple Voice Chat 改为可选前置,不装 SVC 时模组也能启动并本地播放;装了 SVC 仍可发给其他 SVC 玩家。
- 配置页新增 SimpleVoiceChat 和 PlasmoVoice 连接状态字段,未连接时显示红色并提示“模组仅可以在本地生效,他人无法听到”。
- PV 已安装但服务器未装 MCvoice 时显示黄色“已安装,未连接”,并提供服务器需要安装 MCvoice 的提示。
- 界面随游戏窗口缩放自适应,窗口较小时支持滚动,修复按钮重叠问题。
- 从原 ttvoice 重写为独立的 MCvoice 模组,适配 Minecraft 26.2 / Fabric。
- 中文配置界面、说话界面、聊天栏指令。
- 接入 Piper 中文声线、Windows SAPI 系统声线。
- 通过 Simple Voice Chat 在服务器内播放,其他人安装 SVC 后即可听到。
- 只修复一个 bug,不新增功能:修复无声音/配置界面无可选声线的问题。
- 修复另一台机器复测时仍无声音的问题。
- 完善模型加载和默认声线识别。
- 新增音量调节,支持 0%-200%。
- 新增传播距离设置,支持 1-128 格。
- 新增外部 TTS 命令,可接入 edge-tts、自建脚本或任意能输出 WAV 的工具。
- 新增外部 TTS 服务设置界面,支持 URL 模板和 OpenAI 兼容接口。
- 高级设置补充字段说明和鼠标悬停提示。
- 部署脚本同步到
26.2模组目录和E:\Bakabot历史\MCvoice备份目录。
- 新增免费外部 TTS 服务,无需 API Key。
- 免费模式支持切换可用音色。
- 免费模式切换为专用输入界面,隐藏不需要填写的字段,音色改为点击切换。
- 配置页增加
mcvoice/models文件夹入口。 - 恢复模型格式识别,新增 Sherpa 模型目录。
- 新增外部 TTS 服务输出音量滑条,三种请求模式都会生效。
- 移除内置模型,改为下载页直接下载,jar 体积从约 131MB 降到约 61MB。
- 接入 Sherpa-onnx,新增多个中文本地声线。
- 下载页分为 Piper 和 Sherpa 两组,Sherpa 模型自动解压到
mcvoice/models/sherpa。 - 按 Windows x64 打包,macOS/Linux 显示不支持提示。
- 模型下载页改为每个模型独立显示状态:未下载、下载中、已下载、下载失败。
- 已下载判断复用模型校验逻辑,避免
.part或空目录被误认为已经下载完成。 - 下载失败后自动清理临时文件、无效模型文件或残缺目录,并恢复为可点击重试。
- 修正
fabric.mod.json许可证字段为GPL-3.0-only。 - 新增 Plasmo Voice 服务端桥接:客户端把 TTS PCM 发给服务器,PV 服务器再广播给其他 PV 玩家。
- PV 群组规则优先;未开群组时沿用现有距离滑条作为近聊距离。
- 工程拆分为 3 个目标 jar,26.x 覆盖 26.1、26.1.1、26.1.2 和 26.2;1.21.11 和 1.21.8 各自独立。
- 新增配置菜单快捷键,默认
X;说话界面仍为~。 - 修复 26.x 和 1.21.11 配置键位分类重复注册导致游戏无法启动的问题。
- 修复免费 TTS 无声音的问题:默认改为微软 Edge 直连,失效镜像会返回首页 HTML 时自动回退到直连线路。
- apizero 备用线路保留四川话等音色,限流或不可用时也会自动回退到微软 Edge 直连。
- Sherpa 模型解压优先使用 Windows 自带解压器,失败时回退到内置解压,并显示解压进度。
本机构建已使用离线依赖:
$env:GRADLE_USER_HOME = "E:\GradleCache"
$env:JAVA_HOME = "C:\Program Files\Java\jdk-26.0.2"
E:\gradle-9.6.1\bin\gradle.bat build --offline --no-daemon --no-watch-fs --no-parallel当前 0.2.4 实际产物为:
mc26/build/libs/mcvoice-0.2.4+26.x.jar
mc12111/build/libs/mcvoice-0.2.4+1.21.11.jar
mc1218/build/libs/mcvoice-0.2.4+1.21.8.jar
mc1211/build/libs/mcvoice-0.2.4+1.21.1.jar
mcvoice-0.2.4+26.x.jar 覆盖 26.1、26.1.1、26.1.2 和 26.2;1.21.11、1.21.8、1.21.1 各自独立。
部署脚本会把当前版本所有目标 jar 一起复制到:
E:\项目历史\MCvoice\0.2.4实例
这个目录用于集中存放和备份同一版本的目标 jar。实际启动某个 Minecraft 版本时,只把对应游戏版本的 jar 放进该版本的 mods 文件夹,不要把多个不同游戏版本的 jar 同时塞进同一个游戏实例。
deploy.ps1 不再更新 1.21.11 和 1.21.1 游戏文件夹,但仍会生成并备份对应 jar。