Skip to content

CingZeoi/OneCore-SAPI5

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

借助 SAPI5 接口调用 OneCore 语音

介绍

本项目旨在提供一种解决方案,以克服 Microsoft Windows 操作系统中 Speech API 5 (SAPI5)OneCore 平台语音库 之间的兼容性限制。 默认配置下,基于 SAPI5 架构的文本转语音 (TTS) 程序无法直接访问和利用 Windows 10 及 Windows 11 系统内置的高质量 OneCore 语音,例如 "Microsoft Yaoyao Mobile" 和 "Microsoft Kangkang Mobile" 等。 本项目通过提供一系列预配置的注册表文件,实现了将 OneCore 语音引擎整合至 SAPI5 框架,从而扩展了 SAPI5 程序可用的语音资源,并提升了 TTS 输出的质量。

SAPI5 与 OneCore 语音库的集成

为了充分理解本项目的价值,有必要阐明 SAPI5 和 OneCore 平台在 Windows 语音技术体系中的角色,以及两者之间存在集成困难的原因:

  • (1) Speech API 5 (SAPI5)

SAPI5 是 Windows 系统中成熟的语音API。为开发者提供了一套标准化的工具和协议,用于在其程序中实现语音识别 (SR) 和文本转语音 (TTS) 功能。 大量传统的 TTS 软件,以及辅助技术应用,均构建于 SAPI5 架构之上。 然而,SAPI5 的设计和架构相对传统,其默认可访问的语音引擎可能未能充分集成 Windows 系统中最新的语音架构。

  • (2) OneCore 平台及其语音库

OneCore 代表了 Microsoft Windows 操作系统架构的现代化演进。 作为 Windows 10 和 Windows 11 的统一核心平台,OneCore 整合了先进的系统组件和技术,包括高质量的语音合成引擎及语音库。 Microsoft Mobile 语音 即为 OneCore 平台语音库的典型代表,其特点在于音质卓越、语调自然、语言覆盖范围广泛。 这些 OneCore 语音通常应用于 Windows 系统自身的现代应用和服务,如 Cortana 语音助手和讲述人屏幕报读程序。

SAPI5 与 OneCore 语音库之间的兼容问题,导致了高质量 OneCore 语音资源在传统 SAPI5 程序中无法直接利用的现状,限制了用户在各类 TTS 应用中获得最佳语音体验。

通过修改注册表解锁 SAPI5 OneCore 语音

本项目提供的方案,旨在通过修改 Windows 注册表配置,实现将 OneCore 语音引擎注册至 SAPI5 系统,从而解除默认的访问限制,并使 OneCore 语音库能够被 SAPI5 程序调用。

  • (1) SAPI5 语音引擎注册机制

SAPI5 系统采用基于注册表的机制来管理和识别可用的语音引擎。 当 SAPI5 运行时环境启动或程序请求可用的语音引擎列表时,系统将扫描 Windows 注册表中的特定路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens。 此路径下的每一个子项均代表一个已注册的语音引擎 “令牌 (Token)”。 每个 Token 包含语音引擎的描述信息、组件标识符 (CLSID)、语音数据文件路径等关键参数。

  • (2) 基于注册表修改的解锁原理

本项目提供的注册表文件 (.reg) 预先定义了 OneCore 语音引擎的 “令牌” 信息,并将其写入至 SAPI5 系统扫描的注册表路径 (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens)。 通过导入这些注册表文件,系统实际上执行了以下操作:

  1. 注册 OneCore 语音引擎令牌: 在 SAPI5 注册表路径下创建新的子项,用于注册 OneCore 语音引擎的 Token。
  2. 提供关键配置信息: 为每个 Token 项配置必要的注册表值,包括:
  • CLSID 值: 指向 OneCore 语音引擎组件的 COM 类标识符,使 SAPI5 系统能够创建和调用语音引擎对象。
  • 数据文件路径: 指定 OneCore 语音引擎的语言数据文件 (LangDataPath) 和语音数据文件 (VoicePath) 在磁盘上的位置,使 SAPI5 系统能够加载必要的语音资源。
  • 属性信息: 定义语音引擎的元数据属性(例如,语言、性别、年龄等),以便 SAPI5 程序能够识别和选择合适的语音引擎。

通过上述注册表修改操作,SAPI5 系统将被 “告知” OneCore 语音引擎的存在,并将其纳入可用的语音引擎列表。 当 SAPI5 程序请求语音合成服务时,系统将能够识别和加载已注册的 OneCore 语音引擎,从而实现对 OneCore 语音库的调用。

  • (3) 事先安装OneCore 语音包

重要的是,本解决方案依赖于 Windows 系统中已安装的 OneCore 语音资源。 注册表文件本身 不包含任何语音数据文件,仅为 SAPI5 系统提供访问已安装语音资源的 “索引”。 因此,在导入注册表文件之前,用户必须 预先安装目标 OneCore 语音引擎对应的语言包和语音组件

使用方法与操作步骤

(1) 语音库安装准备 (先决条件)

在执行注册表导入操作之前,务必确保已安装目标 OneCore 语音引擎所需的语言包和语音组件。 操作步骤如下:

  1. 打开 "电脑设置" 通过 Windows "开始" 菜单,访问并启动 "设置"。
  2. 浏览至 "时间和语言" 设置: 在 "设置" 窗口中,定位并选择 "时间和语言" 选项。
  3. 选择 "区域和语言" 选项卡: 在 "时间和语言" 设置界面,切换至 "区域和语言" 选项卡。
  4. 添加目标语言: 在 "语言" 部分,点击 "添加语言" 按钮,并在语言列表中选择所需的语言 (例如,中文 (简体))。
  5. 下载语音资源组件: 选中已添加的语言,点击 "选项" 按钮,然后在语言选项页面,找到 "语音" 部分,并点击 "下载" 按钮以下载和安装语音资源组件。 务必等待语音资源下载和安装过程完成。
  6. (可选) 系统重启: 为确保所有组件正确加载,建议在完成语音资源安装后重启计算机。

(2) 导入注册表文件

  1. 下载注册表文件: 从本项目对应语言和系统架构 (32 位或 64 位) 的文件夹中,下载相应的 .reg 注册表文件。
  2. 执行注册表合并操作: 找到下载的 .reg 文件,双击运行该文件,或右键点击选择 "合并" 菜单项。 系统将弹出用户账户控制 (UAC) 提示,请授权允许注册表编辑器进行更改。
  3. 确认导入: 在注册表编辑器弹出的确认对话框中,点击 "是" 按钮,以完成注册表信息的导入。

(3) 验证与使用

完成注册表导入后,即可启动任何支持 SAPI5 的TTS程序 (例如 Balabolka)。 在程序的语音选择列表中,应能找到已解锁的 OneCore 语音选项 (例如 "Microsoft Yaoyao Mobile", "Microsoft Kangkang Mobile" 等)。 选择并应用 OneCore 语音,即可体验更高质量的文本转语音输出。

参考资料

本项目的创建和解决方案的实现,以及对 SAPI5 与 OneCore 语音库集成问题的理解,均参考了以下资源:

  1. How can I use more of the microsoft voices to SAPI? - Microsoft Community
  1. 支援的语言和语音 - Microsoft 支援服务
  1. Balabolka - Text-To-Speech (TTS) program
  • 链接: https://www.cross-plus-a.com/bportable.htm
  • 描述: Balabolka 是一款流行的免费文本转语音 (TTS) 软件,支持 SAPI4 和 SAPI5 接口。 本项目在开发和测试过程中,Balabolka 被用作主要的 SAPI5 程序示例,用于验证注册表修改方案的有效性,并测试解锁后的 OneCore 语音在实际 TTS 应用中的表现。 此链接指向 Balabolka 软件的官方下载页面,用户可以下载该软件以验证本项目提供的解决方案。

About

Allow calling OneCore voice engine with SAPI5

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published