个性化阅读
专注于IT技术分析

如何在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}`);
});

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在Node.js中将文本转换(合成)为语音

评论 抢沙发

评论前必须登录!