
简易语音TTS
为每个NPC和所有游戏内文本添加语音,包括来自模组和自定义内容的对话。只需在游玩前安装你想要的Windows TTS语音,你拥有的语音越多,多样性和沉浸感就越强。
查看大图适用于模组和所有类型的文本
描述
这个模组使用您系统中安装的 Windows 文本转语音(SAPI5)语音,为游戏添加完整的配音。
您安装的语音越多,模组可以模拟的语音风格、口音和角色就越多样化。如果您只安装了两种语音,请不要期待有多丰富的多样性。
您可以通过 Windows 语言设置安装额外的免费 Windows 语音,或者通过我的 MCM 模组直接下载并安装。安装新语音后,请记得按照下方链接的教程视频在 MCM 中进行同步。
该模组还支持多种语言,包括中文、日语、韩语、俄语等。只要您安装了相应的 Windows TTS 语音,这些语言的文本就能被正确朗读。只要可能,游戏会自动为每种支持的语言使用适当的系统语音。
简而言之:
- 安装的 Windows TTS 语音越多 = 语音多样性越丰富。
- 通过 Windows 或我的 MCM 免费安装语音。
- 安装后同步语音。
- 安装所需 TTS 语音后即可支持多语言文本。
自动下载
首先,在星露谷物语中选择您的语言,然后选择“Install Voice”(安装语音),或选择“Install”(安装)进行批量安装。

然后您需要注册。

之后您需要同步。
[Simple Voice TTS — Video game MODS | Patreon](https://www.patreon.com/cw/SimpleVoiceTTS)手动安装 TTS
您可以通过以下选项从 Windows 更快地下载 TTS:

如果您没有这些选项... 您需要这样做,或者需要通过 PowerShell 使用这种比较麻烦的方法。
教程:为 SMAPI 模组在 Windows 中安装 TTS 语音
1. 问题:OneCore 与 SAPI5
Windows 有两个独立的文本转语音引擎:
- SAPI5(旧版,2000年):由 SpVoice COM 使用。只能看到英文的桌面语音(David、Zira)。
- OneCore(现代,Win10/11):包含西班牙语、日语、德语等语音。
SpVoice(您在 C# 中使用 Type.GetTypeFromProgID("Sapi.SpVoice") 所用的那个)对 OneCore 语音是不可见的。本教程将安装 OneCore 语音并通过注册表将它们暴露给 SAPI5。
2. 第一步 — 激活 Windows 服务
必须运行 BITS 和 wuauserv 服务才能下载语言包。以管理员身份运行 PowerShell:
Start-Service BITS
Get-Service BITS
Get-Service wuauserv
Start-Service wuauserv # if stopped
重要提示: 如果 wuauserv 无法启动,请忽略它;BITS 是下载所需的关键服务。
3. 第二步 — 列出可用语音
查看 Microsoft 为您的系统提供了哪些语音包:
Get-WindowsCapability -Online | Where-Object Name -like "*Speech*"

查找类似 Language.TextToSpeech~~~es-ES~0.0.1.0(西班牙语)或 ~ja-JP~(日语)的行。
4. 第三步 — 按语言安装语音
安装某种语言的所有语音(示例:西班牙语):
Get-WindowsCapability -Online | Where-Object {$_.State -eq "NotPresent" -and $_.Name -like "Language.Speech*"} | Add-WindowsCapability -Online
要安装所有语言的所有语音:
Get-WindowsCapability -Online | Where-Object {$_.State -eq "NotPresent" -and $_.Name -like "Language.Speech*"} | Add-WindowsCapability -Online
注意: 根据您的网络连接,下载可能需要 5-15 分钟。
5. 按语言分块命令(复制并粘贴)
以下是星露谷物语支持的每种语言的确切命令。将您需要的语言命令块复制并粘贴到以管理员身份运行的 PowerShell 中。
德语 (de)
Add-WindowsCapability -Online -Name Language.Speech~~~de-DE~0.0.1.0
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~de-DE~0.0.1.0
西班牙语 (es)
Add-WindowsCapability -Online -Name Language.Speech~~~es-ES~0.0.1.0
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~es-ES~0.0.1.0
拉丁西班牙语 (es-MX)
Add-WindowsCapability -Online -Name Language.Speech~~~es-MX~0.0.1.0
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~es-MX~0.0.1.0
法语 (fr)
Add-WindowsCapability -Online -Name Language.Speech~~~fr-FR~0.0.1.0
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~fr-FR~0.0.1.0
匈牙利语 (hu)
Windows 不提供匈牙利语的 Language.Speech。
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~hu-HU~0.0.1.0
意大利语 (it)
Add-WindowsCapability -Online -Name Language.Speech~~~it-IT~0.0.1.0
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~it-IT~0.0.1.0
日语 (ja)
Add-WindowsCapability -Online -Name Language.Speech~~~ja-JP~0.0.1.0
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~ja-JP~0.0.1.0
韩语 (ko)
Windows 不提供韩语的 Language.Speech。
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~ko-KR~0.0.1.0
巴西葡萄牙语 (pt-BR)
推荐用于星露谷物语。
Add-WindowsCapability -Online -Name Language.Speech~~~pt-BR~0.0.1.0
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~pt-BR~0.0.1.0
欧洲葡萄牙语 (pt-PT)
仅 TTS。
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~pt-PT~0.0.1.0
俄语 (ru)
Add-WindowsCapability -Online -Name Language.Speech~~~ru-RU~0.0.1.0
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~ru-RU~0.0.1.0
土耳其语 (tr)
Add-WindowsCapability -Online -Name Language.Speech~~~tr-TR~0.0.1.0
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~tr-TR~0.0.1.0
简体中文 (zh-CN)
Add-WindowsCapability -Online -Name Language.Speech~~~zh-CN~0.0.1.0
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~zh-CN~0.0.1.0
繁体中文 (zh-TW)
Add-WindowsCapability -Online -Name Language.Speech~~~zh-TW~0.0.1.0
Add-WindowsCapability -Online -Name Language.TextToSpeech~~~zh-TW~0.0.1.0
6. 第四步 — 验证 OneCore 安装
检查语音是否显示为已安装:
Get-WindowsCapability -Online | Where-Object Name -like "*Speech*"
7. 第五步 — 将 OneCore 暴露给 SAPI5(关键技巧)
SpVoice 只读取 HKLM\SOFTWARE\Microsoft\Speech\Voices\Tokens。OneCore 语音位于 Speech_OneCore。我们使用以下脚本复制注册表键:
# 导出 OneCore 语音
reg export "HKLM\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens" "$env:TEMP\onecore_voices.reg"
# 替换路径并保存为 SAPI5
$content = Get-Content "$env:TEMP\onecore_voices.reg" -Raw
$content = $content -replace 'Speech_OneCore', 'Speech'
$content = $content -replace 'Speech\Isolated', 'Speech'
Set-Content "$env:TEMP\sapi5_voices.reg" $content -Force
# 导入到 SAPI5
reg import "$env:TEMP\sapi5_voices.reg"
Write-Host "Voices copied. Restart SMAPI."
手动替代方法: 打开 regedit,导出 Speech_OneCore\Voices\Tokens,在 .reg 文件中将 Speech_OneCore 替换为 Speech,然后导入。
8. 第六步 — 在您的 SMAPI 模组中验证
将以下方法添加到您的 SapiTTS.cs 类中,以便在控制台中列出语音:
public void ListVoices()
{
var voices = _voice.GetVoices();
for (int i = 0; i < voices.Count; i++)
{
dynamic v = voices.Item(i);
Console.WriteLine($"[TTS][{i}] {v.GetDescription()}");
}
}
在 ModEntry.Entry() 中调用它:_tts.ListVoices(); 并检查 SMAPI 控制台。
9. 第七步 — 为 NPC 分配语音
在您的 NpcVoiceDatabase.cs 中,使用日志中显示的准确名称:
["Sandy"] = new(1, 90, "Microsoft Pablo Desktop", 5, "Oasis Spanish"),
["Gus"] = new(0, 95, "Microsoft Pablo Desktop", -5, "Warm bartender"),
["Jas"] = new(2, 80, "Microsoft Helena Desktop", 10, "Spanish girl"),
["Leo"] = new(1, 80, "Microsoft Pablo Desktop", 5, "Spanish island boy"),
10. 各语言常见语音表
| 语言 | 男声 | 女声 |
|---|---|---|
| 西班牙语 (ES) | Microsoft Pablo Desktop | Microsoft Helena Desktop |
| 西班牙语 (MX) | Microsoft Jorge Desktop | Microsoft Dalia Desktop |
| 日语 | Microsoft Ichiro Desktop | Microsoft Haruka Desktop |
| 德语 | Microsoft Stefan Desktop | Microsoft Hedda Desktop |
| 法语 | Microsoft Paul Desktop | Microsoft Julie Desktop |
| 意大利语 | Microsoft Cosimo Desktop | Microsoft Elsa Desktop |
| 葡萄牙语 (BR) | Microsoft Daniel Desktop | Microsoft Maria Desktop |
| 韩语 | Microsoft InJoon Desktop | Microsoft SunHi Desktop |
| 中文 (CN) | Microsoft Kangkang Desktop | Microsoft Huihui Desktop |
| 俄语 | Microsoft Pavel Desktop | Microsoft Irina Desktop |
注意: 确切的名称可能因您的 Windows 版本而异。分配前务必使用 ListVoices() 验证。
11. 故障排除
- SpVoice 仍然看不到它们: 重启电脑(COM 缓存有时会被锁定)。
- .reg 文件权限错误: 以管理员身份运行 PowerShell。
- 更换语音时崩溃: 将
SelectVoice()包裹在try/catch中。 - 没有我的语言的语音: Microsoft 不提供该语言的 OneCore 语音。使用 SSML 音调转换作为替代方案。
为 RealTimeTTS — Wyazmata 生成
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。