ddavout / FESTIfr

https://github.com/ddavout/FESTIfr
0 stars 0 forks source link

Comment ajouter la prononciation d'une forme verbale ? #15

Closed ddavout closed 5 months ago

ddavout commented 5 months ago

(lex.lookup_all "c'était") donne nil ! et pourtant (utt.flat_repr !) est conforme ... à ce que j'entends

je me doute que l'artillerie de _pre_hook_ utilisée dans INST_LANG_lex.scm, a quelque influence.

j'essaie quand même, pour voir (et surtout entendre...)

(lex.add.entry '( "c'était" VER ((("s" "e") 0) (("t" "w" "a") 0)))) (SayText "c'était pas ce que je voulais")

j'ai essayé aussi (lex.add.entry '( "c'était_VER" VER ((("s" "e") 0) (("t" "w" "a") 0))))

sans succès.

ddavout commented 5 months ago

En fait, il y avait un bogue.. avec les apostrophes et maintenant c'est plus simple Prenons l'exemple d'un mot qui se prononce mal en supposant qu'il n'y ait pas une entrée non satisfaisante dans un lexique

(SayText "vous n'arrivez pas souvent à l'heure)

n'arrivez est prononcé sans qu'on entende le son ( n a ) Avec un peu de verbose :

festival> (set! verbose_supra_lts t)
t

Invoquez notre procédure lts_brut

festival> (lts_brut "n'arrivez" "VER")
#n'arrivez#supra_lts: no strict result
 nous vous proposerons quelque chose comme
 (lex.add.entry '("n_arrivé" "VER" ((("a") 0) (("rh" "i") 0) (("v" "e") 0))))
("n'arrivez" "VER" ((("a") 0) (("rh" "i") 0) (("v" "e") 0)))

et vous constaterez, qu’effectivement la LTS a mal deviné, vous corrigerez avec

(lex.add.entry '("n_arrivé" "VER" (((n "a") 0) (("rh" "i") 0) (("v" "e") 0))))

Par prudence, vous testerez dans un terminal festival, avant d'introduire l'entrée dans un addenda car comme chacun sait ( et il en est qui savent mieux...), on n'est pas (je ne suis pas) à l'abri des fautes de frappe:

Si cela ne change rien

Excluant ... un bogue,

c'est qu'il existe une autre entrée qui prend le dessus

Cela peut-être parce que vous n'avez pris l'addenda qui, étant chargé en dernier, domine les autres. OU c'est qu'il existe une entrée qui prend le dessus, car elle insiste en précisant le POS deux fois ! On a à notre disposition, outre les entrées normales, , pur jus Festvox , comme

(lex.add.entry '("XXX" "VER" (((n "a") 0) (("rh" "i") 0) (("v" "e") 0))))

des entrées comme

(lex.add.entry '("XXX_VER" "VER" (((n "a") 0) (("rh" "i") 0) (("v" "e") 0))))

Elles font parties de notre panoplie, pour distinguer des homophones n'ayant pas la même fonction.


festival> (lex.lookup "sens" "VER")
            prehook sens VER
("sens_VER" VER ((("s" "ahn") 0)))
festival> (lex.lookup "sens" "NOM")
            prehook sens NOM
("sens_NOM" NOM ((("s" "ahn" "s") 0)))

Et si cela ne change toujours rien

C'est que le poslex ne devine pas bien le POS de votre mot dans le contexte dans lequel vous l'utilisez.

Poslex fait ce qu'il peut .. mais

Envoyez-nous vos cas récalcitrants, on a quand même quelques outils pour parer les insuffisances de poslex même si nous excluons de refondre Poslex avant un temps certain. (On se référa au travail des catalans avec Festcat pour se convaincre de la difficulté de la tâche, est-ce un hasard si je n'ai pas encore trouvé d'autres langues festival, hormis les anglophones élaborées par Festival, qui utilisent cet outil)