Bug dans la prononciation des nombres négatifs


#1

Bonjour,

Je travaille toujours sur mon application de conversion d’unités et parfois l’assistant ne répond rien alors que les logs montrent que la conversion a été faite.

En fait c’est le TTS qui n’a pas apprécié :

Mar  9 12:17:47 snips-base snips-skill-server[1217]: INFO:snips_skill_server_lib::runner: [conversion][out] Ending session with message "-20 degré est égal à 253,15 kelvins "
Mar  9 12:17:47 snips-base snips-skill-server[1217]: INFO:snips_skill_server_lib::runner: [conversion][out] Action finished without error
Mar  9 12:17:47 snips-base snips-tts[501]: Invalid option -20 degré est égal à 253,15 kelvins: unknown option
Mar  9 12:17:47 snips-base snips-tts[501]: Usage: pico2wave <words>
Mar  9 12:17:47 snips-base snips-tts[501]:   -w, --wave=filename.wav     Write output to this WAV file (extension SHOULD
Mar  9 12:17:47 snips-base snips-tts[501]:                               be .wav)
Mar  9 12:17:47 snips-base snips-tts[501]:   -l, --lang=lang             Language (default: "fr-FR")
Mar  9 12:17:47 snips-base snips-tts[501]: Help options:
Mar  9 12:17:47 snips-base snips-tts[501]:   -?, --help                  Show this help message
Mar  9 12:17:47 snips-base snips-tts[501]:       --usage                 Display brief usage message
Mar  9 12:17:47 snips-base snips-audio-server[809]: ERROR:snips_audio_server_hermes  : could not play "b7e2e264-e928-4b36-b6d8-ee21d1a92ba2"
Mar  9 12:17:47 snips-base snips-audio-server[809]:  -> caused by: Failed to read enough bytes.
Mar  9 12:18:02 snips-base snips-dialogue[512]: INFO:snips_dialogue_lib::coordinator::coordinator: Session [eab32cf5-01b7-4407-bd73-635e399d513c]: closing session which was active: Timeout

Il prend “-20” pour une option sur la ligne de commande. On résout généralement ce genre de problèmes en passant "--" avant, mais ça peut déprendre de comment est fait le parsing des options.


#2

Bonjour,
Pourquoi ne pas remplacer tout simplement le caractère - par moins ?


#3

Bonjour!

Avez-vous essayé ceci dans snips.toml?

[snips-tts]
provider = “customtts”
customtts = { command = [“pico2wave”, “-w”, “%%OUTPUT_FILE%%”, “-l”, “en-US”, “--”, “%%TEXT%%”] }

S’il vous plaît, pardonnez mon français médiocre, je peux surtout le lire, mais pas l’écrire. :slight_smile:

S’il vous plaît, pardonnez moi pour anglaise: On second thought, I like ronroy’s suggestion better. What if it sees “-20” and reads “trait d’union vingt”? (or the proper translation of “hyphen”)


#4

Après quelques tests, le plus simple semble de remplacer le caractère - par le mot moins
autre solution, mettre avant le caractère -
Et comme le signale franc, le - est prononcé trait d’union, 1 - 1 sera prononcé un trait d’union un

Voici une doc intéressante sur pico : http://dafpolo.free.fr/telecharger/svoxpico/SVOX_Pico_Manual.pdf (voir à la page 71 pour les nombres en français)


#5

Merci pour vos réponses. L’idée était de remonter le bug à Snips, mais effectivement en attendant je vais “aider” PicoTTS à prononcer les nombres.

Et merci pour la doc, je vais pouvoir améliorer (ou simplifier) ce que j’avais commencé pour avoir une meilleure prononciation des nombres et heures.


#6

Hello tout le monde,

C’est un bug de picoTTS , pico2wave interprète le - comme un passage d’option de la ligne de commande.

Snips ne maintient pas pico TTS.
Néanmoins on va passer un patch pour ajouter un espace au début de la chaîne de charactère systématiquement. En attendant vous pouvez utiliser cette astuce de votre côté!

Bonne soirée !