Aligneur-Syllabeur

Lectura Aligneur-Syllabeur

Aligneur grapheme-phoneme et syllabeur phonologique du francais

Presentation

Pivot central du pipeline Lectura. Module autonome, zero dependance Python. Realise l’alignement lettre-par-lettre entre orthographe et phonetique, construit les groupes de lecture en gerant les phenomenes de chaine parlee, et decompose chaque syllabe en ses constituants phonologiques.

C’est grace a cet aligneur que les corpus d’entrainement des modeles G2P et P2G ont ete prepares. Sans lui, rien n’aurait ete possible.


Ce que fait ce module

# Fonction Description
1 Groupes de lecture Regroupe les mots lies par elision, liaison ou enchainement
2 Alignement grapheme-phoneme Correspondance lettre-par-lettre entre orthographe et IPA
3 Lettres muettes et fusionnees Detecte les lettres silencieuses et les graphemes multi-phonemes (x→ks)
4 Syllabation ortho + phone Decoupe chaque groupe en syllabes au niveau phonetique ET orthographique
5 Attaque / Noyau / Coda Decompose chaque syllabe en ses constituants avec phonemes distribues
6 Spans Positions caractere de chaque syllabe, groupe et composant dans le texte source

Tester en ligne

Le test en ligne utilise l’API Lectura (G2P + Aligneur) — aucun telechargement necessaire.

Cliquez sur le bouton pour lancer la demo.

Exemples de code

Analyse d’un mot (API simple)

from lectura_aligneur import LecturaSyllabeur

syllabeur = LecturaSyllabeur()    # mode API par defaut
result = syllabeur.analyze("chocolat")

print(result.format_detail())
# chocolat -> /ʃɔkɔla/
#   σ1: /ʃɔ/ <<cho>> [0:3] att=ʃ noy=ɔ cod=-
#   σ2: /kɔ/ <<co>>  [3:5] att=k noy=ɔ cod=-
#   σ3: /la/ <<lat>>  [5:8] att=l noy=a cod=-

# Chaque syllabe expose son alignement grapheme-phoneme :
for s in result.syllabes:
    att = " ".join(f"{p.ipa}{p.grapheme}" for p in s.attaque.phonemes)
    noy = " ".join(f"{p.ipa}{p.grapheme}" for p in s.noyau.phonemes)
    print(f"  {s.ortho:6s} /{s.phone}/  att=[{att}] noy=[{noy}]  span={s.span}")

Analyse complete avec groupes de lecture

from lectura_aligneur import LecturaSyllabeur, MotAnalyse

syllabeur = LecturaSyllabeur()

# Mots annotes par le G2P (phone + liaison)
mots = [
    MotAnalyse(phone="lez", liaison="Lz"),    # les (liaison en z)
    MotAnalyse(phone="ɑ̃fɑ̃", liaison="none"),   # enfants
    MotAnalyse(phone="ʒu",  liaison="none"),    # jouent
]

result = syllabeur.analyser_complet(mots)

print(f"{result.nb_groupes} groupes, {result.nb_syllabes} syllabes")
print(f"Groupes : {result.format_ligne1()}")
print(f"Syllabes : {result.format_ligne2()}")
# 2 groupes, 4 syllabes
# Groupes : les enfants | jouent
# Syllabes : le.zɑ̃.fɑ̃ | ʒu

Avec Lectura G2P comme phonemiseur

from lectura_aligneur import LecturaSyllabeur
from lectura_nlp import creer_engine

g2p = creer_engine()    # mode API par defaut

class G2PPhonemizer:
    def predict(self, word):
        return g2p.analyser([word])['g2p'][0]

syllabeur = LecturaSyllabeur(phonemizer=G2PPhonemizer())

Architecture E1 / E2

Le module fonctionne en deux etapes, utilisables separement ou ensemble :

E1 — Groupes de lecture (construire_groupes)

Parcourt les mots annotes et les regroupe selon les phenomenes de chaine parlee :

  • Elision : l’enfant → 1 groupe
  • Liaison : les‿enfants → 1 groupe (consonne de liaison z, t, n, r, p)
  • Enchainement : avec‿elle → 1 groupe (consonne finale resyllabee)

E2 — Syllabation (syllabifier_groupes)

Pour chaque groupe :

  1. Syllabation IPA par modele de sonorite (5 classes : obstruantes, nasales, liquides, semi-voyelles, voyelles)
  2. Alignement DFS grapheme-phoneme avec detection des lettres muettes et fusionnees
  3. Construction des syllabes avec decomposition attaque/noyau/coda et correspondance grapheme

Structures de donnees

Classe Champs principaux Role
Syllabe phone, ortho, span, attaque, noyau, coda Syllabe decomposee avec alignement
GroupePhonologique phonemes[].phone, .grapheme Attaque, noyau ou coda d’une syllabe
Phoneme ipa, grapheme Phoneme individuel avec correspondance grapheme
ResultatAnalyse mot, phone, syllabes[] Analyse d’un mot
MotAnalyse token, phone, liaison, pos Mot annote par le G2P
GroupeLecture mots[], phone_groupe, jonctions[], span Groupe de lecture
ResultatGroupe groupe, syllabes[] Groupe syllabe
ResultatSyllabation groupes[], nb_syllabes, nb_groupes Resultat complet

Role dans le pipeline Lectura

L’Aligneur-Syllabeur est le pivot central de Lectura :

  1. Preparation des corpus — l’alignement grapheme-phoneme a permis de constituer les donnees d’entrainement des modeles G2P et P2G
  2. Lecture assistee — les groupes de lecture avec syllabes colorees sont la base de l’interface de lecture augmentee
  3. Synthese vocale — l’alignement et les spans permettent la synchronisation texte-audio

Installation

pip install lectura-aligneur       # mode API par defaut (zero dependance)

Phonemiseur pluggable : utilisable avec votre propre phonemiseur, eSpeak-NG, ou le module Lectura G2P. N’importe quel objet avec une methode phonemize(word) ou predict(word) est accepte.


Caracteristiques techniques

  • Zero dependance Python
  • Bi-modal : mode API (zero config) ou mode local avec donnees embarquees
  • Alignement DFS grapheme-phoneme avec gestion des lettres muettes et fusionnees
  • Modele de sonorite pour la syllabation (5 classes phonologiques)
  • Architecture E1/E2 : construction des groupes puis syllabation, utilisables separement
  • Phonemiseur pluggable : eSpeak-NG, Lectura G2P, ou tout objet compatible
  • Python 3.10+ avec type hints complets (PEP-561)
  • Double licence : AGPL-3.0 (libre) / Licence commerciale