Closed bs-eng closed 4 months ago
Hi for other TTS engines, i've takein it into consideration. For googletts engine, i don't remember what i've done and why, i'll take a look ASAP.
Hi The node isn't mean to be used as a batch file generator. You're changing the voiceID too quickly. The voiceID is a node variable. If you change the voiceID while the queuing system is still reading the queue, you're getting weird behaviour. You must send a msg to the TTS node, wait until the node have wrote the file, then send the next msg. In your flow, you must send the first 4 messages, then wait until the TTS node finished handling it (wait for the output msg.payload TRUE), then send the next 4 messages having a different voiceID.
Hi! Ok, I understand the batch part. I can change that in my flow. How about using the offline files later? If the voice changed in between, then the files always get overwritten? I am aksing because it means I cannot rely on the offline files, as I will never know which voiceId created them.
Hi the files remain in the folder forever. The node's goal is to never ask the cloud again after the file has been created. The filenames are created based on a combination of text to be spoken and voiceID, then hashed with MD5
Hi Giovane! Thanks a lot for your qucik replies! This morning I ran another test and can confirm, that voice is encoded into the file name. Condition is that the node has time to finish handling audios before getting a new voice setting. Cheers JR
Hi Giovane!
I believe this is rather a feature request, then a bug.
State of things now After testing sending many texts to the tts-node I noticed, that the output file name seems to depend only on the text which was converted to speech. That means if I send a text with e.g. a female voice and then a male voice, the file in directory
.node-red/sonospollyttsstorage/ttsfiles
gets overwritten. Combined with the fact, that the tts-node outputs the requests as an array (if input number is larger and fast) there is no chance to grab the file before it gets overwritten with the other voice.To Reproduce Here is a sample flow to reproduce the behaviour. It inputs 4 text lines and attempts to send those 4 text lines to the tts-node with female and male voiceId. Thus expected are 8 files in
.node-red/sonospollyttsstorage/ttsfiles
. However there are only 4 files and after checking them, they are all male (which was the second voice that got used). So the female voice files got overwritten by the male voice files.Expected behavior If the voice string could be somehow included in order to differentiate those files by voice, that would be great. Looking at the speed that google is adding more and more voices for different use cases, but same language, I believe this feature will be very helpful also to others.
TTS-Ultimate Version
Are you running node-red behind homematic, docker or anything similar? Node-Red is running alone on small linux server
Thanks a lot for looking into this! Cheers JR