Node-RED で音声読み上げ:自然なローカルの声で
Node-RED は、センサー、スマートホーム、チャットボット、業務システムを、キャンバス上の数本の線でつなぎます。音声はそこにぴったり合います。来客を知らせるドアセンサー、毎日の要約を読み上げるフロー、作業場のスピーカーから流れる倉庫のアラート。
無料の SuperClonica エンジンは、Node-RED のそばで小さなHTTPサーバーとして動き、自分のハードウェアでテキストを自然な音声に変えます。このガイドでは、フローをノードごとに示し、音声の使い道を紹介します。
読み上げられること
Node-RED がデータを運び、SuperClonica が自分のネットワーク内でテキストを音声に変えます。
- センサーやスマートホームのイベントからのお知らせ。
- ほかのノードでまとめた毎日の要約。
- 工場、倉庫、オフィスのスピーカーでのアラート。
- ボイスメッセージを送るチャットボット用のメッセージ。
声を無料で選ぶ
どの声のページでも、よくあるお知らせを30〜100文字で入力し、言語を選んで生成ボタンを押します。数秒でフローの聞こえ方が分かります。アカウントは不要です。
フローを組む
Node-RED も Docker で動かしているなら、両方のコンテナを同じネットワークにつなぎ、localhost の代わりに http://tts:8000 を使います。
- 同じマシンかネットワークでサーバーを起動:docker run -d --name tts -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu。
- function か change ノードで、msg.payload を {"text": "玄関に誰かが来ています", "voice": "F1", "lang": "ja"} のようなオブジェクトにします。
- 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 ヘッダーで送ります。
声と誠実さ
モデル標準の10音声 M1〜M5・F1〜F5 は無料です。自分だけの声が欲しければ、同意を得た話者の録音から SuperClonica のスタジオで学習させましょう。大事な場面ではお知らせが機械生成であることを伝え、実在の人物をまねた声で読み上げを自動化することは絶対にやめましょう。