没有浏览器 GUI 的文本转语音

Text-To-Speech without browser GUI

我一直在 HTML 设计以创建具有 GUI 的应用程序。我为此创建了一些脚本 - 特别是使用浏览器的脚本 window Speech Synthesis Utterance.

然而,突然之间,项目的范围发生了变化,我需要取消 GUI,但将 TTS 脚本 运行 保留为后台进程。我对编程还是很陌生,所以我尝试用 node.js 打开脚本,但它并没有那样工作。该话语被编程为读取某个 xml 文件。所以基本上,我想做的就是取消 HTML 浏览器方面,并保留 javascript。这可能吗?有没有人对我如何处理这个问题有任何建议?

我试过只在 node.js 中打开脚本 我调查了 element.js,但 "seem" 并不是我想要的。

            var msg = new SpeechSynthesisUtterance("Testing");


            var voices = window.speechSynthesis.getVoices();
            var voice = speechSynthesis.getVoices();
            speechSynthesis.getVoices().forEach(function(voice) {
                console.log(voice.name, voice.default ? voice.default : '');
            });

            msg.pitch = 1.1;
            msg.volume = 1;
            msg.rate = 0.85;
            msg.lang = 'en-US';
            msg.voice = voices[1];
            window.speechSynthesis.speak(msg);

实际结果 - 打开网络浏览器并开始对话(有一个 html 文件) 我想要的预期结果 - 没有网络浏览器,打开文件时就说话(也许?)

Try Electron with a frameless transparent window.

Electron 为桌面应用程序打包了 Node 和 Chromium。

我刚刚试了一下,它对我有用:

git clone https://github.com/electron/electron-quick-start
# Go into the repository
cd electron-quick-start
# Install dependencies
npm install

编辑 renderer.js 并在上方插入您的代码。

编辑 main.js

中的 window
  mainWindow = new BrowserWindow({
      width: 800,
      height: 600,
      frame: false,
      transparent: true,
      webPreferences: {
         preload: path.join(__dirname, 'preload.js')
      }
  })

然后index.html

中的所有内容都留空