我们将 speak.js 库用于文本到语音的目的。我们需要在此实现具有本地化的女性声音。我们称它的说话功能为,meSpeak.speak('Hello Thomas");
但我们无法使其成为女性声音的操作。我们观察到我们需要传递一些 arg 作为参数,但也不能传递。您能否指导我如何使用 speak.js lib 获得女性语音操作?
提前谢谢了
我们将 speak.js 库用于文本到语音的目的。我们需要在此实现具有本地化的女性声音。我们称它的说话功能为,meSpeak.speak('Hello Thomas");
但我们无法使其成为女性声音的操作。我们观察到我们需要传递一些 arg 作为参数,但也不能传递。您能否指导我如何使用 speak.js lib 获得女性语音操作?
提前谢谢了
假设你在谈论 mespeak.js:
在http://www.masswerk.at/mespeak下载最新版本
以所选语言制作语音文件 (json) 的副本,然后在编辑器中打开它。
语音文件的结构如下:
{
"voice_id": "<filename>",
"dict_id": "<filename>",
"dict": "<base64-encoded octet stream>",
"voice": "<base64-encoded octet stream>"
}
首先,提供一个唯一的“voice_id”(例如“en-us-f”,id 实际上是 unix 文件名)。
编码后的语音数据实际上是一个文本文件,可在 eSpeak 的数据目录中找到(参见http://espeak.sourceforge.net/)。虽然文件表示为 base64 编码的八位字节流,但您也可以通过提供另一个属性“voice_encoding”来使用文本字符串:
{
"voice_id": "<filename>",
"dict_id": "<filename>",
"dict": "<base64-encoded octet stream>",
"voice": "<text-string>",
"voice_encoding": "text"
}
现在,参考语音的 eSpeak-data 和 eSpeak-docs,您可能会发现语音“en-us”的以下文本:
// moving towards US English
name english-us
language en-us 2
language en-r
language en 3
gender male
[and more]
通过删除第一行中的注释,编辑名称(我们希望这是唯一的),最后更改性别,您将得到:
name english-us-f
language en-us 2
language en-r
language en 3
gender female
用 "\n" 替换任何换行符以获得有效的 JSON 字符串:
"name english-us-f\nlanguage en-us 2\nlanguage en-r\nlanguage en 3\ngender female"
并将其用作属性“voice”的值。保存您的文件并将其加载到 meSpeak。
您可以根据 eSpeak-Docs 微调声音:http://espeak.sourceforge.net/voices.html
(另一种方法是保存一个纯 eSpeak-voice 文件并将其内容编码为 base64-string 并将其用作“voice”的值。在这种情况下,您不会设置“voice_encoding”属性。使用纯文本可能更适合测试。)
希望这会有所帮助(它不会比这更容易)。
荷兰
编辑:请注意,任何格式错误的语音字符串都会导致 (m)eSpeak 出现错误。(eSpeak 对语法错误并不友好,但会抛出“类型错误”——meSpeak 将其作为控制台日志处理。请记住,meSpeak 的核心只是 Emscripten 生成的 eSpeak 端口。所以它不能更好地处理语音文件。)
编辑:这个(扩展)版本现在是 meSpeak 文档的一部分:http: //www.masswerk.at/mespeak/voices-and-languages.html