Convertir du texte en phonème en Python

Phonémisation simple de mots et de textes dans de nombreuses langues

Photo de Denisse Leon sur Unsplash

En lisant cet article, vous apprendrez à convertir une chaîne de texte d'entrée en ses phonèmes correspondants en Python. Un phonème représente la plus petite unité sonore d'une langue. Par exemple, le mot

tab

/t/ /a/ /b/

  • étiquette
  • bronzer
  • robinet
  • /t/ /a/ | /b/
    --------|----
    /t/ /a/ | /g/
    /t/ /a/ | /n/
    /t/ /a/ | /p/
    

aɪ pʰiː eɪ

"simple convertisseur de texte en téléphones pour plusieurs langues."

Passez à la section suivante pour installer tous les modules nécessaires.

Installer

Depuis la version 3.2.0, le phonemizerpackage prend en charge le backend suivant :

  • espeak-ng— un système Text-to-Speech (TTS) basé sur la sortie IPA. Il prend en charge plus de 100 langues.
  • espeak-ng-mbrola— une version alternative d'espeak qui utilise l'alphabet phonétique SAMPA au lieu d'IPA. De plus, il ne conserve pas les limites des mots pour la sortie.
  • festival— un système TTS alternatif pour l'anglais américain. Il prend en charge la tokenisation au niveau des syllabes.
  • segments - un tokenizer Unicode qui convertit le graphème en phonème sur la base d'un fichier de mappage défini par l'utilisateur.

Debian/Ubuntu

Vous pouvez facilement l'installer comme suit :

sudo apt-get install espeak-ng

Sur le système d'exploitation CentOS ou Fedora, l'installation se fait via la yumcommande à la place :

sudo yum install espeak-ng

Pour les utilisateurs de macOS, vous pouvez l'installer via brew:

brew install espeak

Sur le système d'exploitation Windows, vous pouvez l'installer via un programme d'installation. Rendez-vous simplement sur la page des versionsmsi et téléchargez le programme d' installation souhaité . Ensuite, exécutez-le pour l'installer sur votre machine.

Notez que mbrola n'est pas disponible pour Windows.

Paquet Python

Il est fortement recommandé de créer un nouvel environnement virtuel avant de poursuivre l'installation.

Une fois que vous avez terminé, activez l'environnement virtuel et exécutez la commande suivante pour installer phonemizer:

pip install phonemizer

git clone https://github.com/bootphon/phonemizer
cd phonemizer
python setup.py install

Le package phonemizer est également livré avec sa propre configuration de docker. Vous pouvez créer une image Docker via les commandes suivantes :

git clone https://github.com/bootphon/phonemizer
cd phonemizer
sudo docker build -t phonemizer .

sudo docker run -it phonemizer /bin/bash

phonemize --version

phonemizer-3.2.0
available backends: espeak-ng-1.49.2, segments-2.2.0
uninstalled backends: espeak-mbrola, festival

Créez un nouveau fichier Python appelé main.pyet ajoutez-y le code suivant :

Tout ce que vous avez à faire est d'importer la phonemizefonction et de lui transmettre une chaîne ou une liste de chaînes. Si vous transmettez une chaîne, il renverra une chaîne. L'exemple ci-dessus utilise une liste de chaînes et le résultat attendu est le suivant :

['həloʊ wɜːld ', 'wɛlkʌm tə miːdiəm ']

De plus, la phonemizefonction accepte également les arguments suivants :

  • language(str) — l'identifiant de langue basé sur le backend pris en charge. Pour espeakle backend, vous pouvez trouver toutes les langues prises en charge sur le lien suivant . En ce qui concerne segmentsle backend, la langue est le chemin du fichier pour le mappage des graphèmes aux phonèmes.
  • backend(str) - le backend souhaité pour la phonémisation. Il doit s'agir de l'une des options suivantes : espeak, ou .espeak-mbrolafestivalsegments
  • separator( Objet Separator ) — les séparateurs de chaîne entre les phonèmes, les syllabes et les mots. Différents backends prennent en charge différents types de séparateurs.
  • strip(bool) - par défaut à False, qui affichera le dernier mot et les séparateurs de téléphone d'un jeton.
  • preserve_empty_lines(bool) — s'il faut conserver les lignes vides dans la sortie finale. La valeur par défaut Falseest , ce qui supprimera toutes les lignes vides.
  • preserve_punctuation(bool) — s'il faut conserver les signes de ponctuation dans la sortie finale. La valeur par défaut Falseest , ce qui supprimera tous les signes de ponctuation.
  • punctuation_marks(str ou re.Pattern) — une chaîne ou une expression régulière représentant les signes de ponctuation à prendre en compte lors de la suppression ou de la conservation.
  • with_stress(bool) — s'il faut conserver les accents sur les phonèmes. Par défaut Falseet uniquement applicable pour le espeakbackend.
  • njobs(int) — le nombre de tâches parallèles pendant l'exécution.

Examinez les exemples de sorties suivants basés sur différents arguments d'entrée :

['həloʊ wɜːld ', 'wɛlkʌm tə miːdiəm ']
# strip=True
['həloʊ wɜːld', 'wɛlkʌm tə miːdiəm']
# preserve_punctuation=True
['həloʊ, wɜːld! ', 'wɛlkʌm tə miːdiəm! ']
# with_stress=True
['həlˈoʊ wˈɜːld ', 'wˈɛlkʌm tə mˈiːdiəm ']

Notez que l'initialisation du backend de phonomisation est un processus coûteux. Vous devez créer une grande liste avant d'appeler la phonemizefonction. N'appelez pas la fonction à l'intérieur d'une compréhension de liste. L'erreur est indiquée ci-dessous :

# Bad code
phonemized = [phonemize(x, language='en-us', backend='espeak') for x in text]
# Good code
phonemized = phonemize(text, language='en-us', backend='espeak')

Ce faisant, vous pouvez réutiliser la même instance et simplement appeler la backend.phonemizefonction sur les entrées suivantes.

Conclusion

Récapitulons ce que nous avons appris aujourd'hui.

Cet article a commencé par une brève explication des phonèmes et de l'alphabet phonétique international (IPA).

Ensuite, il a expliqué comment installer espeaket phonemizersur notre machine.

Par la suite, il est passé au concept fondamental derrière le phonemizer paquet. Il a également mis en évidence certains des arguments les plus couramment utilisés. Dans la dernière section, il a fourni quelques trucs et astuces pour optimiser l'exécution lors de l'utilisationphonemizer.

Merci d'avoir lu cet article. Bonne journée à venir !

Références

  1. GitHub — phonographe
  2. Documentation — phonémiseur

Suggested posts

Repenser les médias : les cinq vérités de McChesney et l'avenir des communications

Dans le monde hyper-connecté d'aujourd'hui, les systèmes médiatiques jouent un rôle central dans la formation de l'opinion publique et, par conséquent, dans la prise de décision démocratique. Dans son analyse approfondie de l'économie politique de la communication, le chercheur Robert McChesney remet en question la sagesse conventionnelle et présente ce qu'il appelle les « cinq vérités » sur les médias.

Rassembler OSINT pour la chasse aux menaces

Rassembler OSINT pour la chasse aux menaces

Salut les cyber-amateurs ! Bienvenue à nouveau dans la série OSINT pour la chasse aux menaces. Dans le premier article, je vous ai donné un aperçu d'OSINT et de son importance dans la chasse aux menaces.

Related posts

L'érosion lente : dévoiler les façons dont les gens perdent leur carrière

L'érosion lente : dévoiler les façons dont les gens perdent leur carrière

Dans le monde rapide et compétitif d'aujourd'hui, la carrière d'une personne joue un rôle important dans la croissance personnelle, la stabilité financière et la satisfaction globale de la vie. Cependant, de nombreuses personnes se retrouvent prises dans un cycle incessant de stagnation et d'insatisfaction, dépérissant progressivement dans leur vie professionnelle.

Le meurtre de Jordan Neely et le problème du racisme « patriotique »

Les États-Unis peuvent-ils prendre la mesure essentielle de ne pas assimiler un comportement raciste au fait d'être un bon Américain ?

Le meurtre de Jordan Neely et le problème du racisme « patriotique »

[Alerte de déclenchement : cet essai comprend des captures d'écran de personnes faisant l'éloge du meurtrier de Jordan Neely.] Les responsables de l'application des lois ont finalement - et peut-être à contrecœur - inculpé Daniel Penny, l'homme qui a étouffé Jordan Neely jusqu'à sa mort, pour cet homicide.

La persécution des chrétiens : le crime de haine dont nous ne parlons pas

Oubliez l'islamophobie : les chrétiens (et les juifs) sont les principales victimes des crimes de haine religieuse.

La persécution des chrétiens : le crime de haine dont nous ne parlons pas

Tout esprit rationnel sait que les milieux politiques et médiatiques sont dominés par la gauche, voire l'extrême gauche, un état de fait qui crée un déséquilibre dans le discours politique. Dans le domaine religieux, ce déséquilibre est bien visible : les journaux et les réseaux de gauche ne se précipitent pas pour défendre la foi chrétienne.

3 façons éprouvées d'améliorer vos compétences en écriture

Les avantages de l'écriture et les stratégies pour vous aider à le faire

3 façons éprouvées d'améliorer vos compétences en écriture

En 2022, avec la sortie de GPT-3, la compétence en écriture semble devenir moins importante. Avec l'IA, les personnes ayant une mauvaise écriture peuvent également générer du personnel de qualité.