Как конвертировать (синтезировать) текст в речь в Node.js

Синтез речи используется для преобразования письменной информации в звук, где это более удобно для человека. Хотя такая функция специально используется в мобильных приложениях, таких как электронная почта с поддержкой голосовой связи и приложения единой системы обмена сообщениями, вы можете реализовать очень простую систему TTS в Node.js, используя say модуль.

Модуль say не зависит от какой-либо удаленной службы, поскольку он будет использовать собственную службу TTS системы (Linux с Festival, MacOS с Mac OS X для преобразования текста в речь с использованием AppleScript и Windows с SAPI).

Требования

Для преобразования текста в речь мы будем зависеть от модуля say. Say — это библиотека TTS (text to speech) для узла, которая отправляет текст из node.js вашим докладчикам.

Чтобы установить этот модуль, выполните следующую команду в своем терминале:

npm install say

После установки вы сможете получить доступ к этому модулю, используя require("say"), Вы можете прочитать больше о модуле say в официальный репозиторий в Github здесь.

Реализация

Модуль say — это объект, который предлагает 3 метода (в зависимости от ОС некоторые функции не будут работать должным образом или могут быть недоступны):

Говорить функция

Функция Speak позволяет легко синтезировать текст. В качестве первого параметра он ожидает, что текст будет говорить, а в качестве второго параметра — функцию проверки на наличие ошибок (в случае их возникновения) и конечного события:

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

Примечания для окон

Параметр голоса и скорость в say функция недоступна, это означает, что она будет использовать системный голос по умолчанию, игнорируя параметры голоса и скорости.

Функция экспорта недоступна.

Примечания для OSX

В Mac OS вы можете изменить голоса на:

Женские голоса

Агнес, Кэти, Принцесса, Вики, Виктория

Мужские Голоса

Альберт, Алекс, Брюс, Фред, Младший, Ральф

Разные голоса

Плохие новости, Бах, Колокола, Боинг, Пузыри, Виолончели, Безумные, Хорошие новости, Истерика, Орган, Триноиды, Шепот, Зарвокс.

Примечания для Linux

Чтобы синтезировать текст с помощью Node.js в Linux, вы будете фестиваль. Голоса для Фестиваля иногда нужно устанавливать отдельно — вы можете проверить, какие голоса доступны, запустив Фестиваль в интерактивном режиме, набрав (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}`);
});
Ссылка на основную публикацию
Adblock
detector