Синтез речи JS в читаемый поток Node.JS

Aug 17 2020

Встроенная функция преобразования текста в речь в JavaScript - это SpeechSynthesis.speak(). Я использую discord.js и хочу преобразовать синтез речи в читаемый поток node.js, чтобы я мог воспроизвести его как трансляцию на голосовой канал.

Я нашел этот репозиторий Github , однако он не сработал для меня, и мне было трудно его транслировать (Кроме того, хотя я не уверен на 100%, я предполагаю, что он записывает tts, что не очень хорошо, когда работа с большими строками текста).

Вот основные ошибки, которые я получил при использовании вышеупомянутого кода:

The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.

а также

Uncaught TypeError: Cannot read property 'getUserMedia' of undefined

Моя цель - избежать чего-то вроде Google tts API и просто использовать собственный JavaScript. Можно ли вообще преобразовать синтез речи в читаемый поток, который я могу использовать в discord.js? Если да, то как? Или есть способ использовать предыдущее репо? Пожалуйста, помогите мне, это было бы очень признательно.

(также я знаю, что у Discord есть встроенная кнопка tts для чтения сообщений - это для чего-то совершенно другого)

Ответы

1 Luke Aug 17 2020 at 23:50

API веб-речи (SpeechSynthesis.speak ()) использует базовую реализацию синтеза ОС или браузера и не проходит через API веб-аудио. Это репозиторий Github фактически использует микрофон вашей системы для записи речевого вывода. Это не лучшая идея, кроме как взлома. Вам нужно будет использовать что-то еще для создания контента - возможно, Say.js, который является кроссбраузерным и работает непосредственно в node.js?