JS 语音合成到 Node.JS 可读流

Posted

技术标签:

【中文标题】JS 语音合成到 Node.JS 可读流【英文标题】:JS Speech Synthesis to Node.JS Readable Stream 【发布时间】:2020-12-06 03:31:38 【问题描述】:

javascript 的内置文本转语音功能是SpeechSynthesis.speak()。我正在使用 discord.js,我想将 Speech Synthesis 转换为 node.js Readable Stream,以便将其作为广播播放到语音频道。

我确实找到了 this Github Repo,但它对我不起作用,我很难广播它(另外,虽然我不是 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】:

Web Speech API (SpeechSynthesis.speak()) 使用底层操作系统或浏览器合成实现,并且不通过 Web Audio API。该 Github 存储库实际上使用您系统的麦克风来记录语音输出。除了作为黑客之外,这不是一个好主意。您需要使用其他东西来生成内容 - 可能是 Say.js,它是跨浏览器并直接在 node.js 中工作?

【讨论】:

以上是关于JS 语音合成到 Node.JS 可读流的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 将相同的可读流输送到多个(可写)目标中

文字转语音 前端 (google自带的语音合成,文字转声音)

如何在node.js中将数组值作为可读流发出/管道?

python腾讯语音合成

VC++基于微软语音引擎开发语音识别总结

如何下载使用语音合成将文本转换为语音的音频结果?