指南

Node-RED 文字转语音:用本地的自然声音

Node-RED 只需在画布上连几根线,就能把传感器、智能家居、聊天机器人和业务系统连接起来。语音在这里非常合适:门磁传感器播报访客、流程朗读每日摘要、仓库警报从车间喇叭里响起。请注意:Supertonic 3 暂不支持中文,可朗读英语、日语、韩语等 31 种语言。

免费的 SuperClonica 引擎作为一个小型 HTTP 服务器运行在 Node-RED 旁边,在你自己的硬件上把文本变成自然的语音。本指南逐个节点介绍流程,以及如何处理生成的音频。

可以播报什么

Node-RED 负责传递数据,SuperClonica 在你的网络中把文本变成语音。

  • 来自传感器和智能家居事件的播报。
  • 由其他节点汇总出的每日摘要。
  • 工厂、仓库或办公室喇叭里的警报。
  • 为会发送语音消息的聊天机器人生成消息。

免费挑选声音

在任意声音页面输入一条典型的播报,30 到 100 个字符,选择语言并点击生成按钮。几秒后就能听到流程的效果,无需注册。

搭建流程

如果 Node-RED 也运行在 Docker 中,把两个容器放进同一个网络,用 http://tts:8000 代替 localhost。

  • 在同一台机器或同一网络中启动服务器:docker run -d --name tts -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu。
  • 在 function 或 change 节点中,把 msg.payload 设为一个对象,例如 {"text": "Someone is at the front door", "voice": "F1", "lang": "en"}。
  • 添加 http request 节点:方法 POST,URL 为 http://localhost:8000/synthesize,返回二进制缓冲区;对象类型的 payload 会自动以 JSON 发送。
  • 节点会把 WAV 作为 msg.payload 中的缓冲区交给下一个节点。

保存或播放音频

write file 节点可以把缓冲区保存为 WAV,例如 /data/tts/door.wav。在带音箱的 Linux 机器上,exec 节点可以用 aplay 播放;对于智能音箱,可以把文件交给智能家居系统,或通过 HTTP 提供。固定的语句只需生成一次并重复使用文件,只朗读变化的部分。如果其他机器也能访问服务器,请设置 SUPERCLONICA_API_KEY,并在 Authorization 请求头中发送。

声音与诚实

模型自带的十个标准声音 M1–M5、F1–F5 免费;想要自己的声音,可以用征得同意的说话人录音在 SuperClonica 工作室训练。在重要的场合说明播报由机器生成,绝不要用模仿真实人物的声音自动生成语音。