node-red-contrib-tts-ultimate 3.2.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +151 -69
- package/img/audio-file.svg +8 -0
- package/img/logo-v2.svg +39 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,16 +1,35 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="img/logo-v2.svg" alt="TTS Ultimate" width="700">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://npmjs.org/package/node-red-contrib-tts-ultimate"><img src="https://img.shields.io/npm/v/node-red-contrib-tts-ultimate.svg" alt="NPM version"></a>
|
|
7
|
+
<a href="https://npmjs.org/package/node-red-contrib-tts-ultimate"><img src="https://img.shields.io/npm/dm/node-red-contrib-tts-ultimate.svg" alt="NPM downloads per month"></a>
|
|
8
|
+
<a href="https://npmjs.org/package/node-red-contrib-tts-ultimate"><img src="https://img.shields.io/npm/dt/node-red-contrib-tts-ultimate.svg" alt="NPM downloads total"></a>
|
|
9
|
+
<a href="https://github.com/Supergiovane/node-red-contrib-tts-ultimate/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License"></a>
|
|
10
|
+
<a href="https://standardjs.com"><img src="https://img.shields.io/badge/code_style-standard-brightgreen.svg" alt="JavaScript Standard Style"></a>
|
|
11
|
+
<a href="https://www.paypal.me/techtoday"><img src="https://img.shields.io/badge/Donate-PayPal-blue.svg?style=flat-square" alt="Donate via PayPal"></a>
|
|
12
|
+
<a href="https://www.facebook.com/supergiovaneDev"><img src="https://img.shields.io/badge/Visit%20me-Facebook-blue" alt="Visit me on Facebook"></a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<strong>Text-to-speech for Node-RED with Sonos, Google Cast, DLNA/UPnP and file-only output.</strong>
|
|
17
|
+
</p>
|
|
2
18
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
19
|
+
<p align="center">
|
|
20
|
+
<a href="#description">Description</a> ·
|
|
21
|
+
<a href="#supported-tts-engines">TTS engines</a> ·
|
|
22
|
+
<a href="#supported-players">Players</a> ·
|
|
23
|
+
<a href="#features">Features</a> ·
|
|
24
|
+
<a href="#tts-service-node">Configuration</a> ·
|
|
25
|
+
<a href="#ownfile-node-configuration">OwnFile</a>
|
|
26
|
+
</p>
|
|
10
27
|
|
|
11
|
-
<
|
|
28
|
+
<p align="center">
|
|
29
|
+
<img src="https://raw.githubusercontent.com/Supergiovane/node-red-contrib-tts-ultimate/master/img/main.png" width="82%" alt="TTS Ultimate Node-RED flow">
|
|
30
|
+
</p>
|
|
12
31
|
|
|
13
|
-
<details><summary>
|
|
32
|
+
<details><summary><strong>VIEW SAMPLE FLOW CODE</strong></summary>
|
|
14
33
|
|
|
15
34
|
> Adjust the nodes according to your setup
|
|
16
35
|
|
|
@@ -161,30 +180,95 @@
|
|
|
161
180
|
|
|
162
181
|
## DESCRIPTION
|
|
163
182
|
|
|
164
|
-
|
|
165
|
-
You can also generate an audio file for bluetooth speakers, web pages, etc.<br/>
|
|
166
|
-
You can also use it with **your own audio file** as well and it can be used **totally offline** even without the use of TTS, without internet connection.<br/>
|
|
167
|
-
The node can also create a **_TTS file (without the use of any Sonos device)_**, to be read by third parties nodes.<br/>
|
|
168
|
-
This is a major **_upgrade from the previously popular node SonosPollyTTS_** (SonosPollyTTS is not developed anymore).<br/>
|
|
183
|
+
TTS Ultimate transforms text into speech audio from Node-RED. It can play announcements directly on **Sonos** speakers, **Google Cast** devices (Chromecast / Google Nest) and generic **DLNA/UPnP** renderers such as smart TVs and AV receivers.
|
|
169
184
|
|
|
170
|
-
|
|
185
|
+
It can also work without any player: generate an audio file, cache it, and pass it to other nodes, web pages, Bluetooth workflows or third-party services. With the OwnFile node, you can upload and play your own audio messages and keep selected flows working completely offline.
|
|
171
186
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
</a>
|
|
176
|
-
<a href="https://cloud.google.com/text-to-speech" title="Google Cloud Text-to-Speech">
|
|
177
|
-
<img src="https://cdn.simpleicons.org/googlecloud/4285F4" height="126" alt="Google Cloud logo"/>
|
|
178
|
-
</a>
|
|
179
|
-
<a href="https://elevenlabs.io" title="ElevenLabs">
|
|
180
|
-
<img src="https://cdn.simpleicons.org/elevenlabs/000000" height="126" alt="ElevenLabs logo"/>
|
|
181
|
-
</a>
|
|
182
|
-
<a href="https://voice.ai/docs/api-reference/text-to-speech/generate-speech" title="Voice.ai">
|
|
183
|
-
<img src="https://voice.ai/favicon.ico" height="126" alt="Voice.ai logo"/>
|
|
184
|
-
</a>
|
|
185
|
-
</p>
|
|
187
|
+
This is a major upgrade from the previously popular **SonosPollyTTS** node, which is no longer developed.
|
|
188
|
+
|
|
189
|
+
## SUPPORTED TTS ENGINES
|
|
186
190
|
|
|
187
|
-
|
|
191
|
+
<table>
|
|
192
|
+
<tr>
|
|
193
|
+
<td align="center" width="25%">
|
|
194
|
+
<a href="https://www.npmjs.com/package/google-translate-tts" title="Google Translate TTS (free)">
|
|
195
|
+
<img src="https://cdn.simpleicons.org/googletranslate/4285F4" height="86" alt="Google Translate logo"/>
|
|
196
|
+
</a>
|
|
197
|
+
<br/>
|
|
198
|
+
<strong>Google free TTS</strong>
|
|
199
|
+
<br/>
|
|
200
|
+
<sub>No credentials required</sub>
|
|
201
|
+
</td>
|
|
202
|
+
<td align="center" width="25%">
|
|
203
|
+
<a href="https://cloud.google.com/text-to-speech" title="Google Cloud Text-to-Speech">
|
|
204
|
+
<img src="https://cdn.simpleicons.org/googlecloud/4285F4" height="86" alt="Google Cloud logo"/>
|
|
205
|
+
</a>
|
|
206
|
+
<br/>
|
|
207
|
+
<strong>Google Cloud TTS</strong>
|
|
208
|
+
<br/>
|
|
209
|
+
<sub>Advanced voices and tuning</sub>
|
|
210
|
+
</td>
|
|
211
|
+
<td align="center" width="25%">
|
|
212
|
+
<a href="https://elevenlabs.io" title="ElevenLabs">
|
|
213
|
+
<img src="https://cdn.simpleicons.org/elevenlabs/000000" height="86" alt="ElevenLabs logo"/>
|
|
214
|
+
</a>
|
|
215
|
+
<br/>
|
|
216
|
+
<strong>ElevenLabs</strong>
|
|
217
|
+
<br/>
|
|
218
|
+
<sub>V1 and V2 multilingual voices</sub>
|
|
219
|
+
</td>
|
|
220
|
+
<td align="center" width="25%">
|
|
221
|
+
<a href="https://voice.ai/docs/api-reference/text-to-speech/generate-speech" title="Voice.ai">
|
|
222
|
+
<img src="https://voice.ai/favicon.ico" height="86" alt="Voice.ai logo"/>
|
|
223
|
+
</a>
|
|
224
|
+
<br/>
|
|
225
|
+
<strong>Voice.ai</strong>
|
|
226
|
+
<br/>
|
|
227
|
+
<sub>API key based voices</sub>
|
|
228
|
+
</td>
|
|
229
|
+
</tr>
|
|
230
|
+
</table>
|
|
231
|
+
|
|
232
|
+
## SUPPORTED PLAYERS
|
|
233
|
+
|
|
234
|
+
<table>
|
|
235
|
+
<tr>
|
|
236
|
+
<td align="center" width="25%">
|
|
237
|
+
<a href="https://www.sonos.com" title="Sonos speakers">
|
|
238
|
+
<img src="https://cdn.simpleicons.org/sonos/000000" height="86" alt="Sonos logo"/>
|
|
239
|
+
</a>
|
|
240
|
+
<br/>
|
|
241
|
+
<strong>Sonos</strong>
|
|
242
|
+
<br/>
|
|
243
|
+
<sub>Native speakers and groups</sub>
|
|
244
|
+
</td>
|
|
245
|
+
<td align="center" width="25%">
|
|
246
|
+
<a href="https://developers.google.com/cast" title="Google Cast devices">
|
|
247
|
+
<img src="https://cdn.simpleicons.org/googlecast/4285F4" height="86" alt="Google Cast logo"/>
|
|
248
|
+
</a>
|
|
249
|
+
<br/>
|
|
250
|
+
<strong>Google Cast</strong>
|
|
251
|
+
<br/>
|
|
252
|
+
<sub>Chromecast and Google Nest</sub>
|
|
253
|
+
</td>
|
|
254
|
+
<td align="center" width="25%">
|
|
255
|
+
<a href="https://www.dlna.org" title="DLNA and UPnP renderers">
|
|
256
|
+
<img src="https://cdn.simpleicons.org/dlna/0066CC" height="86" alt="DLNA logo"/>
|
|
257
|
+
</a>
|
|
258
|
+
<br/>
|
|
259
|
+
<strong>DLNA / UPnP</strong>
|
|
260
|
+
<br/>
|
|
261
|
+
<sub>Smart TVs, AV receivers and renderers</sub>
|
|
262
|
+
</td>
|
|
263
|
+
<td align="center" width="25%">
|
|
264
|
+
<img src="img/audio-file.svg" height="86" alt="Audio file icon"/>
|
|
265
|
+
<br/>
|
|
266
|
+
<strong>No player</strong>
|
|
267
|
+
<br/>
|
|
268
|
+
<sub>Create an audio file only</sub>
|
|
269
|
+
</td>
|
|
270
|
+
</tr>
|
|
271
|
+
</table>
|
|
188
272
|
|
|
189
273
|
## CHANGELOG
|
|
190
274
|
|
|
@@ -192,24 +276,22 @@ This is a major **_upgrade from the previously popular node SonosPollyTTS_** (So
|
|
|
192
276
|
|
|
193
277
|
## FEATURES
|
|
194
278
|
|
|
195
|
-
- **Native Sonos support**:
|
|
196
|
-
- **Google Cast support
|
|
197
|
-
- **DLNA / UPnP renderer support**: play
|
|
198
|
-
- **
|
|
199
|
-
- **Google
|
|
200
|
-
- **Automatic grouping / multi-room
|
|
201
|
-
- **Automatic discovery
|
|
202
|
-
- **
|
|
203
|
-
- **TTS caching
|
|
204
|
-
- **
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
- BREAKING CHANGE: Amazon Polly and Microsoft Azure TTS have been removed due to lack of time to update the old and complex API's. Anyone can add these again by forking the project and do a PR. Thank you!. If you still need those TTS, please stay or revert to 2.0.10.<br/>
|
|
212
|
-
</p>
|
|
279
|
+
- **Native Sonos support**: play TTS audio directly via Sonos, group speakers, set a hailing sound and choose the volume for each speaker.
|
|
280
|
+
- **Google Cast support**: play announcements on Chromecast / Google Nest devices, including multi-room playback.
|
|
281
|
+
- **DLNA / UPnP renderer support**: play TTS on smart TVs, AV receivers and other UPnP renderers. Renderers with nested MediaRenderer devices are supported too.
|
|
282
|
+
- **File-only output**: create the TTS file without using any player, then pass it to other nodes or services.
|
|
283
|
+
- **Multiple TTS engines**: Google free TTS, Google Cloud TTS, ElevenLabs and Voice.ai voices are supported.
|
|
284
|
+
- **Automatic grouping / multi-room**: add additional players and play one announcement on several devices at once.
|
|
285
|
+
- **Automatic discovery**: find Sonos and DLNA/UPnP renderers via SSDP, and Google Cast devices via mDNS.
|
|
286
|
+
- **Music resume**: resume the previous queue after an announcement where supported. Some radio-station queues may not resume reliably because of Sonos API limitations.
|
|
287
|
+
- **TTS caching**: generated audio is downloaded once and then served from cache. The cache survives reboots and updates.
|
|
288
|
+
- **Offline-ready OwnFile playback**: upload custom audio messages and use them without an internet connection.
|
|
289
|
+
|
|
290
|
+
## BREAKING CHANGE
|
|
291
|
+
|
|
292
|
+
> **Version 3.0.0 - April 2025**
|
|
293
|
+
>
|
|
294
|
+
> Amazon Polly and Microsoft Azure TTS have been removed because the old APIs required a larger update. Contributions are welcome via fork and PR. If you still need those TTS engines, stay on or revert to `2.0.10`.
|
|
213
295
|
|
|
214
296
|
---
|
|
215
297
|
|
|
@@ -217,26 +299,26 @@ This is a major **_upgrade from the previously popular node SonosPollyTTS_** (So
|
|
|
217
299
|
|
|
218
300
|
> **_NOTE IF YOU CANNOT UPLOAD YOUR OWN FILES_**
|
|
219
301
|
>
|
|
220
|
-
> If you're running
|
|
221
|
-
> You may
|
|
302
|
+
> If you're running Node-RED as a plugin for Home Assistant, RedMatic, etc...<br/>
|
|
303
|
+
> You may not be able to upload your own files. Please check that the user running Node-RED has permission **to write to the filesystem**.<br/>
|
|
222
304
|
|
|
223
305
|
<br/><br/>
|
|
224
306
|
|
|
225
|
-
|
|
307
|
+
## TTS Service Node
|
|
226
308
|
|
|
227
309
|
Here you can set all parameters you need. All nodes will refer to this config node, so you need to set it only once.<br/>
|
|
228
310
|
IF YOU RUN NODE-RED BEHIND DOCKER OR SOMETHING ELSE, BE AWARE: <br/>
|
|
229
|
-
|
|
311
|
+
PORTS USED BY THE NODE ARE 1980 (DEFAULT, HTTP FILE SERVER) AND 1400 (FOR SONOS DISCOVERY). <br/>
|
|
230
312
|
PLEASE ALLOW MDNS AND UDP AS WELL
|
|
231
313
|
|
|
232
314
|
**TTS Service**<br/>
|
|
233
|
-
You can choose between Voice.ai,
|
|
315
|
+
You can choose between Voice.ai, ElevenLabs.io, Google (without credentials), and Google TTS (requires credentials and registration with Google).<br/>
|
|
234
316
|
For Google TTS Engine, you can choose pitch and speed rate of the voice.
|
|
235
317
|
<br/>
|
|
236
318
|
<br/>
|
|
237
319
|
|
|
238
320
|
- **TTS Service using Google (without credentials)**<br/>
|
|
239
|
-
This is the simplest way. Just select the voice and you're done. You don't need any credential and you don't even need to be registered to any
|
|
321
|
+
This is the simplest way. Just select the voice and you're done. You don't need any credential and you don't even need to be registered to any Google service. The voice list is more limited than other services, but it works without hassles.
|
|
240
322
|
Note: long texts are automatically split into 200-character chunks (Google Translate TTS limit) and merged into a single audio output.
|
|
241
323
|
Manual verify: `npm run verify:googletranslate-split -- --voice it-IT --text "..." --out ./out.mp3`
|
|
242
324
|
|
|
@@ -253,18 +335,18 @@ For Google TTS Engine, you can choose pitch and speed rate of the voice.
|
|
|
253
335
|
<br/>
|
|
254
336
|
|
|
255
337
|
- **TTS Service using ElevenLabs**<br/>
|
|
256
|
-
Please use the V2 engine, as the V1 is deprecated and will
|
|
257
|
-
You have two
|
|
258
|
-
After registration at
|
|
338
|
+
Please use the V2 engine, as the V1 is deprecated and will no longer be supported. The V2 has multilingual voices and is more powerful.<br/>
|
|
339
|
+
You have two choices: register to ElevenLabs, or do not register. If you don't register to ElevenLabs.io, you will either have access to a limited amount of voices, or no access at all.<br/>
|
|
340
|
+
After registration at ElevenLabs.io, you can add any language to your personal list. The personal list will then be shown in the node voice list.<br/>
|
|
259
341
|
<br/>
|
|
260
342
|
|
|
261
343
|
- **TTS Service using Voice.ai**<br/>
|
|
262
|
-
Add your Voice.ai API key in the config node, deploy and restart Node-RED. The node will load your available voices and show them in the Voice dropdown
|
|
344
|
+
Add your Voice.ai API key in the config node, deploy and restart Node-RED. The node will load your available voices and show them in the Voice dropdown.<br/>
|
|
263
345
|
Note: SSML is not supported by this engine.
|
|
264
346
|
<br/>
|
|
265
347
|
|
|
266
|
-
**Node-
|
|
267
|
-
|
|
348
|
+
**Node-RED IP**<br/>
|
|
349
|
+
Set IP of your Node-RED machine. Write **AUTODISCOVER** to allow the node to auto discover your IP.
|
|
268
350
|
|
|
269
351
|
**Host Port**<br/>
|
|
270
352
|
The players (Sonos, Google Cast, DLNA/UPnP renderers) will connect to this port to fetch the TTS audio. Default 1980. Choose a free port. Do not use 1880 or any other port already in use on your computer. The port must be reachable from the players on your network.
|
|
@@ -288,9 +370,9 @@ Leave this field blank for the default.<br/>
|
|
|
288
370
|
<br/>
|
|
289
371
|
<br/>
|
|
290
372
|
|
|
291
|
-
|
|
373
|
+
## TTS-Ultimate Node
|
|
292
374
|
|
|
293
|
-
|
|
375
|
+
### INPUT MESSAGES TO THE NODE <br/>
|
|
294
376
|
|
|
295
377
|
_Examples_
|
|
296
378
|
|
|
@@ -342,7 +424,7 @@ msg.stop = true;
|
|
|
342
424
|
return msg;
|
|
343
425
|
```
|
|
344
426
|
|
|
345
|
-
|
|
427
|
+
### CHANGE CONFIGURATION VIA MSG PROPERTY
|
|
346
428
|
|
|
347
429
|
You can change the configuration of tts-ultimate, _via msg.setConfig_ property.<br/>
|
|
348
430
|
The property is a JSON object.
|
|
@@ -504,7 +586,7 @@ return msg;
|
|
|
504
586
|
<br/>
|
|
505
587
|
<br/>
|
|
506
588
|
|
|
507
|
-
|
|
589
|
+
## OwnFile Node Configuration
|
|
508
590
|
|
|
509
591
|
<img src='https://github.com/Supergiovane/node-red-contrib-tts-ultimate/raw/master/img/of.png' width="80%">
|
|
510
592
|
|
|
@@ -622,7 +704,7 @@ return msg;
|
|
|
622
704
|
|
|
623
705
|
</details>
|
|
624
706
|
|
|
625
|
-
This node
|
|
707
|
+
This node allows you to upload your custom message and play it via TTS Ultimate without the need for an internet connection. You can use it, for example, with your alarm panel to announce a zone breach, a doorbell or similar events.
|
|
626
708
|
|
|
627
709
|
**Name**<br/>
|
|
628
710
|
Node name
|
|
@@ -634,13 +716,13 @@ Select a file to be played. You can upload one or multiple files at the same tim
|
|
|
634
716
|
If set to <b>true</b>, the OwnFile message will cancel the current TTS queue, will stop the current phrase being spoken and the TTS-Ultimate node will play this priority message.<br/>
|
|
635
717
|
Please refer to _msg.priority_ msg input property of TTS-Ultimate for info on how this message will be handled<br/>
|
|
636
718
|
|
|
637
|
-
|
|
719
|
+
### INPUT MESSAGE
|
|
638
720
|
|
|
639
721
|
**msg.payload = true**<br/>
|
|
640
722
|
Begin play of the message <br/>
|
|
641
723
|
|
|
642
724
|
**msg.selectedFile = "Garage door open"** <br/>
|
|
643
|
-
Overrides the selected message and plays the filename you passed in. Please double check the spelling of the filename (must be the same as you can see in the dropdown list of your own files, in the node config window) and do not include the <b>.mp3</b>
|
|
725
|
+
Overrides the selected message and plays the filename you passed in. Please double check the spelling of the filename (must be the same as you can see in the dropdown list of your own files, in the node config window) and do not include the <b>.mp3</b> extension.<br/>
|
|
644
726
|
|
|
645
727
|
**msg.priority**<br/>
|
|
646
728
|
If set to <b>true</b>, the OwnFile message will cancel the current TTS queue, will stop the current phrase being spoken and the TTS-Ultimate node will play this priority message.<br/>
|
|
@@ -649,7 +731,7 @@ Please refer to _msg.priority_ msg input property of TTS-Ultimate for info on ho
|
|
|
649
731
|

|
|
650
732
|
|
|
651
733
|
[license-image]: https://img.shields.io/badge/license-MIT-blue.svg
|
|
652
|
-
[license-url]: https://github.com/Supergiovane/node-red-contrib-tts-ultimate/master/LICENSE
|
|
734
|
+
[license-url]: https://github.com/Supergiovane/node-red-contrib-tts-ultimate/blob/master/LICENSE
|
|
653
735
|
[npm-url]: https://npmjs.org/package/node-red-contrib-tts-ultimate
|
|
654
736
|
[npm-version-image]: https://img.shields.io/npm/v/node-red-contrib-tts-ultimate.svg
|
|
655
737
|
[npm-downloads-month-image]: https://img.shields.io/npm/dm/node-red-contrib-tts-ultimate.svg
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">Audio file</title>
|
|
3
|
+
<desc id="desc">A document with an audio waveform, representing output without a player.</desc>
|
|
4
|
+
<rect width="128" height="128" rx="18" fill="#f3f6fb"/>
|
|
5
|
+
<path d="M36 18h38l22 22v70H36z" fill="#ffffff" stroke="#1f2937" stroke-width="6" stroke-linejoin="round"/>
|
|
6
|
+
<path d="M74 18v24h22" fill="none" stroke="#1f2937" stroke-width="6" stroke-linejoin="round"/>
|
|
7
|
+
<path d="M48 72v-8m12 22V50m12 42V58m12 26V66" fill="none" stroke="#2563eb" stroke-width="8" stroke-linecap="round"/>
|
|
8
|
+
</svg>
|
package/img/logo-v2.svg
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="210" viewBox="0 0 900 210" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">TTS Ultimate</title>
|
|
3
|
+
<desc id="desc">TTS Ultimate logo with a speech waveform mark and wordmark.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="markGradient" x1="16" y1="18" x2="172" y2="172" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop offset="0" stop-color="#ffb3f0"/>
|
|
7
|
+
<stop offset="0.5" stop-color="#f47adf"/>
|
|
8
|
+
<stop offset="1" stop-color="#d84fc2"/>
|
|
9
|
+
</linearGradient>
|
|
10
|
+
<linearGradient id="textGradient" x1="218" y1="70" x2="620" y2="70" gradientUnits="userSpaceOnUse">
|
|
11
|
+
<stop offset="0" stop-color="#f56bdd"/>
|
|
12
|
+
<stop offset="0.55" stop-color="#e24ac8"/>
|
|
13
|
+
<stop offset="1" stop-color="#b932a8"/>
|
|
14
|
+
</linearGradient>
|
|
15
|
+
<filter id="softShadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
16
|
+
<feDropShadow dx="0" dy="8" stdDeviation="9" flood-color="#172033" flood-opacity="0.16"/>
|
|
17
|
+
</filter>
|
|
18
|
+
</defs>
|
|
19
|
+
|
|
20
|
+
<rect x="10" y="10" width="880" height="190" rx="34" fill="#ffffff"/>
|
|
21
|
+
<rect x="10" y="10" width="880" height="190" rx="34" fill="none" stroke="#d9e1ef" stroke-width="2"/>
|
|
22
|
+
|
|
23
|
+
<g filter="url(#softShadow)">
|
|
24
|
+
<rect x="48" y="34" width="142" height="142" rx="36" fill="url(#markGradient)"/>
|
|
25
|
+
<path d="M78 106c15-24 36-36 61-36 18 0 33 6 46 18" fill="none" stroke="#ffffff" stroke-width="10" stroke-linecap="round"/>
|
|
26
|
+
<path d="M78 106c15 24 36 36 61 36 18 0 33-6 46-18" fill="none" stroke="#ffffff" stroke-width="10" stroke-linecap="round" opacity="0.92"/>
|
|
27
|
+
<path d="M86 108h12m15 18V90m17 54V72m17 62V82m17 38v-28" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
|
|
28
|
+
<circle cx="75" cy="106" r="8" fill="#ffffff"/>
|
|
29
|
+
<circle cx="186" cy="106" r="5" fill="#ffffff" opacity="0.8"/>
|
|
30
|
+
</g>
|
|
31
|
+
|
|
32
|
+
<g font-family="Inter, Avenir Next, Segoe UI, Arial, sans-serif">
|
|
33
|
+
<text x="220" y="100" fill="url(#textGradient)" font-size="62" font-weight="900" letter-spacing="3">TTS</text>
|
|
34
|
+
<text x="355" y="100" fill="#2a1830" font-size="62" font-weight="850" letter-spacing="2">ULTIMATE</text>
|
|
35
|
+
<text x="224" y="137" fill="#6f5574" font-size="24" font-weight="600" letter-spacing="1">NODE-RED TEXT TO SPEECH</text>
|
|
36
|
+
<path d="M224 153h312" stroke="url(#textGradient)" stroke-width="6" stroke-linecap="round"/>
|
|
37
|
+
<path d="M552 153h34" stroke="#ffb3f0" stroke-width="6" stroke-linecap="round"/>
|
|
38
|
+
</g>
|
|
39
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-red-contrib-tts-ultimate",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"description": "Transforms the text in speech and hear it using Sonos, Google Cast (Chromecast / Nest) or DLNA/UPnP players, or generate an audio file to be used with third parties nodes. Works with voices from Google (without credentials as well), Google TTS, ElevenLabs.io TTS, Voice.ai TTS or your own voice. You can also only create a TTS file to be read by third party nodes. Update of the popular SonosPollyTTS node.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -54,4 +54,4 @@
|
|
|
54
54
|
"engines": {
|
|
55
55
|
"node": ">=22.0.0"
|
|
56
56
|
}
|
|
57
|
-
}
|
|
57
|
+
}
|