Je ne suis pas spécialiste, du domaine, et encore moins spécialiste en langues.
Ceci dit, voici quelques idées :
-
Tu peux lire le contenu d'un dictionnaire de mot (tu peux en trouver facilement sur le net, qui contiennent des dizaines de milliers de mots français, parfois même conjugués), et tu répertories toutes les syllabes que tu croises : tu les découpes avec des règles explicites (propres au français), tu t'interdis de couper au milieu d'un ensemble de voyelles, tu coupes au milieu des consonnes lorsqu'il y a répétition (par exemple "ll" ou "mm") ou à la fin d'un groupe de voyelles, etc… tu obtiendras une liste de syllabes dont tu es sûr qu'elles sont prononçables puisque appartenant à la langue française, tu peux ainsi créer une base de données et chercher à "matcher" ces syllabes avec ta chaine de caractère : si tu trouves une syllabe dans ta base de données pour chaque ensemble de lettres (découpé de la façon qui te plaira) tu en concluras que ta chaine de caractère est prononçable.
Ici le seuil de tolérance est assez bas, car tu n'autorises pas des inventions peut-être prononçables mais présentes dans aucun mot : tu utilises une liste blanche.
-
Plutôt que d'identifier les motifs prononçables, tu identifies ceux qui en le sont pas, sur des critères heuristiques tels qu'une suite contigüe trop longue de voyelles ou de consonnes par exemple, ou certaines associations de consonnes qui ne fonctionnent pas. Ici le seuil de tolérance sera très élevé puisque tu fonctionnes par "liste noire".
Dans tout les cas, il faudra choisir un nombre de lettres pour servir à définir la taille de chacun de tes phonèmes : s'il est trop petit ton algo sera stupide car trop peu nuancé, s'il est trop élevé ton algo sera difficile à paramétrer car tu assisteras à une explosion combinatoire (tu as $26^N$ mots de N lettres sur un alphabet de 26 lettres).
Tu peux te ramener à un alphabet de 26 lettres en considérant que les "ç" sont identiques aux "s" dans certains contextes (avant des voyelles, mais pas à la fin d'un mot) ou les "é" les "è" et les "ê" identiques aux "e"…
Le principal problème de ton, euh.. problème, c'est pas tant l'algo que la définition précise de ce qui est "prononçable", car dans l'absolu, tout l'est, y compris "zlptfrrrnkv", mais ce qui va varier c'est la fluidité de prononciation, etc… voilà pourquoi j'ai une préférence pour la méthode numéro 1 qui fonctionne sur une base d'apprentissage, qui à rajouter des extensions "explicites" pour la rendre plus tolérante.
Tu peux construire un graphe, à l'aide d'un arbre lexicographique, des successeurs "habituels" de chaque lettre ou groupe de lettre (typiquement les essais montrent qu'un français, 3 lettres est ce qui marche le mieux), ainsi on ne trouve jamais de "r" après un "l" par exemple (bien que ce soit prononçable !).