如何在Node.js中将文本转换(合成)为语音

本文概述

  • 要求
  • 实现
语音合成用于将书面信息转换为对人类更方便的声音。尽管此类功能特别用于移动应用程序(如启用语音的电子邮件和统一消息传递应用程序)中, 但是你可以使用say模块在Node.js中实现非常简单的TTS系统。
say模块不依赖任何远程服务, 因为它将使用系统的本机TTS服务(带有Festival的Linux, 带有AppleScript的MacOS和Mac OS X文本语音转换以及带有SAPI的Windows)。
要求为了将文本转换为语音, 我们将依赖say模块。 Say是用于节点的TTS(文本到语音)库, 用于将文本从node.js发送到扬声器。
要安装此模块, 请在终端中执行以下命令:
npm install say

安装后, 你将可以使用require(” say” )访问此模块。你可以在Github的官方存储库中了解有关say模块的更多信息。
实现say模块是一个提供3种方法的对象(取决于操作系统, 某些功能将无法正常工作或可能不可用):
说话功能
语音功能可让你轻松合成文本。它将文本作为第一个参数, 将第二个参数作为检查任何错误(如果有)和结束事件的函数:
var say = require('say'); say.speak('Hello, how are you today?', (err) => {if (err) {return console.error(err); }console.log('Text has been spoken.'); });

在MacOS和Linux中, 你可以指定合成速度以及提供第一个和第三个参数的声音:
var say = require('say'); say.speak('Hello, how are you', 'Alex', 0.5, (err) => {if (err) {return console.error(err); }console.log('Text has been spoken.'); });

请注意, 在Windows中, 这些选项不可用。
停止功能
你可以使用say.stop方法停止当前任何语音说话:
var say = require('say'); say.speak('Hello, how are you', 'Alex', 0.5, (err) => {if (err) {return console.error(err); }console.log('Text has been spoken.'); }); say.stop();

汇出功能
导出功能使你可以将文本合成导出到.wav文件。
var say = require("say"); var filename = "myaudio.wav"say.export("I'm sorry, Dave.", 'Cellos', 0.75, filename, function(err) {if (err) {return console.error(err); }console.log(`Text has been saved to ${filename}`); });

Windows注意事项
say函数中的语音参数和速度不可用, 这意味着它将使用默认的系统语音, 而忽略语音和速度参数。
导出功能均不可用。
OSX的注意事项
在Mac OS中, 你可以将声音更改为:
女性的声音
艾格尼丝, 凯西, 公主, 维琪, 维多利亚
男性声音
阿尔伯特, 亚历克斯, 布鲁斯, 弗雷德, 少年, 拉尔夫
杂音
坏消息, Bahh, 钟声, 波音, 气泡, 大提琴, 精神错乱, 好消息, 歇斯底里, 管风琴, 三叉戟, 耳语, Zarvox。
Linux注释
要在Linux中使用Node.js合成文本, 你将选择Festival。节日的声音有时需要单独安装-你可以通过以交互模式启动Festival并键入(voice_, 然后按TAB键来检查可用的声音。然后输入要尝试的声音的名称, 减去括号。 , 然后将其传递给say.js, 例如:
var say = require("say"); var voiceName = "voice_nick1"say.speak("Luke, I am your father", voiceName, 0.75 , (err) => {if (err) {return console.error(err); }console.log(`Text with the voice ${voice}`); });

【如何在Node.js中将文本转换(合成)为语音】编码愉快!

    推荐阅读