这是我在 YouTube 上发布的第一个视频,并且是用英语制作的,所以当您给它评分时,请尽量保持友善和宽容。
[嵌入]https://youtu.be/n3mI7kZK_dk[/embed]
这几天我一直在寻找最好的语音合成器,我可以在我的自制应用程序中使用它。我主要使用 Java 语言进行编程,但我还没有找到任何已完成且质量足以让我满意的解决方案。我找到了完全用 Java 语言编写的免费库 FreeTTS。有一天我会谈论它。这是该图书馆 网站 的链接。如果您查看发行说明页面,就会了解到该库的开发已于 2005 年完成。FreeTTS 仅提供英语。在左侧,您可以看到声音文件的链接。试着听听它的声音。听起来像机器人。您想像这样大声朗读您的电子书吗?我想你听几段就累了。
我找到了很好的语音合成器,叫做 IVONA。它使用超过 18 种语言,包括波兰语、英语和德语。在这个网站上,您可以看到所有可用的 IVONA 声音 。有些语言有几种声音。例如,英语涉及 Amy、Brian 和 Emma 的声音。让我向您介绍 布赖恩的声音 。很高兴听到这样的话,知道这是一个软件。如您所见,Brian 语音的价格为 45 美元。您可以下载 30 天试用版。我做到了,我仍在测试这些声音。重要的是该合成器的声音支持 SAPI 5 接口。 SAPI 5 是原生的 Microsoft Speech API (SAPI)。 SAPI 的文档可在网站 MSDN Library 上找到。
SAPI 5 不可从 Java 虚拟机位置获得。需要用 C++ 或 C# 或 Visual Basic 对其进行编程。我的简单应用程序是用 C++ 语言编写的。如果我可以在用 Java 编写的应用程序中使用 SAPI,那么我可以在 C++ 中创建库 DLL(动态链接库)并从 Java Native Interface 中受益。因此,我将在我的 Java 应用程序中使用 C++ 应用程序。还有一个解决方案,有点脏。我可以使用来自 Java 的适当命令行参数来执行 EXE 应用程序。为此,我使用 ProcessBuilder 类或 System.Runtime.exec 方法。
在描述“speak(...)”函数之前,先看一下“main(...)”函数。当我调用函数“speak(...)”时,我传递了将被大声朗读的文本和将要使用的语音的描述。该属性被函数“ SpFindBestToken ”用于指示语音合成器和语音。你怎么知道在这里写什么?请打开 Windows 注册表(regedit 命令)并打开节点“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices”。您可以使用所有声音的列表。您可以通过传递年龄、性别、语言、姓名和供应商等属性来指示您感兴趣的声音。
有趣的是,Speech API 不仅可以用于语音合成,还可以用于语音识别。如果我安装了支持 SAPI 5 的语音识别应用程序,我可以在节点“HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Recognizers”中看到它。
在我的简单应用程序中,我使用了 3 个来自组件对象模型 (COM) 库的函数。有:
- CoInitialize - 在当前线程上初始化 COM 库。在调用任何库函数之前,您需要在线程上初始化 COM 库。
- CoUninitialize - 关闭当前线程上的 COM 库,卸载线程加载的所有 DLL,释放线程维护的任何其他资源,并强制关闭线程上的所有 RPC 连接。
- CoCreateInstance - 创建与指定 CLSID 关联的类的单个未初始化对象。
我在这里传递与类“ISpVoice”相关的“CLSID_SpVoice”,并在“sapi.h”头文件中进行了描述。这里我有所有 Speech API 类的标识符。现在您可以使用“pVoice”指针。我在这里选择声音,然后命令语音合成器朗读我的文本。最后,我释放资源。当然,这段代码是可以重构的,因为我做了三次相同的事情。
在我的下一次演示中,我将向您展示将 Java 应用程序与这个简单的文本到语音应用程序集成的解决方案。我将介绍其他文本转语音平台和应用程序编程接口 (API)。
访问我的 GitHub 个人资料 。
知识
- Microsoft Speech Platform SDK 11 文档,应用程序级接口
- 来自 MSDN 的文字转语音教程 https://msdn.microsoft.com/en-us/library/ms720163(v=vs.85).aspx
伊沃娜之声
- 波兰语 http://harposoftware.com/en/13-polish
- 英文 http://harposoftware.com/en/16-british-english
- 德语 http://harposoftware.com/en/27-german
环境和IDE
- Visual Studio 社区 https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
- 微软语音平台 SDK 11
应用程序接口
组件对象模型 (COM)
- CoCreateInstance https://msdn.microsoft.com/en-us/library/windows/desktop/ms686615(v=vs.85).aspx
- CoInitialize https://msdn.microsoft.com/en-us/library/windows/desktop/ms678543(v=vs.85).aspx
- CoUninitialize https://msdn.microsoft.com/en-us/library/windows/desktop/ms688715(v=vs.85).aspx
演讲
- 助手 SpFindBestToken https://msdn.microsoft.com/en-us/library/ms717543(v=vs.85).aspx
- ISpObjectToken https://msdn.microsoft.com/en-us/library/ms718134(v=vs.85).aspx
- ISpVoice https://msdn.microsoft.com/en-us/library/ms719576(v=vs.85).aspx
- ISpVoice::Speak https://msdn.microsoft.com/en-us/library/ms719820(v=vs.85).aspx
- ISpVoice::SetVoice https://msdn.microsoft.com/en-us/library/ms719807(v=vs.85).aspx
Windows 注册表编辑器
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices