Speak.js中的女声

时间:2013-03-04 10:26:07

标签: javascript jquery html5 text-to-speech

我们正在使用speak.js库进行文本语音转换。我们需要在这里实现本地化的女性声音。 我们将其说话功能称为meSpeak.speak('Hello Thomas");,但我们无法将其作为女性声音。 我们观察到我们需要传递一些arg作为参数但是也不能传递它。 你能指导我如何使用speak.js lib获得女声?

非常感谢提前

1 个答案:

答案 0 :(得分:3)

假设你在谈论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”,ids实际上是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数据和声音的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语音文件并将其内容编码为base64-string并将其用作“语音”的值。在这种情况下,您不会设置“voice_encoding”属性。 -text可能更适合测试。)

希望这会有所帮助(它不会比这更容易)。

N.L。

编辑:请注意,任何格式错误的语音字符串都会导致(m)eSpeak出错。 (eSpeak在语法错误方面并不优雅,但会抛出“类型错误” - 由meSpeak作为控制台日志处理。请记住,meSpeak的核心只是emspepten生成的eSpeak端口。所以它不会更好地处理语音文件。)

编辑:这个(扩展)版本现在是meSpeak文档的一部分:http://www.masswerk.at/mespeak/voices-and-languages.html