在JavaScript中, 使用eSpeak TTS

・4 分钟阅读

  • 源代码名称: speak.js
  • 源代码网址: https://www.github.com/kripken/speak.js
  • speak.js的文档
  • speak.js的源代码下载
  • Git URL:
    git://www.github.com/kripken/speak.js.git
  • Git Clone代码到本地:
    git clone https://www.github.com/kripken/speak.js
  • Subversion代码到本地:
    $ svn co --depth empty https://www.github.com/kripken/speak.js
                              Checked out revision 1.
                              $ cd repo
                              $ svn up trunk
              
  • speak.js

    eSpeak语音合成器的一个port,使用Emscripten,从C port到JavaScript。

    使用JavaScript和HTML5在网络上启用文字转语音。

    https://github.com/katsuyan/speak.js

    用法

    非常简单:

    • 在你的html header 中包含脚本,

      <script src="speakClient.js"></script>

      ( 并确保有 speakClient.js 可用,以及 speakWorker.js 和 speakGenerator.js )

    • 在html体中添加一个带有名为'audio'的音频元素的div,

      <div id="audio"></div>

    • 在JavaScript中调用 speak()

      speak('hello world!')

    简单的'hello world ',请参阅helloworld.html,更详细的示例,请参阅demo.html。

    命令行选项

    你也可以通过调用speak()来指定一些选项

    
     `speak('hello world', { option1: value1, option2: value2.. })`
    
    
    
    

    可用选项包括:

    • amplitude :声音的声音大小(默认值: 100 )
    • pitch :音高(默认值: 50 )
    • speed :说话的速度(每分钟字数)(默认值: 175 )
    • voice :使用哪种语音(对于非默认语音,需要你构建speak.js以包含正确的数据。 见下面的语言支持)(默认: en/en-us)
    • wordgap:以10 ms为单位的单词之间的额外差距(默认值: 0 )
    • noWorker:不要使用Web worker(请参阅下面的'体系结构')

    例如

    
     `speak('hello world', { pitch: 100 })`
    
    
    
    

    体系结构

    speakClient.js 是你与之交互的文件。 它定义了speak(),并将在web worker中加载speakWorker.js。 speakWorker环绕 speakGenerator.js,,它完成将字符串转换为WAV文件的实际工作。 将WAV数据返回到speak(),然后在HTML Audio元素中播放它。

    你还可以使用不带web worker的speak.js。 在这种情况下,你不需要 speakWorker.js,,但是你需要在HTML页面中加载 speakGenerator.js 和 speakClient.js。 如果在选项对象中将noWorker设置为true,则会直接调用speakGenerator.js中的WAV生成代码,而不是将调用转发给将完成相同操作的worker。

    构建

    已经包含预生成版本。 但是如果你想修改源代码,你可能希望自己构建它。 在src/中运行emscripten.sh。

    语言支持

    eSpeak支持多种语言,所以speak.js也可以支持多语言。 为此,你需要构建 speak.js的自定义版本:

    • 捆绑正确的语言文件。 对于法语,你需要fr_dict和voices/fr。 参见 emscripten.sh 和 bundle.py 中注释掉的代码
    • 在post.js中将这些文件公开给模拟文件系统,看那里的注释掉的代码。
    • 运行emscripten.sh进行构建。

    然后,你需要使用voice选项调用speak(),告诉它使用你使用的语言的语音。 例如,对于法语,这应该工作:

    
     `speak('boulanger', { voice: 'fr' })`
    
    
    
    
    讨论
    Fansisi profile image