Skip to main content

fongbe_g2p

Conversion graphème → phonème pour le fongbe à base de règles. Sortie en IPA avec marques de ton, prête pour un front-end TTS ou une lexique de prononciation.

Bibliothèque standard Python uniquement — aucune dépendance.

from fongbe_g2p import g2p, apply_sandhi

g2p("gbɛtɔ́")            # 'ɡ͡b ɛ˧ t ɔ˥'      (personne)
g2p("kpɔ́n")             # 'k͡p ɔ̃˥'          (regarder — nasalisation)
g2p("vodúngbe")          # 'v o˧ d ũ˥ ɡ͡b e˧'  (dimanche)
g2p("Mawu", sep="")      # 'm a˧w u˧'
g2p("gbɛtɔ́", with_tone=False)   # 'ɡ͡b ɛ t ɔ'

Ce que fait le module

Digraphes gb → ɡ͡b, kp → k͡p, ny → ɲ (segmentation par plus longue correspondance)
Voyelles orales a e ɛ i o ɔ u
Nasalisation contextuelle Vn → Ṽ quand n clôt la syllabe ; n devant voyelle reste une consonne, et ny n'est jamais nasalisant
4 tons haut ˥ (aigu), moyen ˧ (non marqué), bas ˩ (grave), modulé ˩˥ (caron)
Homoglyphes ε→ɛ, Đ/đ/ð→ɖ, ọ→ɔ, ẹ→ɛ, ɩ→i… normalisés en entrée
r → l conformément à la note du document source

Les tons sont lus via une décomposition NFD : la voyelle et sa marque de ton sont traitées séparément, donc rien n'est perdu quel que soit l'encodage de l'entrée.

Sandhi tonal

sandhi_fongbe.py implémente la règle contextuelle la plus déterministe :

Dans une succession de tons bas, seul le dernier reste bas ; les autres remontent au ton moyen. → B B B devient M M B

apply_sandhi("è kò nù")   # 'e ko nù'

Les résolutions du ton modulé (V→H ou V→B) dépendent du contexte grammatical (impératif, pronom, négation, composition) et ne sont pas déductibles de la seule orthographe : elles sont laissées inchangées, volontairement.

Cette partie est bien moins mûre que le G2P — voir Limites connues pour son apport réellement mesuré.

Pour valider la règle sur un corpus de paires citation → réalisé :

python -m fongbe_g2p.validate_sandhi mes_paires.tsv
# format : 'citation<TAB>réalisé' ou 'réalisé ---> citation'

Le document source n'est pas redistribué ici (voir NOTICE.md), il faut donc fournir son propre fichier.

Installation

pip install fongbe-g2p

Ou depuis les sources :

git clone https://github.com/Arnel7/fongbe-g2p.git
cd fongbe-g2p
pip install -e .

Tests

pip install -e ".[dev]"
pytest

33 tests, sans fichier de données : digraphes, nasalisation, les 4 tons, homoglyphes, robustesse (chaîne vide, caractère inconnu, marque combinante orpheline), couverture de l'inventaire, sandhi, non-régression.

pytest et ruff ne servent qu'au développement — le paquet lui-même n'a aucune dépendance d'exécution.

Couverture mesurée

Sur des corpus fongbe réels (transcriptions de parole, jeux de Q&A, corpus parallèle), après normalisation NFD :

corpus caractères non gérés
corpus assemblé 2 423 023 0
transcriptions de parole 105 354 0
Q&A 821 345 14
corpus parallèle 2 095 512 15 610

Les seuls caractères non traités sont étrangers au fongbe (q, œ, écritures non latines) : ils proviennent de passages en français ou de bruit de corpus, et sont laissés tels quels en sortie.

Limites connues

⚠️ ˧ veut dire « moyen » ou « aucune information »

Le fongbe note le ton moyen par l'absence de marque. Ce module ne peut donc pas distinguer une voyelle réellement au ton moyen d'une voyelle dont le ton n'a simplement pas été écrit — les deux sortent en ˧.

C'est décisif en pratique, parce que beaucoup de texte fongbe est sous-toné. Part des voyelles émises en ˧ faute de marque, mesurée sur les mêmes corpus :

corpus voyelles en ˧ par défaut
transcriptions de parole 88,5 %
corpus parallèle 78,4 %
Q&A 55,7 %

Conséquence : si vous entraînez un TTS directement sur cette sortie, le modèle apprend du bruit tonal sur la majorité des voyelles. Faites passer votre texte par une étape de restauration de tons avant le G2P, ou n'utilisez que du texte intégralement toné.

Sandhi : un brouillon, pas une implémentation complète

Une seule règle est implémentée, et son apport mesuré est modeste : 60,5 % → 62,0 % de tons corrects sur 71 paires citation → réalisé, soit +1,5 point. Les résolutions du ton modulé, qui dépendent du contexte grammatical, ne sont pas traitées du tout. À considérer comme une base de travail, pas au même niveau de fiabilité que le G2P.

Autres

  • Les règles viennent d'une description orthographique, pas de mesures acoustiques ; elles n'ont pas été validées par un locuteur natif. Les retours sont bienvenus.
  • L'orthographe fongbe connaît plusieurs traditions : certaines sources notent le ton bas par un accent grave, d'autres le laissent non marqué (fusionné avec le moyen). Ce module suit la première. Un texte de la seconde tradition sera lu avec des tons moyens là où un ton bas est attendu.

Licence et sources

Code sous licence MIT (LICENSE). Voir NOTICE.md pour l'attribution des sources linguistiques.

Release files for fongbe-g2p 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fongbe-g2p 0.1.0
File Size Uploaded
fongbe_g2p-0.1.0.tar.gz 10.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fongbe-g2p 0.1.0
File Interpreter ABI Platform
fongbe_g2p-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.5 kB

Release files / fongbe_g2p-0.1.0.tar.gz

Download URL fongbe_g2p-0.1.0.tar.gz
Size 10.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1eed3002b9cd9629e9bfee54b7201f3ebf6e15d51e94bfbadb47f4f0e6c4e13d
BLAKE2b-256 checksum
How to use checksums
3aa5c43994a45a1d5f8f482a6992661023f217b97f0a21202dc69fabdb37411a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.11

Release files / fongbe_g2p-0.1.0-py3-none-any.whl

Download URL fongbe_g2p-0.1.0-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
33d1c18210ac61117cba2b6d5213017fa658ec1060af29ea964f5ad4189d066e
BLAKE2b-256 checksum
How to use checksums
807285e6989771819e19cde565f5e27edb648ef9a04519b2660f05ebe7fde562
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.11

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page