简易语音TTS

简易语音TTS

为每个NPC和所有游戏内文本添加语音,包括来自模组和自定义内容的对话。只需在游玩前安装你想要的Windows TTS语音,你拥有的语音越多,多样性和沉浸感就越强。

**下载完整的 TTS 语音列表可能需要数小时(甚至数天),但每个语音包只需 30 分钟。**[youtube]PjgELx44uck[/youtube]

适用于模组和所有类型的文本

描述

这个模组使用您系统中安装的 Windows 文本转语音(SAPI5)语音,为游戏添加完整的配音。

您安装的语音越多,模组可以模拟的语音风格、口音和角色就越多样化。如果您只安装了两种语音,请不要期待有多丰富的多样性。

您可以通过 Windows 语言设置安装额外的免费 Windows 语音,或者通过我的 MCM 模组直接下载并安装。安装新语音后,请记得按照下方链接的教程视频在 MCM 中进行同步。

该模组还支持多种语言,包括中文、日语、韩语、俄语等。只要您安装了相应的 Windows TTS 语音,这些语言的文本就能被正确朗读。只要可能,游戏会自动为每种支持的语言使用适当的系统语音。

简而言之:

  • 安装的 Windows TTS 语音越多 = 语音多样性越丰富。
  • 通过 Windows 或我的 MCM 免费安装语音。
  • 安装后同步语音。
  • 安装所需 TTS 语音后即可支持多语言文本。
[youtube]T_3C4z1br-4[/youtube]

自动下载

首先,在星露谷物语中选择您的语言,然后选择“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 生成