Balabolka

Le logiciel Balabolka permet la conversion du texte en paroles (Text-To-Speech, TTS). Tous les synthétiseurs vocaux installés sur votre système sont utilisables par Balabolka. Pour ouvrir un fichier dans le programme, il suffit de sélectionner « Ouvrir » dans le menu « Fichier ». Pour créer un nouveau document texte, sélectionnez « Nouveau » dans le menu « Fichier ».

La lecture est contrôlable à l’aide des boutons standards trouvés dans tout programme multimédia (« lire », « pause », « arrêter ») qui sont sur la barre d'outils située en haut du programme Balabolka. Le programme peut :

  • lire à haute voix le contenu du presse-papiers ;
  • afficher le contenu des fichiers AZW, AZW3, CHM, DjVu (DjVu+OCR), DOC, DOCX, EML, EPUB, FB2 (FB2.ZIP, FBZ), FB3, HTML, LIT, MD, MOBI, ODP, ODS, ODT, PDB, PDF, PPT, PPTX, PRC, RTF, TCR, WPD, XLS et XLSX ;
  • personnaliser la police de caractères et la couleur de fond ;
  • gérer la lecture depuis les outils système ou par les touches de raccourci globales ;
  • lire un texte tapé sur le clavier ;
  • vérifier l’orthographe ;
  • découper un fichier texte en plusieurs petits fichiers ;
  • comparer 2 fichiers.

Balabolka permet de supprimer tous les traits d'union à la fin des lignes, ce qui permet d’éviter des arrêts lors de la lecture des mots.

Le texte à l'écran peut être enregistré sous des fichiers de type WAV, MP3, MP4, OGG, OPUS ou WMA ; il faut sélectionner dans le menu « Fichier | Enregistrer le fichier audio » ou « Fichier | Fractionner et convertir en fichier audio ». On peut convertir une liste de fichiers texte en fichiers audio (élément du menu « Outils | Convertir la liste de fichiers » ).

Le logiciel Balabolka peut enregistrer un texte synchronisé sous des fichiers de type LRC ou des balises ID3 à l’intérieur des fichiers audio de type MP3. Lors d’une lecture de ces fichiers audio avec un médiaplayeur sur un ordinateur ou un playeur digital moderne le texte s’affiche synchroniquement (ainsi que les textes des chansons de fichiers musicaux).

Le programme peut utiliser différentes versions de Microsoft Speech API (SAPI) et Microsoft Speech Platform. Ce qui permet de modifier les paramètres de la parole, y compris le débit et le timbre.

L'utilisateur peut se servir d’une liste de remplacements pour améliorer la qualité de l'articulation vocale. Cette fonction est utile si vous voulez modifier l'orthographe des mots ou des syllabes individuelles. Balabolka utilise deux types de listes de remplacements :

  • la correction de l’articulation basée sur la syntaxe des expressions régulières ; les règles de la correction sont enregistrées sous les fichiers avec l'extension *.rex ;
  • les fichiers avec l'extension *.dic ; ce format est courant en Europe de l'Est : la syntaxe des règles simplifiée, les fichiers peuvent contenir des milliers de règles.

Les fichiers contenant les listes de remplacements sont sauvegardés dans le dossier Documents\Balabolka (ou Mes Documents\Balabolka dans Windows XP). Si un dictionnaire pour corriger l’articulation est utilisé, le programme met en lumière une phrase ou un paragraphe entier lors de la lecture, sinon ce n’est que le mot en cours qui est mis en lumière.

Note. En version portable les dictionnaires sont sauvegardés dans le sous-dossier Dictionnaires du dossier de programme.

* Balabolka est un mot russe qui peut être traduit par « moulin à paroles ».

WWW: balabolka.site

E-mail : crossa@list.ru

© 2006-2020 Ilya Morozov


Synthétiseurs vocaux (voix)

Speech Application Programming Interface ou SAPI est un paquet de fonctions vocales qui a été développé par Microsoft pour permettre la synthèse de la parole dans les applications Windows. Il existe deux versions majeures de SAPI (SAPI 4 et SAPI 5), qui ne sont pas compatibles entre elles.

SAPI 4 (Microsoft Speech API 4.0)

Toutes les voix pour SAPI 4 sont devenues obsolètes ; elles ne sont plus recommandées pour l'installation. Utilisez de nouvelles versions de synthétiseurs vocaux.

SAPI 5 (Microsoft Speech API 5.x)

Malheureusement, la qualité de la lecture par voix gratuites est extrêmement mauvaise. Pour obtenir une meilleure qualité vocale, vous pouvez acheter Acapela Group, Cepstral, IVONA et d’autres. Elles sont la nouvelle génération de moteurs TTS qui utilisent des bases de données larges et la qualité de la parole est excellente.

Voix commerciales de haute qualité :

  • Acapela Group (demo)
  • Alfanum (demo)
  • Cepstral (demo)
  • IVONA (demo)
  • Nuance/Cerence (demo)
  • ReadSpeaker (demo)

Microsoft Speech Platform

Microsoft Speech Platform (version 11.0) est un ensemble d’outils permettant aux développeurs de concevoir et de déployer des applications de la reconnaissance automatique de la parole pour la transcrire sous la forme d'un texte.

Pour opérer le synthétiseur de la parole, il faut télécharger et installer les éléments suivants :

  1. Microsoft Speech Platform - Runtime, côté serveur de la plateforme vocale, il offre API pour les applications (le fichier « x86_SpeechPlatformRuntime\SpeechPlatformRuntime.msi »).
  2. Microsoft Speech Platform - Runtime Languages est un ensemble de langues pour le côté serveur. Actuellement des voix pour 26 langues sont disponibles, les voix françaises Hortense et Harmonie incluses (les fichiers dont les noms commencent par « MSSpeech_TTS_ »).

Les balises (instructions de commande) utilisées pour les voix SAPI 5 peuvent être également utilisées pour les voix Microsoft Speech Platform. Notez bien que les voix SAPI 5 et les voix Microsoft Speech Platform ne sont pas compatibles entre elles, il n’est pas possible de changer entre elles à l’aide des balises Voice ou Lang.


Ligne de commande

Balabolka accepte les paramètres en ligne de commande :

balabolka.exe [-options] [nom_de_fichier] [fichier_audio] [voix]

Le paramètre voix est défini de manière suivante :

nom_de_voix [rDébit] [pTimbre]

nom_de_fichier
ouvrir fichier texte

-c
lire à haute voix le contenu du presse-papiers

-c nom_de_voix
choisir une voix et lire à haute voix le contenu du presse-papiers

-m
lancer en fenêtre réduite

-r nom_de_fichier
ouvrir le fichier et lire à haute voix dès le début

-r nom_de_fichier nom_de_voix
ouvrir le fichier, choisir une voix et lire à haute voix dès le début

-s nom_de_fichier fichier_audio
ouvrir le fichier et enregistrer le texte sous fichier audio (WAV, MP3, MP4, OGG ou WMA)

-s nom_de_fichier fichier_audio nom_de_voix
ouvrir le fichier, choisir une voix et enregistrer le texte sous fichier audio

-q
fermer le programme après la fin de la lecture

Le nom de la voix peut être défini par un seul mot, par exemple : Jean-Pierre. Le programme va choisir le nom approprié dans la liste des voix (SAPI 5, puis SAPI 4).

Plusieurs options peuvent être fixées à la fois :

-rm nom_de_fichier
lancer le programme en fenêtre réduite et lire le fichier spécifié

-rq nom_de_fichier
lire le fichier spécifié et fermer le programme après la fin de la lecture

Par exemple :

balabolka.exe book.txt

balabolka.exe -rmq book.txt

balabolka.exe -sq "c:\my books\book.txt" "c:\my files\book.wav"

balabolka.exe -s "c:\my books\book.txt" "c:\my files\book.wav" Bruno

balabolka.exe -r "c:\my books\book.txt" Alain r2

balabolka.exe -c "Cepstral Jean-Pierre"

S'il est nécessaire de définir dans la ligne de commande non pas le nom d'un fichier texte, mais une ligne de texte, les options doivent contenir un modificateur spécial :

-n [ligne_de_texte]
ce paramètre signifie que la ligne de commande contient une ligne de texte au lieu du nom de fichier (le texte doit être entre les guillemets)

Par exemple :

balabolka.exe -n "Exemple de texte."

balabolka.exe -rn "Le programme va lire ce texte." Juliette

balabolka.exe -snq "Ce texte sera enregistré dans un fichier audio." "c:\my files\book.mp3"


Vérification orthographique

Balabolka fait l'usage du moteur de vérification orthographique Common Speller API (CSAPI) et des dictionnaires contenus dans le logiciel Microsoft Office 97/2000 pour la vérification orthographique. CSAPI est conçu pour être utilisé avec toutes les applications Microsoft qui incluent la vérification orthographique, y compris Microsoft Office. Le moteur CSAPI n'est pas livré dans le package d'installation Balabolka, mais si vous avez installé Microsoft Office, Balabolka détecte automatiquement la présence de CSAPI et l'utilise. Si Microsoft Office n’est pas installé sur votre ordinateur ou vous utilisez une autre version de ce logiciel, vous pouvez télécharger le module de vérification orthographique sur le site de Balabolka.

Lors de l’édition d’un texte l'utilisateur peut se servir du menu contextuel pour vérification orthographique. Le menu contextuel s'affiche par un clic droit sur un mot souligné, ce qui vous permet de choisir parmi la liste de suggestions. Ou cliquez sur Ajouter le mot dans le dictionnaire pour ajouter le mot au dictionnaire utilisateur.

Il est également possible de vérifier un texte en utilisant la boîte de dialogue Orthographe (cliquez sur « Texte | Orthographe »). Les boutons de la boîte de dialogue sont ci-dessous :

  • Remplacer – remplacer le mot courant par un mot correct pris dans la liste de suggestions.
  • Remplacer tout – remplacer toutes les occurrences du mot sélectionné par un mot correct pris dans la liste de suggestions.
  • Ignorer – ignorer le mot courant sans le modifier et passer au mot mal orthographié suivant.
  • Ignorer tout – sauter toutes les occurrences du mot sélectionné sans le modifier et passer au mot mal orthographié suivant. Ce mot sera alors considéré comme correct lors de la session entière de Balabolka en cours.
  • Ajouter – ajouter le mot sélectionné au dictionnaire utilisateur.

« Dictionnaire utilisateur » est un fichier avec un ensemble de mots sous forme de texte, il a l'extension *.dic. Le but principal du dictionnaire utilisateur est de permettre à l'utilisateur d'ajouter des mots personnels pour la vérification orthographique. Microsoft Office 97/2000 sauvegarde le dictionnaire utilisateur ici : c:\Program Files\Common Files\Microsoft Shared\Proof\custom.dic.

Balabolka permet de définir deux langues pour la correction orthographique (cochez la case Deuxième langue). Dans ce cas, la boîte de dialogue Orthographe est désactivée, vous pouvez utiliser le menu contextuel seulement.

Le programme peut utiliser Hunspell (hunspell.github.io). Hunspell est le correcteur orthographique par défaut de OpenOffice.org et Mozilla Firefox qui s’utilise pour les langues à la dérivation de mots complexe et morphologie ample.

Dictionnaires du correcteur orthographique pour Windows sont téléchargeables à partir du site Web de Balabolka.

L'application permet d'utiliser la vérification orthographique intégrée au système d'exploitation. L'API Spell Checking est disponible en commençant par Windows 8.


Rechercher et remplacer un texte

The program allows to search for text in the current document and replace it with different text. Most of special codes from Microsoft Word are supported for the non-printing characters (codes are case-sensitive):

^p
marque de paragraphe
^t
caractère de tabulation
^nnn
caractère ANSI (où nnn correspond au code du caractère)
^0 nnn
caractère ANSI (où 0 correspond à zéro et nnn au code du caractère)
^U nnnnn
caractère Unicode (où nnnnn correspond au code du caractère)
^+
tiret cadratin ( — )
^=
tiret demi-cadratin ( – )
^^
signe ^
^s
espace insécable
^?
tout caractère (dans la zone Rechercher uniquement)
^#
tout chiffre (dans la zone Rechercher uniquement)
^$
toute lettre (dans la zone Rechercher uniquement)
^c
contenu du Presse-papiers Windows (dans la zone Remplacer par uniquement)
^&
contenu de la zone Rechercher (dans la zone Remplacer par uniquement)


Foire aux questions

Je reçois le message d'erreur « OLE error 80045042 ». Qu'est-ce que cela signifie ?

Cette erreur signifie que l'analyseur XML a échoué en raison de mauvaise syntaxe. Vous devez vérifier la syntaxe des balises XML à l'intérieur du texte. Soit une partie du texte (les symboles « < » et « > » ) ressemble au début d'une balise XML, ce qui produit la confusion de SAPI, soit la balise de fin est absente. Si vous ne souhaitez pas utiliser les balises XML, supprimer les symboles « < » et « > » de texte (ou remplacez-les par les mots « inférieur à » et « supérieur à »).

Où puis-je trouver SAPI 4 ?

Pour utiliser SAPI 4, téléchargez et installez la version redistribuable de Microsoft Speech API 4.0 (824 Ko). En outre, vous pouvez télécharger et installer le Microsoft Speech Control Panel (840 Ko) ; une icône sera ajoutée à votre panneau de configuration pour vous permettre de dresser la liste des moteurs texte-parole compatibles installés sur votre système et de personnaliser leurs paramètres.

Où puis-je trouver SAPI 5 ?

Windows XP (et versions ultérieures) est livré avec SAPI 5.

Comment puis-je savoir quelles voix texte-parole sont installées sur mon ordinateur ?

Vous pouvez consulter toutes les voix disponibles sur l'ordinateur en suivant Panneau de configuration -> Voix -> Propriétés du discours -> Conversion du texte en paroles -> Sélection de voix.

Comment installer le programme en mode silencieux ?

L'installation en mode silencieux sans boîtes de dialogue se fait avec le paramètre -silent spécifié en ligne de commande.

Mon ordinateur contient deux cartes son. Comment puis-je choisir un périphérique audio pour la lecture du texte à haute voix ?

Vous pouvez sélectionner un périphérique audio dans le Panneau de configuration de Windows et appuyer sur le bouton Sortie Audio dans la boîte de dialogue Propriétés du discours. En outre, Balabolka contient l’élément du menu principal « Configuration | Sortie Audio ».

J'ai la version Windows 64 bits. J'ai installé le Runtime 64 bits pour Microsoft Speech Platform et aussi une voix française. Mais la liste des voix disponibles de l'application Balabolka est vide. Où est le problème ?

L'application Balabolka est une application 32 bits. C'est pourquoi il faut installer le Runtime 32 bits pour Microsoft Speech Platform.

Comment puis-je supprimer les tirets dans le début des paragraphes ?

Vous devez utiliser l’élément du menu principal « Édition | Remplacer ». Tapez ^p— dans la zone Rechercher et ^p dans la zone Remplacer par. Le logiciel permet d'utiliser la plupart des codes spéciaux à partir de Microsoft Word :

^p
marque de paragraphe
^t
caractère de tabulation
^nnn
caractère ANSI (où nnn correspond au code du caractère)
^0 nnn
caractère ANSI (où 0 correspond à zéro et nnn au code du caractère)
^U nnnnn
caractère Unicode (où nnnnn correspond au code du caractère)
^+
tiret cadratin ( — )
^=
tiret demi-cadratin ( – )
^^
signe ^
^s
espace insécable
^?
tout caractère (dans la zone Rechercher uniquement)
^#
tout chiffre (dans la zone Rechercher uniquement)
^$
toute lettre (dans la zone Rechercher uniquement)
^c
contenu du Presse-papiers Windows (dans la zone Remplacer par uniquement)
^&
contenu de la zone Rechercher (dans la zone Remplacer par uniquement)

Qu’est-ce que Google Text-To-Speech est ?

Si vous utilisez le système de traduction Google, vous voyez le bouton « Écouter » à côté du texte traduit. Cliquez sur le bouton et le browser téléchargera un fichier audio MP3 avec le texte lu à voix haute. La synthèse vocale est disponible pour plus de 30 langues. Le système permet d’écouter les textes comportant moins de 100 caractères. Balabolka permet de contourner les restrictions imposées par le système : larges textes étant subdivisés en petites parties, un fichier audio est téléchargé pour chacune d’entre elles, ensuite tous ces fichiers sont combinés en un seul fichier audio (formats soutenus : WAV, MP3 et OGG).

Je convertis des sous-titres en fichiers audio en utilisant une voix eSpeak. Dans le fichier audio créé le texte est prononcé sans pauses entre les phrases. Où est le problème ?

Je recommande impérativement de ne pas utiliser les voix eSpeak pour convertir des sous-titres en fichiers audio. Ces voix aussi bien que les vieilles versions de certaines autres voix peuvent créer incorrectement des balises de pauses utilisées lors de la conversion des sous-titres. Il est recommandé d'utiliser les dernières versions des produits logiciels commerciaux (Cepstral, CereProc, IVONA etc.).

J'ouvre un livre électronique dans le logiciel, mais il n'y a pas de texte dans la fenêtre de Balabolka. Où est le problème ?

Cela peut avoir plusieurs raisons. Primo, le fichier peut être un ensemble d'images des pages scannées d'un livre papier. Secundo, le livre électronique peut être protégé par DRM. Le logiciel Balabolka ne peut pas extraire le texte du livre avec ce type de protection (cela est illégal).

Je ne suis pas satisfait(e) d'extraction du texte des fichiers au format PDF par le logiciel Balabolka. Puis-je utiliser une autre méthode de traiter les fichiers au format PDF ?

Le processus d'extraction du texte des fichiers au format PDF est assez complexe, car le texte du fichier PDF n'est pas ordinaire. Pour extraire le texte, vous pouvez utiliser un logiciel externe qui supporte le transfert des paramètres en ligne de commande. Par exemple le programme utilitaire pdftotext.exe du projet Xpdf. Copiez pdftotext.exe dans le sous-répertoire « utils » du dossier Balabolka, choisissez l'élément du menu principal « Configuration | Importation de Texte », le marque-page « Importation de Texte Personnalisée » et appuyez sur « Ajouter ». Spécifiez une commande pour utiliser pdftotext.exe :

%BFolder%\utils\pdftotext.exe -q -nopgbrk -enc UTF-8 %Input% %Output%

Inscrivez le nom pour ce format (par exemple « Xpdf Converter »), l'extension du fichier (« PDF ») et l'encodage du texte (« UTF-8 »). L'élément À utiliser à la place de la méthode d'extraction par défaut pour ce type de fichier choisi, le logiciel peut utiliser le programme utilitaire externe pour extraire le texte des fichiers PDF.

Qu'est-ce que Spritz-Reader ?

Spritz est une nouvelle technologie de lecture rapide de la société américaine Spritz. Le texte est partagé en mots et ensuite c'est leur démonstration successive avec accentuation en couleur du point de reconnaissance optimale. Cela permet d'accélérer le taux de lecture à 1000 mots par minute sans s'entraîner. Le principe de la technologie : la partie la plus longue de la lecture habituelle réside principalement dans les mouvements réels des yeux de mot à mot. Spritz positionne les mots dans un endroit sur un écran où vous pouvez reconnaître le mot, sans bouger les yeux. Il reste la question de rapidité avec laquelle le cerveau humain traite les mots lus et les relie ensemble.

Windows 10 possède les nouvelles voix Microsoft Julie Mobile et Microsoft Paul Mobile, mais elles ne sont pas disponibles dans le logiciel de texte à haute voix. Est-il possible de déverrouiller les nouvelles voix ?

Par défaut, la voix Microsoft mobile est bloquée pour l'utilisation dans les logiciels de lecture à haute voix via SAPI 5. Vous pouvez la débloquer par une simple modification du registre. Téléchargez l'archive, extrayez le fichier pour votre langue et pour votre version du système d'exploitation (« mobile_x86.reg » pour 32bit et « mobile_x64.reg » pour 64bit), cliquez avec le bouton droit de la souris sur le nom du fichier et choisissez l'élément de menu contextuel « Fusionner ». La voix Microsoft mobile apparaîtra dans la liste des voix disponibles dans Balabolka.

Certains documents contiennent des URL longues. Comment faire Balabolka lire une adresse web de manière simplifiée ?

Le problème peut être résolu en utilisant le dictionnaire pour la correction de prononciation. Ajoutez cette règle au fichier REX. Par exemple l'expression régulière :

((http|ftp|https)://)?(www\.)?([-a-zA-Z0-9@:%._\+~#\=]{2,256}\.[a-z]{2,6}\b)([-a-zA-Z0-9@:%_\+.~#?&//\=]*)=$4

L'expression régulière remplacera l'adresse Web par le nom de domaine (« example.com »).

Puis-je utiliser la première ligne de texte comme nom du fichier audio (par exemple « 01 Chapter One.mp3 », « 02 Chapter Two.mp3 ») ?

Tapez %FirstLine% dans la zone « Nom de base des fichiers de destination » dans la fenêtre « Fractionner le texte et convertir en fichiers audio ». L'application remplacera cette variable par la première ligne de chaque partie de texte. Pour changer la position du numéro de séquence à l'intérieur du nom de fichier, utilisez la variable %Number%.

Qu'est-ce que l'interface IFilter ?

L'interface IFilter fonctionne avec des documents et fournit des filtres pour extraire des informations des fichiers, il fonctionne comme un plugin. Les moteurs de recherche de texte intégral appellent les méthodes de l'interface IFilter. Vous pouvez obtenir des Certains filtres sont installés automatiquement avec différentes applications ; l'utilisateur doit télécharger et installer d'autres plugins lui-même. Installateurs des filtres gratuits est sur le site de IFilter.org. Balabolka est l'application 32 bits, et vous devrez installer la version 32 bits des filtres.

Can I use media files generated with Balabolka in YouTube videos?

Balabolka is freeware, so you may create audio files for free. But if you use the commercial voices, you need to contact the developers of the voice and purchase the license for commercial use/audio broadcast. The audio distribution license will allow you to use speech in YouTube videos.

For example, the information from the Cepstral web-site: "Cepstral Personal voices are for personal use only and are NOT licensed for audio distribution. This means the audio you create is for your use only and cannot be shared with others or used in videos, presentations, or webpages. If you are interested in an audio distribution license, please contact sales."


Utilisation des listes de remplacements

Tableau de dictionnaires

Le logiciel permet d'utiliser des listes de remplacements (« dictionnaires ») pour améliorer la prononciation. Ce sont des fichiers texte dont chaque chaîne contient une règle de remplacement. Les règles peuvent contenir des expressions régulières (les noms de tels fichiers sont avec l'extension *.rex) ou des modèles (les noms des fichiers avec l'extension *.dic).

Si l'utilisateur fait le logiciel lire un texte à haute voix, Balabolka vérifie dans le dictionnaire la prononciation de quels mots doit être corrigée et utilise la règle de remplacement appropriée. Ensuite le texte modifié est envoyé à la mémoire tampon de la voix informatique qui lit le texte à haute voix.

Pour voir la liste de dictionnaires utilisés par l'application, il faut cliquer sur « Affichage | Montrer | Dictionnaires » ou appuyer sur F11. À droite dans la fenêtre principale du logiciel vous verrez la liste de noms de fichiers; elle est divisée en deux parties :

  • partie supérieure – fichiers avec les listes de remplacements ;
  • partie inférieure – fichiers avec les listes d'homographes.

Différentes voix informatiques peuvent utiliser différentes listes de remplacements. L'utilisateur peut choisir les fichiers nécessaires dans la liste au moyen de coches.

Pour créer un nouveau dictionnaire, il faut faire un clic droit sur le tableau de dictionnaires, choisir dans le menu contextuel s'ouvrant « Nouveau » et inscrire le nom du nouveau dictionnaire. Le fichier sera créé sur le disque, et son nom s'affichera dans la liste sur le tableau.

S'il faut modifier une liste de remplacements, l'utilisateur choisit le fichier nécessaire dans la liste et appuie sur « Éditer » ensuite. La fenêtre d'édition de la liste de remplacements s'ouvre. Pour ajouter une nouvelle règle de remplacement, il faut remplir les champs « Prononcer : » et « Comme ceci : », appuyer ensuite sur « Ajouter ». L'édition finie, il faut appuyer sur « Enregistrer » et quitter la fenêtre d'édition.

Liste générale de règles

Si plusieurs fichiers dans la liste sont simultanément cochés, le logiciel réunit automatiquement les règles de ces dictionnaires en une seule liste gardée dans la mémoire de l'ordinateur. Pour voir cette liste, il faut faire un clic droit sur le tableau de dictionnaires et choisir « Afficher la liste » du menu contextuel.

Si les règles de différents fichiers sont réunies en une seule liste, cela se passe de manière suivante :

  • les règles des fichiers *.rex s'ajoutent successivement, l'une après l'autre, en ordre de leur position dans le dictionnaire ; les fichiers sont traités en ordre alphabétique selon leurs noms.
  • toutes les règles des fichiers *.dic sont triées de manière que les règles sensibles à la casse sont les premières, puis suivent les règles insensibles à la casse ; après les règles sont triées encore une fois d'après la longueur des modèles : celles dont les modèles sont les plus longs en caractères sont en début de la liste.

L'ordre de succession des règles dans une seule liste est important lorsque plusieurs règles peuvent être appliquées à un seul et même mot. Le logiciel Balabolka utilise les règles de remplacement successivement, c'est-à-dire la deuxième règle s’applique au texte après que ce texte a déjà été modifié avec la première règle de la liste. Dans ce cas l'ordre d'utilisation des règles est important.

Les règles des fichiers avec l'extension *.rex s’appliquent au texte en premier lieu. Pour vérifier les résultats de l'application des règles de remplacement au texte du document en cours, on peut utiliser les éléments du menu principal « Configuration | Correction de prononciation | Afficher le texte modifié » et « Configuration | Correction de prononciation | Statistiques de remplacement ».

Outils supplémentaires

Pour trouver des paires de règles applicables à un même texte, il faut choisir l'élément du menu principal « Configuration | Correction de prononciation | Trouver les paires de règles ». Cela permet de trouver les règles qui ne seront jamais appliquées parce qu'une autre règle a déjà modifié cette expression dans le texte.

Il faut le plus souvent corriger la prononciation de noms de personnes, de noms géographiques, de noms d'animaux, de noms d'organisations etc. La recherche de ces mots dans le document en cours peut être facilitée à l'aide de l'élément du menu principal « Configuration | Correction de prononciation | Trouver les Noms dans le texte ». Le logiciel Balabolka donne la possibilité de parcourir trois listes de mots trouvés :

  • les noms (les mots dans le document en cours qui commencent par une majuscule) ;
  • tous les mots commençant par une majuscule ;
  • tous les mots trouvés dans le document en cours.

Le logiciel lit automatiquement les mots à haute voix en suivant une liste de mots. Si un mot est lu incorrectement, on peut corriger sa prononciation en ajoutant une nouvelle règle dans le dictionnaire. La liste de mots trouvés peut être triée soit en ordre alphabétique, soit d'après l'occurrence d'un mot dans le texte. Aussi on peut interdire d'afficher les mots qui ne figurent dans le texte que peu de fois : cela permet d'accélérer la vérification de la liste de noms trouvés dans le document en cours.

Profils

Les paramètres courants du tableau de dictionnaires peuvent être sauvegardés comme des « profils ». Pour créer et éditer des profils, il faut utiliser l'élément du menu principal « Configuration | Correction de prononciation | Profils ».


Les fichiers *.REX avec les listes de remplacements

Sur chaque ligne, la deuxième série de lettres est le remplacement de la prononciation phonétique de la première série de lettres ; elles sont séparées par un signe égal. Soyez conscient que les remplacements se produisent dans l'ordre dans lequel ils sont répertoriés dans un fichier *.rex. Par exemple, ces deux lignes :

rat=souris
souris=hamster

« rat » sera remplacé par « hamster ». Non seulement la syntaxe, mais aussi l’ordre de remplacements compte.

Les lignes de commentaires commencent par le signe dièse (#) et sont ignorées.

Par défaut, les modèles d'expressions régulières sont insensibles à la casse. Si vous souhaitez définir un modèle sensible à la casse, vous devez ajouter le symbole « @ » au début de la ligne, par exemple :

@TVA=taxe sur la valeur ajoutée

Trouvez ci-dessous les caractères et les séquences qui peuvent être utilisés.

Opérateur | Description
\ | - annule le sens du métacaractère qui le suit - permet d'introduire des caractères invisibles : \n, \t ... - introduit des types génériques de valeurs : \w, \s ... - introduit les assertions simples \b, \B ...
. | reconnaît n'importe quel caractère sauf le caractère de nouvelle ligne
| | alternative entre plusieurs masques ex: "chats|souris" cherche les masques "chats" ou "souris" "chev(al|aux)" cherche "cheval" ou "chevaux"
( ) | sous masque
[ ] | classe de caractères ex: - [abc] reconnaît "a" ou "b" ou "c" - [a-z] pour indiquer un intervalle de caractères - [^ab] le ^ indique le complément : tout les caractères sauf le "a" et le "b" a l'interieur de la classe les caractères de ce tableau perdent leur sens de métacaractère
^ | correspond au début de chaîne
$ | correspond à la fin de la chaîne
\w | un caractère de type "mot" = alphanumériques et blanc souligné. Equivaut à [a-zA-Z_] - est affecté par la locale
\d | un chiffre
\s | un espace
\W | un caractère qui N'EST PAS de type "mot"
\D | un caractère qui N'EST PAS de type chiffre
\S | un caractère qui N'EST PAS un espace
\b | une limite (boundary) entre un caractère de type "mot" et un "non mot"
\B | une NON limite
? | 0 ou 1 fois
+ | au moins 1 fois
* | 0, 1 ou plusieurs fois : ba* trouve "b" ou "ba", "baa", "baaa", etc.
{n} | exactement n fois
{n,m} | au moins n fois et au plus m fois
{n,} | au moins n fois
{,m} | au plus m fois
$1 | mémorise la reconnaissance du 1er sous masque (partie du motif contenu entre parenthèses)
$n | mémorise la reconnaissance du n ème sous masque
$& | mémorise la reconnaissance de tous le masque
\n | mémorise la reconnaissance du n ème sous masque, à éviter en Perl

Balabolka supports the special operators for text converting to uppercase or lowercase.

Operator | Description
\U | Converts all following chars to the next \L or \E to uppercase.
\L | Converts all following chars to the next \U or \E to lowercase.
\E | Turns off case conversion.
\u | Converts the next character to uppercase.
\l | Converts the next character to lowercase.

For example, the expression:

(test)=\U$1\E

will convert "test" to "TEST".


Les fichiers *.DIC avec les listes de remplacements

Sur chaque ligne, la deuxième série de lettres est le remplacement de la prononciation phonétique de la première série de lettres. Les modèles contenant le maximum de lettres étant envisagés en premier lieu.

Les lignes de commentaires commencent par le signe dièse (#) et sont ignorées.

Par défaut, les modèles sont insensibles à la casse. Si vous souhaitez définir un modèle sensible à la casse, vous devez ajouter le symbole « $ » au début de la ligne, par exemple :

$TVA=taxe sur la valeur ajoutée

Par défaut, un modèle correspond à un mot (ou quelques mots) entier de l'ensemble isolé d’espaces ou de signes de ponctuation. S'il y a des lettres avant ou après le modèle, le symbole « * » est utilisé. Par exemple :

auto*=avto

Ce modèle correspond à « autobiographie », « autocatalyse », « autogenèse », etc. Pour utiliser dans un texte les symboles spéciaux (« # », « * », « = », « $ »), il faut les inscrire deux fois, par exemple :

**=astérisque

Ainsi le symbole isolé « * » dans un texte se lit comme « astérisque ».

Afin d’éviter les arrêts lors de la lecture de texte, on peut réduire la liste de remplacements à l’avance, pour ne laisser que ceux utilisables par le programme. A ces fins, utilisez l’élément du menu principal « Statistiques de remplacement » ; le programme affiche la liste de remplacements faits dans le texte traité ; on peut enregistrer cette liste en tant qu’un nouveau dictionnaire de correction de l’articulation et l’utiliser lors de la lecture à haute voix.


Homographes

Deux mots sont homographes lorsqu'ils s'écrivent de la même manière. Ils peuvent avoir la même prononciation ou non.

Le programme utilise les dictionnaires spéciaux d’homographes (fichiers avec l’extension *.hmg). Sur chaque ligne, la deuxième série de lettres contient les remplacements de la prononciation phonétique de la première série de lettres, séparés par des virgules. Les séries de lettres sont séparées par un signe égal (=). Par exemple :

est=e,est

Les modèles sont insensibles à la casse. Si vous voulez définir un modèle sensible à la casse, vous devez ajouter le symbole « $ » au début de la ligne.

$Lot=Lot,Lo

Le programme Balabolka permet d'ajouter une liste d’expressions pour chaque homographe (onglet « Expressions possédant des homographes » dans l'éditeur des homographes) ; ces expressions seront automatiquement remplacées lors de la recherche des homographes (l’élément du menu principal « Texte | Rechercher homographes »). Par exemple :

convient=convi,convian

ils convient=convi
il convient de=convian

Si une expression est sensible à la casse, vous devez ajouter le symbole « $ » au début du texte.

$Lot=Lot,Lo

$séjour dans le Lot=Lot
$meilleur lot=lo

Le caractère générique « * » peut être utilisé à la place de n'importe quel mot ou au lieu de quelques lettres dans un mot (en début ou en fin du mot) :

convient=convi,convian

il convient *=convian


Balises SAPI 4

Cette section décrit les balises de contrôle de conversion texte-parole incorporables dans un texte source pour améliorer la prosodie de la conversion texte-parole. Les balises ne se lisent pas, mais prescrivent au moteur de synthèse vocale d’appliquer un tel ou tel paramètre de la lecture. Les balises sont traitées par un moteur de synthèse vocale, il en résulte que les moteurs peuvent ne pas supporter le spectre entier de balises Speech API 4.0. Si une balise incorporée dans un texte est incorrecte ou non supportée par un moteur, elle est lue comme une série de symboles.

  • Syntaxe
  • Chr
  • Com
  • Ctx (certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • Dem (nouvelle pour SAPI 4.0 – certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • Emp (certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • Eng
  • Mrk
  • Pau
  • Pit
  • Pra (nouvelle pour SAPI 4.0 – certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • Prn (certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • Pro (certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • Prt (certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • RmS (nouvelle pour SAPI 4.0 – certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • RmW (nouvelle pour SAPI 4.0 – certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • RPit (nouvelle pour SAPI 4.0 – certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • RPrn (nouvelle pour SAPI 4.0 – certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • RSpd (nouvelle pour SAPI 4.0 – certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • Rst (nouvelle pour SAPI 4.0)
  • Spd
  • Vce (certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise)
  • Vol

Syntaxe

Balises de contrôle de conversion texte-parole sont des commandes incorporées dans un texte ; pour que le moteur les distingue du texte, elles suivent ces règles générales de la syntaxe :

  • Toutes les balises commencent et finissent avec une barre oblique inverse (\).
  • Le caractère barre oblique inverse n'est pas autorisé à l’intérieur de la balise. Pour inclure une barre oblique inverse dans un texte balisé, utilisez une double barre oblique inverse (\\).
  • Les balises sont insensibles à la casse. Par exemple, balise \vce\ est le même que \VCE\.
  • Les balises sont sensibles aux espaces blancs. Par exemple, balise \Rst\ n'est pas le même que \ Rst \.

Chr

\Chr=chaîne[[,chaîne...]]\

Définit un caractère de la voix. Plusieurs caractéristiques peuvent être spécifiées dans une même balise, séparées par des virgules. Quelques caractéristiques générales sont les suivantes :

"Angry"
"Business"
"Calm"
"Depressed"
"Excited"
"Falsetto"
"Happy"
"Loud"
"Monotone"
"Perky"
"Quiet"
"Sarcastic"
"Scared"
"Shout"
"Tense"
"Whisper"

La caractéristique par défaut est « Normal » qui produit un ton de voix normal.

Exemple : \Chr="Angry"\

Paramètre | Description
chaîne | Chaîne qui définit les caractéristiques de la voix

Com

\Com=chaîne\

Intègre un commentaire dans un texte. Commentaires ne sont pas convertis en parole.

Exemple : \Com="Ceci est un commentaire."\

Paramètre | Description
chaîne | Texte d’un commentaire.

Ctx

\Ctx=chaîne\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Définit le contexte pour le texte qui suit, qui détermine comment les symboles sont prononcés.

Exemple : \Ctx="Unknown"\

Paramètre | Description
chaîne | Chaîne qui spécifie le contexte.

Cette balise peut être une de ces chaînes :

Paramètre | Description
"Address" | Adresses et / ou numéros de téléphone
"C" | Code dans le langage de programmation C ou C++
"Document" | Texte de document
"E-Mail" | Courrier électronique
"Numbers" | Nombres, dates, heures, et ainsi de suite
"Spreadsheet" | Document de feuille de calcul
"Unknown" | Le contexte est inconnu (par défaut)
"Normal" | Normal / voix par défaut

Emp

\Emp\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Accentue le mot suivant immédiatement la balise.

Exemple : la \Emp\vérité, toute \Emp\la vérité, rien \Emp\que la vérité.

Dem

\Dem\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Désaccentue le mot suivant immédiatement la balise.

Eng

\Eng;GUID:commande\
\Eng:commande\

Intègre une commande spécifique qui ne concerne qu’un moteur avec l’identificateur GUID.

Paramètre | Description
GUID | Identificateur globalement unique de moteur de reconnaissance vocale.
commande | Commande spécifique au moteur.

Mrk

\Mrk=nombre\

Insère un signet dans un texte.

Exemple : \Mrk=75000\

Paramètre | Description
nombre | Numéro de signet.

La balise Mrk accepte une représentation décimale. Le nombre zéro (\Mrk=0\) est réservé, il ne s’utilise pas en tant qu’un numéro du signet.

Pau

\Pau=nombre\

Met la parole en pause pour un nombre spécifié de millisecondes.

Exemple : \Pau=1000\

Paramètre | Description
nombre | Nombre de millisecondes de la pause.

Pit

\Pit=nombre\

Définit un timbre de base spécifié en hertz.

Exemple : \Pit=90\

Paramètre | Description
nombre | Timbre, en hertz.

Le timbre réel varie ci-dessus et en dessous de ce timbre de base.

Pra

\Pra=valeur\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Définit une gamme de timbre.

Paramètre | Description
valeur | Gamme de timbre en hertz.

Prn

\Prn=texte=prononciation\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Indique au moteur comment prononcer un texte en le remplaçant par l'équivalent phonétique.

Exemple : \Prn=tomate=tomaate\

Paramètre | Description
texte | Texte à prononcer.
prononciation | Équivalent phonétique pour la prononciation du texte.

Le texte s’écrit sans guillemets. La balise (\Prn=tomate\) annule le remplacement fait.

Les remplacements sont sensibles à la casse, i.e. le mot « Tomate » ne sera pas remplacé.

Pro

\Pro=nombre\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Si le nombre est 0, les règles prosodiques sont désactivées. Les règles n’affectent pas le timbre, le débit ou le volume des mots, indépendamment de balises de contrôle intégrés dans le texte. Les balises se lisent comme des séries de symboles, et le texte se lit de manière monotone. Si le nombre est 1, ce mode est désactivé.

Exemple : \Pro=0\

Paramètre | Description
nombre | Nombre de l’activation/désactivation.

Prt

\Prt=chaîne\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Indique quelle partie du discours est le mot ultérieur.

Exemple : \prt="Abbr"\

Paramètre | Description
chaîne | Partie du discours.

Cette balise peut être une de ces chaînes :

Paramètre | Description
"Abbr" | Abréviation
"Adj" | Adjectif
"Adv" | Adverbe
"Card" | Adjectif numéral cardinal
"Conj" | Conjonction
"Cont" | Synérèse, abrègement, par exemple, « f’nêtre » au lieu de « fenêtre »
"Det" | Mot déterminant
"Interj" | Interjection
"N" | Nom
"Ord" | Adjectif numéral ordinal
"Prep" | Préposition
"Pron" | Pronom
"Prop" | Nom propre
"Punct" | Ponctuation
"Quant" | Quantifieur
"V" | Verbe

RmS

\RmS=nombre\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Le nombre 1 définit le mode de lecture par lettres (épellation). Le nombre 0 définit le mode de lecture par mots entiers.

Paramètre | Description
nombre | Nombre de la commutation.

RmW

\RmW=nombre\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Le nombre 1 définit le mode de lecture avec de petites pauses sonores entre les mots. Le nombre 0 rétablit le mode sans pauses.

Paramètre | Description
nombre | Nombre de commutation.

RPit

\RPit=valeur\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Définit un timbre relatif.

Paramètre | Description
valeur | Valeur relative de timbre. 100 est la valeur par défaut.

RPrn

\RPrn=valeur\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Définit une gamme relative de timbre.

Paramètre | Description
valeur | Valeur relative de gamme de timbre. 100 est la valeur par défaut.

RSpd

\RSpd=valeur\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Définit un débit relatif de la parole.

Paramètre | Description
valeur | Valeur relative de débit de la parole. 100 est la valeur par défaut.

Rst

\Rst\

Les balises de contrôle antérieures désactivées, réinitialise le moteur aux paramètres par défaut.

Spd

\Spd=nombre\

Définit un débit de la parole.

Exemple : \Spd=120\

Paramètre | Description
nombre | Débit de la parole (en mots par minute).

Vce

\Vce=caract=valeur[[,caract=valeur]]\
Note : Certains moteurs de reconnaissance vocale peuvent ne pas supporter cette balise.

Fait le moteur changer la voix à celle qui a les caractéristiques spécifiées.

Paramètre | Description
caract | Caractéristique de voix.
valeur | Caractéristique spécifiée.

Le moteur sélectionne une voix qui correspond le mieux aux caractéristiques prévues. Par exemple, la chaîne ci-dessous implique le changement de la voix utilisée à une voix masculine anglaise :

\Vce=Gender="Male",language="British English"\

caract=valeur peut contenir l’une des caractéristiques suivantes :

  • Language=langue. Fait le moteur parler une langue spécifiée.
  • Accent=accent. Fait le moteur parler avec un accent spécifié. Par exemple, si Language="English" et Accent="French" le moteur va parler anglais avec l’accent français.
  • Dialect=dialecte. Fait le moteur parler un dialecte spécifié.
  • Gender=genre. Indique un genre de la voix : "Male" voix masculine, "Female" voix féminine, ou "Neutral" voix neutre.
  • Speaker=speaker. Indique le nom de la voix.
  • Age=âge. Indique un âge de la voix.
  • Style=style. La personnalité de la voix, par exemple : "Business" business, "Casual" relax, "Computer" d’ordinateur, "Excited" excitée, ou "Singsong" chantante.
Âge | Description
"Baby" | 1 an
"Toddler" | 3 ans
"Child" | 6 ans
"Adolescent" | 14 ans
"Adult" | 20-60 ans
"Elderly" | Plus de 60 ans

Vol

\Vol=nombre\

Définit le volume de la voix.

Exemple : \Vol=32768\

Paramètre | Description
nombre | Niveau de volume.

Le niveau de volume est une gamme linéaire de 0 pour le silence absolu à 65535 pour le volume maximum mono. Si vous spécifiez une valeur supérieure à 65535, le moteur suppose que vous souhaitez définir les canaux gauche et droit séparément et convertit la valeur à un mot double (double word), en utilisant le mot de poids faible pour le canal gauche et le mot de poids fort pour le canal droit. Par exemple, la valeur de 65536 définit le volume maximum pour le canal gauche et le volume minimum pour le canal droit.


Balises SAPI 5

Balisage sert à modifier l’articulation. Les balises sont des commandes textuelles insérées dans un texte qui ne se lisent pas, mais font un synthétiseur vocal modifier la synthèse de la parole depuis ce texte. Pour écrire les balises, dans SAPI 5 le format XML (eXtensible Markup Language) est utilisé. Différents synthétiseurs vocaux supportent différentes balises ; la liste de balises supportées se trouve dans la documentation d’un synthétiseur vocal.

Chaque élément de XML comprend une balise d'ouverture <balise>, une balise finale </balise> et un texte entre les deux balises. Si un élément est vide et le texte est absent, une balise s’écrit de façon suivante : <balise/>.

Volume

La balise de volume contrôle le volume d'une voix. La balise peut être vide, dans ce cas elle s'applique à tout le texte ultérieur. Elle peut avoir du contenu, dans ce cas elle ne s'applique qu'à ce contenu. La balise contient l’attribut requis : Level. La valeur de cet attribut doit être un entier compris entre 0 et 100.

<volume level="50"> Ce texte est lu avec le volume de cinquante. <volume level="100"> Ce texte est lu avec le volume de cent. </volume> </volume>
<volume level="80"/> Tout le texte ultérieur est lu avec le volume de quatre-vingt.

La valeur 100 correspond au volume par défaut. Des valeurs inférieures sont un pourcentage de celle par défaut. C’est-à-dire que 50 représente 50% du volume maximal.

Rate

La balise Rate contrôle le débit de la parole. La balise peut être vide, dans ce cas elle s'applique à tout le texte ultérieur, ou elle peut avoir du contenu, dans ce cas elle ne s'applique qu'à ce contenu. La balise a deux attributs dont l'un doit être présent : Speed ou AbsSpeed. Les valeurs de ces deux attributs doivent être des entiers compris entre 10 et 10 négatif. L'attribut AbsSpeed contrôle un débit absolu de la parole, l'attribut Speed contrôle un débit relatif.

<rate absspeed="5"> Ce texte est lu avec le débit de cinq. <rate absspeed="-5"> Ce texte est lu avec le débit de cinq négatif. </rate> </rate>
<rate absspeed="10"/> Le texte ultérieur est lu avec le débit de dix.

Le débit absolu est obtenu en additionnant chaque attribut Speed au débit courant absolu.

<rate speed="5"> Ce texte est lu avec le débit de cinq. <rate speed="-5"> Ce texte est lu avec le débit de zéro. </rate> </rate>

La valeur 0 représente le débit par défaut étant plus rapide avec des valeurs positives et plus lent avec des valeurs négatives.

Pitch

La balise Pitch contrôle le timbre de la voix. La balise peut être vide, dans ce cas elle s'applique à tout le texte ultérieur, ou elle peut avoir du contenu, dans ce cas elle ne s'applique qu'à ce contenu. La balise a deux attributs dont l'un doit être présent : Middle ou AbsMiddle. Les valeurs de ces deux attributs doivent être des entiers compris entre 10 et 10 négatif. L'attribut AbsMiddle contrôle un timbre absolu de la voix, l'attribut Middle contrôle un timbre relatif.

<pitch absmiddle="5"> Ce texte est lu avec le timbre de cinq. <pitch absmiddle="-5"> Ce texte est lu avec le timbre de cinq négatif. </pitch> </pitch>
<pitch absmiddle="10"/> Le texte ultérieur est lu avec le timbre de dix.

Le timbre absolu est obtenu en additionnant chaque attribut Middle au timbre courant absolu.

<pitch middle="5"> Ce texte est lu avec le timbre de cinq. <pitch middle="-5"> Ce texte est lu avec le timbre de zéro. </pitch> </pitch>

La valeur 0 représente le timbre par défaut étant plus haut avec des valeurs positives et plus bas avec des valeurs négatives.

Emph

La balise Emph charge la voix pour accentuer une section de texte. La balise Emph ne peut pas être vide. Le mot qui suit doit être accentué.

<emph> pouh </emph>!

La méthode de l'accentuation peut varier d'une voix à une autre.

Spell

La balise Spell fait le moteur épeler une section de texte. La balise Spell ne peut pas être vide.

<spell> Ce texte est épelé. </spell>
Ce texte n’est pas épelé.

Silence

La balise Silence insère un nombre spécifié de millisecondes de silence dans l’audio sorti. Cette balise doit être vide, et doit contenir l’attribut requis Msec — la durée de silence en millisecondes.

Deux secondes de silence <silence msec="2000"/> et la lecture est reprise.

Pron

La balise permet de remplacer une section de texte par une chaîne lisible spécifiée. La chaîne est une séquence de phonèmes. Cette balise peut être vide, ou il peut avoir un contenu.

La balise a l’attribut Sym qui est une chaîne de phonèmes séparés par des espaces.

<pron sym="h eh l l ow & w er l l d "/>
<pron sym="h eh l l ow & w er l l d"> hello world </pron>

Bookmark

La balise permet d'insérer un signet dans l’audio sorti. La balise doit être vide et ne contenir que l’attribut Mark qui est une chaîne de signet. Les signets servent à signaler les applications que l'audio correspondant au texte du signet a été atteint.

Ce signet atteint en cours de la lecture, l'application recevra un signal du synthétiseur vocal :

<bookmark mark="bookmark_one"/>

et ensuite ce signet :

<bookmark mark="bookmark_two"/>

PartOfSp

La balise PartOfSp indique une partie du discours. La balise ne peut pas être vide. Utilisez cette balise pour permettre à une voix de prononcer un mot correctement en fonction de sa partie du discours.

La balise PartOfSp a l’attribut Part — une partie du discours :

Valeurs | Description
"Unknown" | Partie du discours inconnue
"Noun" | Nom
"Verb" | Verbe
"Modifier" | Modificateur
"Function" | Fonction
"Interjection" | Interjection

<partofsp part="noun"> A </partofsp> est la première lettre de l’alphabet.

Context

La balise Context définit le contexte d’un mot. La balise ne peut pas être vide, elle a l’attribut Id qui est la chaîne indiquant comment normaliser les éléments exceptionnels, comme les dates, heures, nombres, e-mail adresses etc. La documentation d’un synthétiseur vocal contient les valeurs d’attribut.

<context id="date_mdy"> 03/04/01 </context> doit être le quatre mars deux milles un.
<context id="date_dmy"> 03/04/01 </context> doit être le 3 avril deux milles un.
<context id="date_ymd"> 03/04/01 </context> doit être le premier avril deux milles trois.

Voice

Le moteur vocal sélectionne une voix en fonction de ses attributs (Age, Gender, Language, Name, Vendor et VendorPreferred). La balise peut être vide, dans ce cas elle s'applique à tout le texte ultérieur. Elle peut avoir du contenu, dans ce cas elle ne s'applique qu'à ce contenu.

La balise a deux attributs : Required (requis) et Optional (optionnel). La voix qui correspond le mieux aux paramètres spécifiés sera sélectionnée. Si aucune voix qui corresponde à tous les attributs requis n'est trouvée, le changement de voix ne se produit pas.

Cette phrase sera lue par la voix par défaut. <voice required="Gender=Female;Age!=Child"> Cette phrase sera lue par une voix féminine adulte, s’il y en a sur l’ordinateur. <voice required="Age=Teen"> Cette phrase sera lue par une voix d’enfant, s’il y en a sur l’ordinateur. </voice> </voice>

Lang

La balise Lang fait le moteur sélectionner une voix en fonction d’une langue spécifiée. La balise peut être vide, dans ce cas elle s'applique à tout le texte ultérieur. Elle peut avoir du contenu, dans ce cas elle ne s'applique qu'à ce contenu.

La balise Lang a le seul attribut LangId qui est l’identificateur de la langue, par exemple 40C (le français), 409 (l’anglais américain) ou 411 (le japonais). Notez que ces chiffres sont en hexadécimal, mais sans les “0x” en préfixe.

La balise Lang est une version abrégée de la balise Voice avec l’attribut Required qui contient la chaîne "Language=xxx".

<voice required="Language=409"> A U.S. English voice should speak this. </voice>
<lang langid="40C"> Cette phrase doit être lue par une voix française. </lang>


Context Tag Definitions (SAPI 5)

The XML CONTEXT tag specifies the normalization of a block of text. This specification defines the SAPI predefined attributes (ID) for the CONTEXT tag. These IDs are strings. SAPI does not perform any parameter validation on the string passed to the engine, hence, the application can specify engine-specific normalization IDs to the engine. Engine-specific strings begin with the engine vendor's name to avoid confusion between engines.

For example:

<context id="My_Context"> text </context>

The exact implementation of some of these values is dependent on the engine used in SAPI 5. In order to force a certain normalization, application developers can choose to normalize the text, or use another SAPI tag or engine-specific ID. Each context tag can contain more than one string.

For example:

<context id="date_mdy"> 12/21/99 11/21/99 10/21/99 </context>

would be normalized to "December twenty first nineteen ninety nine November twenty first nineteen ninety nine October twenty first nineteen ninety nine."

The following predefined context types are supported:

  • Date
  • Time
  • Number
  • Web
  • E-mail
  • Address

Date

This context specifies that the number passed to the engine is a date. Dates will generally have the format of number [delimiter] number [delimiter] number or number [delimiter] number where the delimiter can be a '.', '/' or '-', and numbers are typically between 01 and 12 for months, 01 and 31 for days. A year is generally a two or four-digit number.

The following are valid string types:

date_mdy

This will normalize the date so that the first group of numbers is the month, the second group is the day, and the third group is the year. In the case where the year is a two-digit number, the engine reads it as a two-digit number or a four-digit number.

For example:

<context id="date_mdy">12/21/99</context>

will be normalized to "December twenty first ninety nine"
or "December twenty first nineteen ninety nine"

<context id="date_mdy">12/21/1999</context>

will be normalized to "December twenty first nineteen ninety nine"

date_dmy

This will normalize the date so that the first group of numbers is the day, the second group is the month, and the third group is the year. In the case where the year is a two-digit number, the engine reads it as a two-digit number. If the year is represented as a four-digit number, it is represented as a four-digit year.

For example:

<context id="date_dmy">21.12.99</context>

will be normalized to "December twenty first ninety nine"
or "December twenty first nineteen ninety nine"

<context id="date_dmy">21-12-1999</context>

will be normalized to "December twenty first nineteen ninety nine"

date_ymd

This will normalize the date so that the first group of numbers is the year, the second group is the month, and the third group is the day. In the case where the year is a two-digit number, the engine reads it as a two-digit number. If the year is represented as a four-digit number, it is represented as a four-digit year.

For example:

<context id="date_ymd">99-12-21</context>

will be normalized to "December twenty first ninety nine"
or "December twenty first nineteen ninety nine"

<context id="date_ymd">1999.12.21</context>

will be normalized to "December twenty first nineteen ninety nine"

date_ym

This will normalize the date so that the first group of numbers is the year, and the second group is the month. In the case where the year is a two-digit number, the engine reads it as a two-digit number. If the year is represented as a four-digit number, it is represented as a four-digit year.

For example:

<context id="date_ym">99-12</context>

will be normalized to "December ninety nine"
or "December nineteen ninety nine"

<context id="date_ym">1999.12</context>

will be normalized to "December nineteen ninety nine"

date_my

This will normalize the date so that the first group of numbers is the month, and the second group is the year. In the case where the year is a two-digit number, the engine reads it as a two-digit number. If the year is represented as a four-digit number, it is represented as a four-digit year.

For example:

<context id="date_my">12/99</context>

will be normalized to "December ninety nine"
or "December nineteen ninety nine"

<context id="date_my">12/1999</context>

will be normalized to "December nineteen ninety nine"

date_dm

This will normalize the date so that the first group of numbers is the day and the second group is the month.

For example:

<context id="date_dm">21.12</context>

will be normalized to "December twenty first"

date_md

This will normalize the date so that the first group of numbers is the month and the second group is the day.

For example:

<context id="date_md">12/21</context>

will be normalized to "December twenty first"

date_year

This will normalize the date so that the number is read as a year.

For example:

<context id="date_year">1999</context>

will be normalized to "nineteen ninety nine"

<context id="date_year">2001</context>

will be normalized to "Two thousand one"

chs_date_ymdhm

The text specifying the date is normalized so that the first group of numbers is the year, the second group is the month, the third group is the day, the fourth group is the hour and the fifth group is the minute. In the case where the year is a two-digit number, the engine reads it as a two-digit number. If the year is represented as a four-digit number, it is represented as a four-digit year. The text format for time needs to specify the hour as a number between 00 and 23 (in case of with PM/AM before, between 01 and 12), and the minute as a number between 01 and 59.

This is a Chinese specific context tag.

Time

This context specifies that the number passed to the engine is a time. Times will generally have the format of number [delimiter] number [delimiter] number or number [delimiter] number where the delimiter is ':' or ' ' ' or ' " ' and numbers are typically between 01 and 24 for hours, 01 and 59 for minutes and seconds.

When a zero is present in numbers between 01 and 09, the engine can ignore this, or normalize it as "oh". The engine can place an "and" in the normalized time.

time

For example:

<context id="time">12:30</context>

will be normalized to "twelve thirty"

<context id="time">01:21</context>

is normalized as "one twenty one"
or "oh one twenty one"

<context id="time">1'21"</context>

is normalized as "one minute twenty one seconds"
or "one minute and twenty one seconds"

chs_time_hms

The text specifying the time is normalized so that the first group of numbers is the hour, the second group is the minute and the third group is the second.

This is a Chinese engine specific context tag.

chs_time_hm

The text specifying the time is normalized so that the first group of numbers is the hour and the second group is the minute.

This is a Chinese engine specific context tag.

Number

number_cardinal

The text is normalized as a number using the regular format of ones, tens, etc. The engine can place "and" in the normalized text.

For example:

<context id="number_cardinal">3432</context>

will be normalized to "three thousand four hundred thirty two"

<context id="number_cardinal">3432</context>

will be normalized to "three thousand four hundred and thirty two"

number_digit

The text is normalized digit by digit.

For example:

<context id="number_digit">3432</context>

will be normalized to "three four three two"

number_fraction

The text is normalized as a fraction.

For example:

<context id="number_fraction">3/15</context>

will be normalized to "three fifteenths" or "three over fifteen"

number_decimal

The text is normalized as a decimal value.

For example:

<context id="number_decimal">423.1243</context>

will be normalized to "four hundred and twenty three point one two four three"

phone_number

The text is normalized as a phone number. The exact implementation of this is left to the engine developer and may be defined in a future release of SAPI.

currency

The text is normalized as a currency. The exact implementation of this is left to the engine developer and may be defined in a future release of SAPI.

For example:

<context id="currency">$34.90</context>

will be normalized to "thirty four dollars and ninety cents"

chs_number_percentage

The text is normalized as a percentage value.

This is a Chinese engine specific context tag.

chs_number_scientific

The text is normalized as a scientific value.

This is a Chinese engine specific context tag.

chs_phone_postal

The phone number and address postal is almost the same as that of number_cardinal; the only difference is that "1" is read as "yao1".

This is a Chinese engine specific context tag.

Web

The text is normalized as a URL. The exact implementation of this is left to the engine developer and may be defined in a future release of SAPI.

web_url

For example:

<context id="web_url">www.Microsoft.com</context>

will be normalized to "w w w dot Microsoft dot com"

E-mail

The text is normalized as e-mail. The exact implementation of this is left to the engine developer and may be defined in a future release of SAPI.

e-mail_address

The text is normalized as an e-mail address. The exact implementation of this is left to the engine developer and may be defined in a future release of SAPI.

For example:

<context id="e-mail_address">someone@microsoft.com</context>

will be normalized to "Someone at Microsoft dot com"

Address

The text is normalized as an address. The exact implementation of this is left to the engine developer and may be defined in a future release of SAPI.

address

For example:

<context id="address">One Microsoft Way, Redmond, WA, 98052</context>

will be normalized to "One Microsoft Way Redmond Washington nine eight zero five two"

address_postal

The text is normalized as a postal address. The exact implementation of this is left to the engine developer and may be defined in a future release of SAPI.

For example:

<context id="address_postal">A2C 4X5</context>

will be normalized to "A 2 C 4 X 5"


Balises universels

It is recommended to use the control tags for SAPI 4 and the XML tags for SAPI 5 and Microsoft Speech Platform. But in addition Balabolka supports its own universal tags to modify the speech synthesis.

Audio

Balabolka permet d'insérer des liens vers des fichiers audio externes (clips audio) dans le texte des documents. Utilisez l’élément du menu principal « Texte | Clip audio » pour choisir un fichier audio. Formats supportés: WAV, MP3, OGG.

La balise de clip audio ressemblera à ceci :

{{Audio=C:\Sounds\ring.wav}}

Également, un chemin d'accès relatif à des clips audio peut être défini. Le chemin relatif est l'emplacement d'un fichier relativement au document courant :

{{Audio=..\My Sounds\ring.mp3}}

Si un lien vers un clip audio survient lors de la lecture d’un texte à haute voix, Balabolka se met en pause, lit le clip audio et ensuite reprend la parole. Lors de la conversion de la parole en fichier audio, le clip audio externe sera intégré dans le fichier audio créé par le programme.

Voice

If it is necessary to change a voice or its properties during reading aloud, a special tag can be used for SAPI 5 and Microsoft Speech Platform (SAPI 4 voices will ignore this tag).

The tag format:

{{Voice=Name;Rate;Pitch;Volume}}

  • Name - the name of a voice (one word or the part of a word is enough) ;
  • Rate - the rate of a voice (values range from -10 to 10) ;
  • Pitch - the pitch of a voice (values range from -10 to 10) ;
  • Volume - the volume (values range from 0 to 100).

A tag applies to all subsequent text. The values are separated by semicolons. For example:

This text will be spoken by the default voice of Balabolka. {{Voice=Kimberly;0;0;100}} The voice 'Kimberly' will read the other text.

The tag's content is case insensitive. Values for some properties can be omitted:

{{voice=eric;;;50}}

{{Voice=Hans;-1}}

{{Voice=Rachel}}

To return to the default voice, use this tag:

{{Voice=}}

Warning! It is impossible to switch between SAPI 5 voices and voices of the Microsoft Speech Platform.

Pause

A specified number of milliseconds of silence can be inserted into the output audio file. For example:

One hundred twenty milliseconds of silence {{Pause=120}} just occurred.


Phonetic Alphabets

A phonetic alphabet contains combinations of letters, numbers, and characters which are known as "phones". A phone represents a discrete sound in a spoken language. Phones are used to create phonetic spellings that determine how a word should be pronounced to be spoken. Speech engines support three phonetic alphabets:

  • International Phonetic Alphabet (IPA)
  • Speech API (SAPI) Phone Set
  • Universal Phone Set (UPS)

International Phonetic Alphabet is a system of phonetic notation based primarily on the Latin alphabet, devised as a standardized representation of the sounds of spoken language. You can use this phonetic alphabet to specify pronunciations for any language.

The first languages created by Microsoft for text-to-speech on computers specified pronunciations of words using the SAPI Phone Set. A phone consists of one or more characters from a phonetic alphabet that describe a discreet sound in a spoken language. The following languages use the SAPI Phone Set to describe the sounds of each language: Chinese, English, French, German, Japanese, Spanish.

More recently, Microsoft developed the Universal Phone Set, a machine-readable phonetic alphabet that is based on the International Phonetic Alphabet. UPS is a more powerful phonetic alphabet than the SAPI Phone Set, can be used to describe the sounds of any new language, and is easier to map to other machine-readable phonetic alphabets such as X-SAMPA, SAMPA or ASCII-IPA.

The user creates the pronunciation using the XML PRON tag. For example, here are two phonetic spellings that a speech engine can use to speak the word "hello" in US English:

<pron sym="h eh - l ow 1"/>

<pron sym="H EH S1 L O"/>

The first example uses phones from the SAPI phone set. The "1" is a stress symbol that indicates which syllable should be accented. The phones are space-delimited, and the "-" separates the syllables in the word. The second example uses phones from the Universal Phone Set. The letters indicate the spoken segments that make up the word. The "S1" is a stress symbol that indicates which syllable should be accented.

The current versions of IVONA voices do not support SAPI phonemes. The PRON tag is ignored. It is recommended to use the Speech Synthesis Markup Language (SSML) tag to provide a phonetic pronunciation for the specific text.

<phoneme alphabet="ipa" ph="təˈmeɪtoʊ">tomato</phoneme>

The PHONEME tag can be shortened:

<phoneme alphabet="ipa" ph="pəˈteɪtoʊ"/>

The SSML tag supports phonetic alphabets:

  • International Phonetic Alphabet (IPA)
  • Extended Speech Assessment Methods Phonetic Alphabet (X-SAMPA)

IPA symbols are difficult to enter from the keyboard. Balabolka allows to choose characters from the list of IPA symbols. Also the application can convert words to IPA symbols. The phonetic transcriptions are supported for languages:

  • English
  • French
  • German
  • Italian
  • Polish
  • Portuguese
  • Russian
  • Spanish
  • Turkish
  • Ukrainian

Text should be written in lower case; the capital vowels can be used to indicate a primary stress in words.


SAPI Phone Set

Microsoft Speech API uses a phonetic alphabet to express speech in phonemes. A phonetic alphabet defines all the phonemes which are used by a language, together with their properties and the data for their production as sounds. Users can create pronunciations for words that are not currently in the lexicon by using the phonemes represented in the following tables. The phoneme set is composed of a symbolic phonetic representation (SYM).

The user will be able to enter the SYM representation to create the pronunciation using the XML PRON tag. Each phoneme entry should be space delimited.

Example. Pronunciation for "hello":

<pron sym="h eh l ow"/>

For improved accuracy, the primary (1), secondary (2) stress markers, and the syllabic markers (-) can be added to the pronunciation.

Example. Pronunciation for "hello" using the primary stress (1) and the syllabic marker (-):

<pron sym="h eh - l ow 1"/>

SAPI Phone Set used for the following languages:

  • English (United States)
  • French
  • German
  • Italian
  • Spanish
  • Chinese
  • Japanese

US English Phonemes

Phoneme Symbol | Example | Transcription
1 | Primary stress |
2 | Secondary stress |
- | Syllable boundary (hyphen) |
& | Word boundary |
! | Sentence terminator (exclamation mark) |
, | Sentence terminator (comma) |
. | Sentence terminator (period) |
? | Sentence terminator (question mark) |
_ | Silence (underscore) |
aa | father | f aa 1 dh er
ae | cat | k ae 1 t
ah | but | b ah 1 t
ao | bought | b ao 1 t
aw | house | h aw 1 s
ax | about | ax b aw 1 t
ay | bite | b ay 1 t
b | book | b uh 1 k
ch | catch | k eh 1 ch
d | done | d ah 1 n
dh | breathe | b r i dh
eh | bet | b eh 1 t
er | bird | b er 1 d
ey | ate | ey 1 t
e@ | fairly | f e@ 1 l i
f | fog | f ao 1 g
g | good | g uh 1 d
h | hello | h eh l ow 1
ih | bit | b ih 1 t
iy | beat | b iy 1 t
i@ | here | h i@ 1
jh | jump | jh ah 1 mp
k | cat | k ae 1 t
l | lot | l aa 1 t
m | Mom | m aa 1 m
n | nod | n aa 1 d
ng | sing | s ih 1 ng
ow | boat | b ow 1 t
oy | boy | b oy 1
p | pot | p aa 1 t
r | rat | r ae 1 t
s | sit | s ih 1 t
sh | shut | sh ah 1 t
t | top | t aa 1 p
th | thick | th ih 1 k
uh | book | b uh 1 k
uw | boot | b uw 1 t
v | various | v eh 1 r i ih s
w | won | w ah 1 n
y | you | y uw 1
z | zoo | z uw 1
zh | casual | k ae 1 zh uw ah l

French Phonemes

Phoneme Symbol | Example | Transcription
1 | Primary stress |
2 | Secondary stress |
- | Syllable boundary (hyphen) |
& | Word boundary |
! | Sentence terminator (exclamation mark) |
, | Sentence terminator (comma) |
. | Sentence terminator (period) |
? | Sentence terminator (question mark) |
_ | Silence (underscore) |
a | patte | p a 1 t
aan | abandon | a b aan d aon 1
ao | comme | k ao 1 m
aon | bon | b aon 1
ax | le | l ax 1
b | bouche | b u 1 sh
ch | charlie | ch a 1 r l i
d | dame | d a 1 m
dz | jeudi | j oe dz i 1
e | marché | m a r sh e 1
eh | chère | sh eh 1 r
ehn | main | m ehn 1
eo | feu | f eo 1
f | fille | f i 1 j
g | garde | g a 1 r d
i | libre | l i 1 b r
j | pierre | p j e 1 r
jh | George | jh ao 1 r jh
k | chique | sh i k
l | langage | l aan g a 1 zh
m | mois | m w a 1
n | nonne | n ao 1 n
ng | shopping | sh ao p i 1 ng
nj | campagne | k aan p a 1 nj
o | animaux | a n i m o 1
oe | leur | l oe 1 r
oen | parfum | p a r f oen 1
p | pile | p i 1 l
q | hacher | q a sh e 1
r | route | r u t
s | adresser | a d r e s e 1
sh | chaise | sh eh 1 z
t | technique | t eh k n i 1 k
ts | énergétique | e n eh r zh e ts i 1 k
u | doux | d u 1
ue | une | ue 1 n
uh | Bush | b uh 1 sh
v | vive | v i 1 v
w | boire | b w a 1 r
yw | huile | yw i 1 l
z | zone | z ao 1 n
zh | juste | zh ue 1 s t

German Phonemes

Phoneme Symbol | Example | Transcription
1 | Primary stress |
2 | Secondary stress |
- | Syllable boundary (hyphen) |
& | Word boundary |
! | Sentence terminator (exclamation mark) |
, | Sentence terminator (comma) |
. | Sentence terminator (period) |
? | Sentence terminator (question mark) |
_ | Silence (underscore) |
a | Achtung | q a 1 x t uh ng
A | Name | n A 1 m ah
aan | Chance | sh aan 1 s ah
ah | bitte | b ih 1 t ah
ao | Hoffnung | h ao 1 f n uh ng
aon | Pompon | p aon 1 p aon 1
aw | Raum | rq aw 1 m
ay | Zeit | ts ay 1 t
b | besonders | b ah z ao 1 n d e@ s
c | China | c i 1 n A
ch | deutsch | d oy 1 ch
d | das | d a 1 s
e | mehr | m e 1 r
eh | Enkel | q eh 1 ng k el
EH | erklären | q eh r k l EH 1 rq en
ehn | Bassin | b a s ehn 1
el | Einzelnen | q ay 1 n ts el n en
em | einem | q ay 1 n em
en | einen | q ay 1 n en
er | Surfer | s er 1 f e@
ey | Display | d ih s p l ey 1
e@ | Kindern | k ih 1 n d e@ n
f | Fall | f a 1 l
g | glaube | g l aw 1 b ah
h | Haupt | h aw 1 p t
i | sieben | z i 1 b en
ih | immer | q ih 1 m e@
j | ja | j A 1
jh | Dschungel | jh uh 1 ng el
k | Kultur | k uh l t u 1 r
l | lieber | l i 1 b e@
m | mein | m ay 1 n
n | Name | n A 1 m ah
ng | Junge | j uh 1 ng ah
o | oder | q o 1 d e@
oe | öffnete | q oe 1 f n ah t ah
OE | Österreich | q OE 1 s t ah rq ay c
oen | Parfum | p a r f oen 1
oy | Europa | q oy rq o 1 p A
p | Parlament | p a r l a m eh 1 n t
pf | Pflicht | pf l ih 1 c t
q | aber | q A 1 b e@
r | Berliner | b eh r l i 1 n e@
rq | Runde | rq uh 1 n d ah
s | Szene | s ts e 1 n ah
sh | sprach | sh p rq A 1 x
t | tol | t ao 1 l
ts | Zimmer | ts ih 1 m e@
u | Uhren | q u 1 rq en
ue | hübsch | h ue 1 p sh
UE | über | q UE 1 b e@
uh | Schutz | sh uh 1 ts
v | wichtig | v ih 1 c t ih c
w | Mademoiselle | m a d ah m w a z eh 1 l
x | Buch | b u 1 x
z | selbst | z eh 1 l p s t
zh | Spionage | sh p i o n A 1 zh ah

Italian Phonemes

Phoneme Symbol | Example | Transcription
1 | Primary stress |
2 | Secondary stress |
- | Syllable boundary (hyphen) |
& | Word boundary |
! | Sentence terminator (exclamation mark) |
, | Sentence terminator (comma) |
. | Sentence terminator (period) |
? | Sentence terminator (question mark) |
_ | Silence (underscore) |
a | campo | k a 1 m p o
ao | nove | n ao 1 v e
b | barra | b a 1 rr a
ch | percento | p e r ch eh 1 n t o
d | mondo | m o 1 n d o
dz | zeta | dz eh 1 t a
e | venire | v e n i 1 r e
eh | lento | l eh 1 n t o
f | fine | f i 1 n e
g | gruppi | g r u 1 p i
i | si | s i
j | funzione | f u n ts j o 1 n e
jh | generazione | jh e n e r a ts j o 1 n e
k | economia | e k o n o m i 1 a
l | libri | l i 1 b r i
ll | gli | ll i
m | mai | m a 1 i
n | nord | n ao r d
nj | signor | s i 1 nj ao r
o | otto | ao 1 t t o
p | primo | p r i 1 m o
r | arrivederci | a rr i v e d e 1 r ch i
rr | arrivederci | a rr i v e d e 1 r ch i
s | sinistra | s i n i 1 s t r a
sh | scienza | sh eh 1 n ts a
t | tre | t r eh
ts | grazie | g r a 1 ts j e
u | punto | p u 1 n t o
v | venti | v e 1 n t i
w | Washington | w a 1 sh i ng t o n
z | svolta | z v o 1 l t a

Spanish Phonemes

Phoneme Symbol | Example | Transcription
1 | Primary stress |
2 | Secondary stress |
- | Syllable boundary (hyphen) |
& | Word boundary |
! | Sentence terminator (exclamation mark) |
, | Sentence terminator (comma) |
. | Sentence terminator (period) |
? | Sentence terminator (question mark) |
_ | Silence (underscore) |
a | aquí | a k i 1
b | Brasil | b r a s i 1 l
ch | Chile | ch i 1 l e
d | grande | g r a 1 n d e
e | este | e 1 s t e
f | función | f u n s xi o 1 n
g | segundo | s e g u 1 n d o
i | identidad | i d e n t i d a 1 d
j | yo | j o 1
k | casa | k a 1 s a
l | los | l o 1 s
ll | llamada | ll a m a 1 d a
m | manos | m a 1 n o s
n | no | n o 1
nj | año | a 1 nj o
o | bueno | b xu e 1 n o
p | para | p a 1 r a
r | para | p a 1 r a
rr | radio | rr a 1 d xi o
s | solo | s o 1 l o
sh | Bush | b u 1 sh
t | importante | i m p o r t a 1 n t e
u | uno | u 1 n o
w | Hollywood | o 1 l i w u d
x | general | x e n e r a 1 l
xi | iogur | xi o g u 1 r
xu | puedo | p xu e 1 d o

Chinese Phonemes

Phoneme Symbol | Example
- | Syllable boundary (hyphen)
! | Sentence terminator (exclamation mark)
& | Word boundary
, | Sentence terminator (comma)
. | Sentence terminator (period)
? | Sentence terminator (question mark)
_ | Silence (underscore)
+ | Primary stress
* | Secondary stress
1 | Tone 1
2 | Tone 2
3 | Tone 3
4 | Tone 4
5 | Tone 5
a | a 1 fei 1 (rogue)
ai | ai 4 ren 2 (lover)
an | an 1 quan 2 (safe)
ang | ang 1 zang 1 (dirty)
ao | jiao 1 ao 4 (proud)
ba | ba 4 ba 5 (dad)
bai | bai 2 se 4 (white)
ban | mu 4 ban 3 (board)
bang | bang 3 jia 4 (kidnap)
bao | yong 1 bao 4 (embrace)
bei | bei 3 fang 1 (north)
ben | ben 4 dan 4 (fool)
beng | beng 4 tiao 4 (jump)
bi | bi 2 zi 5 (nose)
bian | bian 4 hua 5 (change)
biao | biao 3 ge 2 (table)
bie | li 2 bie 2 (part with)
bin | bin 1 ke 4 (guest)
bing | shi 4 bing 1 (soldier)
bo | bo 2 dou 4 (wrestle)
bu | bu 4 xing 2 (walk)
ca | ca 1 gan 1 (wipe)
cai | cai 1 ce 4 (guess)
can | can 1 jia 1 (join)
cang | cang 1 ying 5 (fly)
cao | cao 1 chang 3 (playground)
ce | ce 4 liang 2 (measure)
cen | cen 1 ci 1 (uneven)
ceng | ceng 2 jing 1 (once)
cha | jian 3 cha 2 (check)
chai | chai 1 hui 3 (demolish)
chan | chan 3 ye 4 (industry)
chang | jing 1 chang 2 (often)
chao | chao 1 yue 4 (exceed)
che | qi 4 che 1 (automobile)
chen | chen 2 jiu 4 (old)
cheng | cheng 2 che 1 (ride)
chi | chi 2 dao 4 (late for)
chong | chong 1 man 3 (full of)
chou | chou 2 hen 4 (hatred)
chu | chu 2 fa 3 (division)
chuai | chuai 3 ce 4 (guess)
chuan | lun 2 chuan 2 (ship)
chuang | chuang 4 ye 4 (carve out)
chui | tie 3 chui 2 (hammer)
chun | chun 1 tian 1 (spring)
chuo | wo 4 chuo 4 (dirty)
ci | ci 2 qi 4 (porcelain)
cong | cong 2 lin 2 (thicket)
cou | jin 3 cou 4 (compact)
cu | cu 4 xiao 1 (sales promotion)
cuan | tao 2 cuan 4 (run away)
cui | cui 1 cu 4 (press)
cun | xiang 1 cun 1 (country)
cuo | cuo 4 wu 4 (error)
da | da 4 (big)
dai | dai 4 biao 3 (delegate)
dan | dan 4 shi 4 (but)
dang | dang 1 ran 2 (sure)
dao | dao 1 (knife)
de | de 5 (function word)
dei | dei 3 (must)
den | den 4 (yank)
deng | ban 3 deng 4 (wooden stool)
di | di 2 que 4 (certainly)
dia | dia 3 (coquetry voice)
dian | dian 3 (dot)
diao | diao 4 (hang)
die | die 1 dao 3 (tumble)
ding | jue 2 ding 4 (decide)
diu | diu 1 qi 4 (discard)
dong | dong 1 fang 1 (east)
dou | zhan 4 dou 4 (struggle)
du | du 4 jue 2 (stop)
duan | duan 3 (short)
dui | dui 4 (right)
dun | ting 2 dun 4 (halt)
duo | duo 1 yu 2 (unnecessary)
e | e 4 (hungry)
ei | ei 4 (yes)
en | en 1 hui 4 (favor)
er | er 3 (ear)
fa | fa 1 zhan 3 (development)
fan | fan 4 (rice)
fang | fang 2 jian 1 (room)
fei | fei 1 (fly)
fen | fen 1 bie 2 (separate)
feng | feng 1 (wind)
fo | fo 2 (buddha)
fou | fou 3 ding 4 (denial)
fu | fu 4 qin 1 (father)
ga | gan 1 ga 4 (awkward)
gai | ying 1 gai 1 (should)
gan | gan 1 jing 4 (neatness)
gang | gang 1 cai 2 (just)
gao | gao 1 (tall)
ge | pin 3 ge 2 (character)
gei | gei 3 yu 3 (give)
gen | gen 1 (root)
geng | geng 4 jia 1 (much more)
gong | gong 1 ren 2 (worker)
gou | zu 2 gou 4 (enough)
gu | gu 4 xiang 1 (hometown)
gua | xi 1 gua 1 (watermelon)
guai | qi 2 guai 4 (oddness)
guan | guan 1 bi 4 (close)
guang | guang 1 (light)
gui | gui 3 (ghost)
gun | gun 4 (stick)
guo | guo 4 qu 4 (past)
ha | ha 1 (sound of laugh)
hai | hai 2 zi 5 (child)
han | chu 1 han 4 (sweat)
hang | hang 2 xing 2 (sail)
hao | hao 3 (good)
he | he 2 (river)
hei | hei 1 (black)
hen | hen 3 (very)
heng | heng 2 xiang 4 (landscape orientation)
hong | hong 2 (red)
hou | hou 2 zi 5 (monkey)
hu | hu 2 xu 1 (beard)
hua | hua 4 (picture)
huai | huai 4 (bad)
huan | huan 2 jing 4 (environment)
huang | huang 2 se 4 (yellow)
hui | hui 1 huang 2 (refulgence)
hun | hun 2 zhuo 2 (muddy)
huo | huo 3 (fire)
ji | ji 2 shi 2 (in time)
jia | jia 4 qi 1 (holiday)
jian | jian 3 dan 1 (simple)
jiang | jiang 1 (river)
jiao | jiao 1 tong 1 (traffic)
jie | jie 2 ri 4 (feast)
jin | jin 3 zhang 1 (strain)
jing | gan 1 jing 4 (neatness)
jiong | jiong 3 po 4 (embarrassed)
jiu | jiu 3 (nine)
ju | ju 4 zi 5 (sentence)
juan | juan 3 qu 1 (curl)
jue | jue 2 ding 4 (decide)
jun | jun 1 dui 4 (army)
ka | ka 3 che 1 (truck)
kai | kai 3 xuan 2 (triumph)
kan | kan 4 (see)
kang | di 3 kang 4 (resist)
kao | kao 3 shi 4 (test)
ke | ke 3 (thirsty)
kei | kei 1 (scold)
ken | ken 3 ding 4 (affirm)
keng | keng 1 hai 4 (entrap)
kong | kong 1 qi 4 (air)
kou | kou 3 (mouth)
ku | jian 1 ku 3 (trial)
kua | kua 1 jiang 3 (praise)
kuai | kuai 4 (fast)
kuan | kuan 1 kuo 4 (openness)
kuang | kong 1 kuang 4 (void)
kui | kui 1 qian 4 (owe)
kun | kun 4 nan 2 (hard)
kuo | kuo 4 da 4 (enlarge)
la | la 4 jiao 1 (hot pepper)
lai | lai 2 (come)
lan | lan 2 se 4 (blue)
lang | lang 2 (wolf)
lao | lao 3 (old)
le | kuai 4 le 4 (happy)
lei | lei 2 (thunder)
leng | leng 3 ku 4 (steeliness)
li | li 2 (pear)
lia | lia 2 (two)
lian | lian 3 (face)
liang | li 4 liang 4 (power)
liao | zuo 2 liao 4 (seasoning)
lie | lin 3 lie 4 (severe)
lin | lin 3 lie 4 (severe)
ling | ling 2 mu 4 (mausoleum)
liu | liu 2 dong 4 (flow)
lo | lo 5 (function word)
long | long 2 (dragon)
lou | lou 4 (leak)
lu | lu 4 di 4 (land)
luan | hun 4 luan 4 (chaos)
lue | ce 4 lue 4 (tactic)
lun | yi 4 lun 4 (discuss)
luo | xia 4 luo 4 (whereabouts)
lv | lv 4 se 4 (green)
ma | ma 3 (horse)
mai | mai 2 zang 4 (bury)
man | man 3 zu 2 (satisfy)
mang | cong 1 mang 2 (hurry)
mao | mao 1 (cat)
me | shen 2 me 5 (what)
mei | mei 2 you 3 (no)
men | wo 3 men 2 (we)
meng | meng 4 (dream)
mi | hun 1 mi 2 (coma)
mian | mian 4 ji 5 (area)
miao | miao 4 (temple)
mie | mie 4 jue 2 (annihilation)
min | ren 2 min 2 (people)
ming | ming 2 bai 2 (clearness)
miu | huang 1 miu 4 (absurd)
mo | mo 4 shui 3 (ink)
mou | mou 2 lue 4 (trick)
mu | mu 4 biao 1 (target)
na | na 4 li 3 (there)
nai | nai 3 nai 5 (grandmother)
nan | nan 2 fang 1 (south)
nang | nang 2 kuo 4 (include)
nao | re 4 nao 4 (liveliness)
ne | mu 4 ne 4 (numb)
nei | nei 4 bu 4 (inside)
nen | nen 4 lv 4 (light green)
neng | neng 2 gou 4 (be capable of)
ni | ni 3 (you)
nian | nian 2 (year)
niang | gu 1 niang 5 (girl)
niao | niao 3 (bird)
nie | nie 4 (bite)
nin | nin 2 (you)
ning | an 1 ning 2 (peace)
niu | niu 2 (bull)
nong | nong 2 min 2 (farmer)
nou | nou 4 (weeding)
nu | nu 3 li 4 (try hard)
nuan | wen 1 nuan 3 (warm)
nue | nue 4 dai 4 (abuse)
nuo | nuo 4 yan 2 (promise)
nv | nv 3 zi 3 (woman)
o | o 5 (function word)
ou | ou 1 yang 2 (Chinese first name)
pa | hai 4 pa 4 (scare)
pai | pai 4 qian 3 (send)
pan | pan 4 tu 2 (betrayer)
pang | pang 2 da 4 (huge)
pao | pao 3 (run)
pei | pei 2 ban 4 (accompany)
pen | pen 2 di 4 (pan)
peng | peng 2 pai 4 (surge)
pi | pi 2 fu 1 (skin)
pian | qi 1 pian 4 (cheat)
piao | piao 4 liang 4 (pretty)
pie | pie 1 kai 1 (put aside)
pin | pin 2 fan 2 (frequency)
ping | ping 2 zi 5 (bottle)
po | po 4 huai 4 (damage)
pou | pou 2 (hold something with cupped hand)
pu | pu 2 tao 5 (grape)
qi | qi 3 qiu 2 (beg)
qia | qia 4 dang 4 (proper)
qian | qian 1 xu 1 (humility)
qiang | qiang 2 da 4 (powerful)
qiao | qiao 3 miao 4 (artifice)
qie | xiu 1 qie 4 (shyness)
qin | qin 1 zi 4 (oneself)
qing | qing 1 song 1 (easy)
qiong | qiong 2 (poverty)
qiu | qiu 2 fan 4 (prisoner)
qu | qu 1 dong 4 (drive)
quan | quan 2 bu 4 (all)
que | que 4 ding 4 (ensure)
qun | qun 2 zhong 4 (crowd)
ran | ran 2 hou 4 (then)
rang | tu 3 rang 3 (soil)
rao | wei 2 rao 4 (surround)
re | re 4 (hot)
ren | ren 2 lei 4 (human being)
reng | reng 2 ran 2 (all the same)
ri | ri 4 chu 1 (sunrise)
rong | rong 2 yao 4 (glory)
rou | niu 2 rou 4 (beef)
ru | ru 2 guo 3 (if)
ruan | rou 2 ruan 3 (soft)
rui | rui 4 zhi 4 (smart)
run | shi 1 run 4 (wetness)
ruo | ruo 4 xiao 3 (puniness)
sa | sa 1 (three)
sai | bi 3 sai 4 (compete)
san | fen 1 san 4 (disperse)
sang | sang 4 (die)
sao | da 3 sao 3 (sweep)
se | yan 2 se 4 (color)
sen | sen 1 lin 2 (forest)
seng | seng 1 lv 3 (monk)
sha | sha 1 chang 3 (battlefield)
shai | ri 4 shai 4 (be exposed to the sun)
shan | shan 4 liang 2 (goodness)
shang | shang 4 mian 4 (top)
shao | shao 4 nian 2 (youth)
she | she 2 (snake)
shei | shei 2 (who)
shen | shen 2 me 5 (what)
sheng | sheng 1 yin 1 (voice)
shi | shi 4 fei 1 (dispute)
shou | shou 3 (hand)
shu | shu 4 mu 4 (tree)
shua | shua 1 zi 5 (brush)
shuai | shuai 1 da 3 (beat)
shuan | men 2 shuan 1 (latch)
shuang | shuang 1 (pair)
shui | shui 3 (water)
shun | shun 4 li 4 (all right)
shuo | shuo 1 (say)
si | si 4 (four)
song | song 4 bie 2 (send-off)
sou | sou 1 cha 2 (search)
su | su 4 du 4 (speed)
suan | suan 4 fa 3 (arithmetic)
sui | sui 1 ran 2 (though)
sun | sun 3 shi 1 (loss)
suo | suo 3 yi 3 (so)
ta | ta 1 men 2 (they)
tai | tai 4 (too)
tan | tan 2 hua 4 (talk)
tang | tang 2 (sugar)
tao | tao 2 pao 3 (flee)
te | te 4 bie 2 (special)
tei | tei 1 (very)
teng | ben 1 teng 2 (riot)
ti | ti 1 zi 5 (ladder)
tian | tian 1 (sky)
tiao | tiao 4 yue 4 (jump)
tie | tie 3 (iron)
ting | ting 1 (listen)
tong | tong 3 yi 1 (unify)
tou | tou 2 (head)
tu | tu 3 di 4 (earth)
tuan | tuan 2 jie 2 (solidify)
tui | tui 1 dong 4 (push)
tun | tun 2 ji 1 (store up)
tuo | tuo 1 yi 1 (undress)
wa | qing 1 wa 1 (frog)
wai | wai 4 mian 4 (outside)
wan | wan 4 (ten thousands)
wang | si 3 wang 2 (death)
wei | wei 3 da 4 (great)
wen | wen 2 hua 4 (culture)
weng | lao 3 weng 1 (oldman)
wo | wo 3 (I)
wu | wu 2 lun 4 (no matter what)
xi | xi 1 fang 1 (west)
xia | xia 4 mian 4 (bottom)
xian | xian 4 zai 4 (now)
xiang | xiang 4 (like)
xiao | xiao 3 (small)
xie | xie 3 (write)
xin | xin 1 (new)
xing | xing 2 dong 4 (act)
xiong | xiong 2 (bear)
xiu | xiu 1 xi 5 (break)
xu | xu 1 yao 4 (need)
xuan | xuan 1 bu 4 (declare)
xue | xue 3 (snow)
xun | xun 2 wen 4 (ask for)
ya | ya 4 zhou 1 (Asia)
yan | yan 4 zi 5 (swallow)
yang | tai 4 yang 2 (sun)
yao | yao 1 qiu 2 (require)
ye | ye 2 ye 5 (grandfather)
yi | yi 1 (one)
yin | yin 1 yue 4 (music)
ying | ying 1 gai 1 (should)
yo | yo 5 (function word)
yong | yong 3 yuan 3 (forever)
you | you 2 yu 2 (due to)
yu | yu 2 (fish)
yuan | yuan 2 lai 2 (formerly)
yue | yue 4 (month)
yun | yun 2 (cloud)
za | za 2 luan 4 (disorder)
zai | zai 4 jian 4 (farewell)
zan | zan 2 men 5 (our)
zang | ang 1 zang 1 (dirty)
zao | zao 3 chen 2 (morning)
ze | ze 2 ren 4 (response)
zei | zei 2 (thief)
zen | zan 4 yang 2 (praise)
zeng | zeng 1 jia 1 (add)
zha | zha 4 dan 4 (bomb)
zhai | qian 4 zhai 4 (owe)
zhan | zhan 4 li 4 (stand)
zhang | zhang 1 kai 1 (open)
zhao | zhao 1 huan 4 (summon)
zhe | zhe 4 li 3 (here)
zhei | zhei 5 (this)
zhen | zhen 1 zheng 4 (real)
zheng | zheng 4 yi 4 (justice)
zhi | yi 4 zhi 4 (restrain)
zhong | zhong 1 guo 2 (China)
zhou | si 4 zhou 1 (around)
zhu | zhu 1 (pig)
zhua | zhua 1 (grab)
zhuai | zhuai 4 (pull)
zhuan | zhuan 1 (brick)
zhuang | zhuang 1 (pretend)
zhui | zhui 1 (chase)
zhun | zhun 3 (precise)
zhuo | zhuo 1 (table)
zi | zi 4 (character)
zong | zong 3 (total)
zou | zou 3 (walk)
zu | zu 1 (rent)
zuan | zuan 4 (diamond)
zui | zui 4 (most)
zun | zun 1 (respect)
zuo | zuo 4 (sit)

Japanese Phonemes (Katakana)

Symbol | Phonetic | Unicode | Remarks
' |  | U+0027 | Accent position
+ |  | U+002B | Accent boundary
| |  | U+007C | Phrase boundary
. |  | U+002E | Sentence end (standard)
? |  | U+003F | Sentence end (interrogative)
! |  | U+0021 | Sentence end (exclamation)
_ |  | U+005F | One mora pause
゜ |  | U+309C | Semi-voiced sound
ァ | a | U+30A1 | Modifier
ア | a | U+30A2 |
ィ | i | U+30A3 | Modifier
イ | i | U+30A4 |
ゥ | u | U+30A5 |
ウ | u | U+30A6 |
ェ | e | U+30A7 | Modifier
エ | e | U+30A8 |
ォ | o | U+30A9 | Modifier
オ | o | U+30AA |
カ | ka | U+30AB |
ガ | ga | U+30AC |
キ | ki | U+30AD |
ギ | gi | U+30AE |
ク | ku | U+30AF |
グ | gu | U+30B0 |
ケ | ke | U+30B1 |
ゲ | ge | U+30B2 |
コ | ko | U+30B3 |
ゴ | go | U+30B4 |
サ | sa | U+30B5 |
ザ | za | U+30B6 |
シ | shi | U+30B7 |
ジ | ji | U+30B8 |
ス | su | U+30B9 |
ズ | zu | U+30BA |
セ | se | U+30BB |
ゼ | ze | U+30BC |
ソ | so | U+30BD |
ゾ | zo | U+30BE |
タ | ta | U+30BF |
ダ | da | U+30C0 |
チ | chi | U+30C1 |
ヂ | di | U+30C2 | Deprecated - use 30B8
ッ | q | U+30C3 |
ツ | tsu | U+30C4 |
ヅ | du | U+30C5 | Deprecated - use 30BA
テ | te | U+30C6 |
デ | de | U+30C7 |
ト | to | U+30C8 |
ド | do | U+30C9 |
ナ | na | U+30CA |
ニ | ni | U+30CB |
ヌ | nu | U+30CC |
ネ | ne | U+30CD |
ノ | no | U+30CE |
ハ | ha | U+30CF |
バ | ba | U+30D0 |
パ | pa | U+30D1 |
ヒ | hi | U+30D2 |
ビ | bi | U+30D3 |
ピ | pi | U+30D4 |
フ | hu | U+30D5 |
ブ | bu | U+30D6 |
プ | pu | U+30D7 |
ヘ | he | U+30D8 |
ベ | be | U+30D9 |
ペ | pe | U+30DA |
ホ | ho | U+30DB |
ボ | bo | U+30DC |
ポ | po | U+30DD |
マ | ma | U+30DE |
ミ | mi | U+30DF |
ム | mu | U+30E0 |
メ | me | U+30E1 |
モ | mo | U+30E2 |
ャ | ya | U+30E3 | Modifier
ヤ | ya | U+30E4 |
ュ | yu | U+30E5 | Modifier
ユ | yu | U+30E6 |
ョ | yo | U+30E7 | Modifier
ヨ | yo | U+30E8 |
ラ | ra | U+30E9 |
リ | ri | U+30EA |
ル | ru | U+30EB |
レ | re | U+30EC |
ロ | ro | U+30ED |
ヮ | wa | U+30EE | Modifier
ワ | wa | U+30EF |
ヰ | wi | U+30F0 | Deprecated - use 30A4
ヱ | we | U+30F1 | Deprecated - use 30A8
ヲ | wo | U+30F2 |
ン | nn | U+30F3 |
ヴ | vu | U+30F4 |
ヵ | ka | U+30F5 |
ヶ | ke | U+30F6 |
ヷ | va | U+30F7 |
ヸ | vi | U+30F8 |
ヹ | ve | U+30F9 |
ヺ | vo | U+30FA |
・ |  | U+30FB | Middle dot
ー |  | U+30FC | Prolonged sound
ヽ |  | U+30FD | Iteration
ヾ |  | U+30FE | Voiced iteration


Universal Phone Set

The Speech API (SAPI) Universal Phone Set (UPS) is a machine-readable phone set that is based on the International Phonetic Alphabet (IPA).

UPS Design Principles

The following design principles were used to select SAPI labels and phone IDs for UPS.

  1. UPS covers the IPA 1993 Unicode character set, plus some extra SAPI phones including some suprasegmental labels that are used in speech synthesis markup but are not found in IPA.
    • In most cases there is a one-to-one mapping between UPS and IPA. In these cases, the SAPI Phone ID can simply use the IPA hex Unicode value.
    • In some cases UPS is a superset of IPA. For example, UPS includes some unique phone labels for commonly used sounds such as diphthongs and nasalized vowels, which the IPA treats as compounds. These compounds are represented using the compounding symbol "+". This symbol is treated just like any other phone, and so must be space delimited in a lexicon: the compound of A and B is written A + B, not AB or A+B. The SAPI Phone IDs of such compounds are formed from the sequence of phone IDs making up the compound.
  2. UPS pronunciations consist of a string of UPS phones, each separated by whitespace. SAPI makes no distinction between segmental phones and diacritics, suprasegmentals, and tones, and so these must also be separated by whitespace like any other SAPI phone.
  3. The UPS phone labels are not restricted to use the SAPI phone labels from US English, Spanish, French, German, Japanese, or Chinese; however, where possible, existing SAPI labels were re-used. Two sets of guidelines were used in creating the phone label names:
    • The UPS phone set reflects orthography where possible but is not biased too heavily towards English.
    • Phone labels adhere to labeling conventions that apply across phonetic classes (e.g., lax vowels use the character 'H' as in 'IH', 'UH' and 'AH').
  4. The UPS phone set is case-sensitive. UPS phone labels are all defined using ASCII character strings.
    • Segmental phones (Consonants, Vowels, Clicks and Ejectives) are represented by upper-case alphabetic symbols. These may vary in length from one to three characters. In general, shorter symbols are used for more frequent phones.
    • Diacritics are represented by three-character, lower-case, alphabetic symbols.
    • Suprasegmentals and Tones may vary in length and contain non-alphabetic characters.

The Universal Phone Set should be used for all Microsoft-supported languages except the seven languages currently supported by SAPI: Chinese, English (United States), French, German, Italian, Japanese, Spanish.

Compound Tying Symbol

UPS provides unique phone labels for common compound sounds such as affricates and nasal vowels. However, less frequent compound sounds may also exist in some languages and need to be represented in SAPI lexicons. The Universal Phone Set provides a compounding or tying symbol “+” that can be used to describe composite sounds from any two phones.

The German affricate "PF", diphthong "AI", and nasal vowel "AN" exist as unique phones in UPS. However, they could also be represented as compounds. The following example shows that "PF" and "P + F" are equivalent and are distinct from the phone sequence "P F".

Unique Phone | Compound
PF | P + F
AI | A + I

The nasal vowel "AN" can be described as the "A" vowel with a nasal diacritic. All diacritics must follow a segmental phone, so "A nas" and "A + nas" are equivalent. The former is preferred, though SAPI does not enforce any particular use of "+" or diacritics.

Unique Phone | Compound
AN | A nas
AN | A + nas

Consonants

This is a listing and cross reference of the consonant phones that are used by the three phonetic alphabets.

UPS Consonant Labeling Conventions

Consonant symbols are one, two, or three characters in length. Single character labels are used for highly frequent, language-universal consonants. In general the first character signifies place plus voicing, and the second signifies manner. Labeling conventions carry across phonetic classes in the following ways:

Conventions for place of articulation and voicing labeling:

  • Dentals and alveloars use D for voiced and T for voiceless
  • Alveolars use N for nasal and R for approximant
  • Labiodentals use V for voiced and F for voiceless
  • Velars use G for voiced and K for voiceless, NG for nasal
  • Bilabials use B for voiced and P for voiceless stops, M for nasal
  • Laterals use L
  • Uvulars use Q
  • Pharyngeals use H
  • Palatals use X for voiceless and Y for voiced

Conventions for manner of articulation labeling:

  • Single-character labels have manner encapsulated in choice of symbol: for example, M is nasal
  • Trills double up the first symbol
  • Fricatives use H
  • Approximants use X
  • Retroflex uses R

Consonant Tables

There are two tables, each listing a different category of consonant phones:

  • Consonants
  • Affricates

The table columns contain the following information:

  • UPS. The phone label specified in Microsoft’s Universal Phone Set (UPS).
  • IPA. The phone label specified in the International Phonetic Alphabet (IPA) phone set.
  • Unicode. The Unicode value from the IPA phone set.
  • IPA Description. This column describes the features of the phone, such as place of articulation, manner of articulation, phonation type, and airstream mechanism.
  • ASCII-IPA. The equivalent phone in ASCII-IPA phone set for reference.
  • X-SAMPA. The equivalent phone in X-SAMPA for reference.
  • Example. A word that uses the phone and illustrates its sound.
  • Language. The language of the example word.

Consonant Phones

Consonants are speech sounds that are articulated with complete (voiceless) or partial closure of the vocal tract.

UPS | IPA | Unicode | IPA Description | ASCII-IPA | X-SAMPA | Example | Language
P | p | U+0070 | {blb,stp,vls} | p | p | put | English
B | b | U+0062 | {blb,stp,vcd} | b | b | big | English
M | m | U+006D | {blb,nas} | m | m | mat | English
BB | ʙ | U+0299 | {blb,trl,vcd} | B<trl> | B\ |  |
PH | ɸ | U+0278 | {blb,frc,vls} | P | p\ |  |
BH | β | U+03B2 | {blb,frc,vcd} | B | B | kabra | Spanish
MF | ɱ | U+0271 | {lbd,nas} | M | F |  |
F | f | U+0066 | {lbd,frc,vls} | f | f | fork | English
V | v | U+0076 | {lbd,frc,vcd} | v | v | vat | English
VA | ʋ | U+028B | {lbd,apr,vcd} | r<lbd> | v\ |  |
TH | θ | U+03B8 | {dnt,frc,vls} | T | T | thin | English
DH | ð | U+00F0 | {dnt,frc,vcd} | D | D | then | English
T | t | U+0074 | {alv,stp,vls} | t | t | talk | English
D | d | U+0064 | {alv,stp,vcd} | d | d | dig | English
N | n | U+006E | {alv,nas} | N | n | no | English
RR | r | U+0072 | {alv,trl,vcd} | r<trl> | r | torre, rojo | Spanish
DX | ɾ | U+027E | {alv,flp,vcd} | * | 4 | butter | US English
S | s | U+0073 | {alv,frc,vls} | s | s | sit | US English
Z | z | U+007A | {alv,frc,vcd} | z | z | zap | US English
LSH | ɬ | U+026C | {alv,lat,frc,vls} |  | K |  |
LH | ɮ | U+026E | {alv,lat,frc,vcd} | z<lat> | K\ | caballo | Spanish/Zulu
RA | ɹ | U+0279 | {alv,apr} | r | r\ | puro | Spanish
L | l | U+006C | {alv,lat,apr,vcd} | l | l | lid | US English
L vel | ɫ | U+026B | {alv,lat,apr,vcd} vel |  | 5 |  |
SH | ʃ | U+0283 | {pla,frc,vls} | S | S | she | US English
SH pal | ʆ | U+0286 | {pla,frc,vls} pal |  |  |  |
ZH | ʒ | U+0292 | {pla,frc,vcd} | Z | Z | pleasure | US English
ZH pal | ʓ | U+0293 | {pla,frc,vcd} pal |  |  |  |
TR | ʈ | U+0288 | {rfx,stp,vls} | t. | t` |  |
DR | ɖ | U+0256 | {rfx,stp,vcd} | d. | d` |  |
NR | ɳ | U+0273 | {rfx,nas,vcd} | n. | n` |  |
DXR | ɽ | U+027D | {rfx,flp,vcd} | *. | r` |  |
SR | ʂ | U+0282 | {rfx,frc,vls} | s. | s` |  |
ZR | ʐ | U+0290 | {rfx,frc,vcd} | z. | z` |  |
R | ɻ | U+027B | {rfx,apr,vcd} | r. | r\` | red | US English
LR | ɭ | U+026D | {rfx,lat,vcd} | l. | l` |  |
RR rho | ɼ | U+027C | {rfx,trl} |  |  |  |
CT | c | U+0063 | {pal,stp,vls} | c | c |  |
JD | ɟ | U+025F | {pal,stp,vcd} | J | J\ |  |
NJ | ɲ | U+0272 | {pal,nas,vcd} | J |  | oignon | French
C | ç | U+00E7 | {pal,frc,vls} | C | C | sicher | German
CJ | ʝ | U+029D | {pal,frc,vcd} | C<vcd> | j\ |  |
J | j | U+006A | {pal,apr,vcd} | j | j | yard | US English
LJ | ʎ | U+028E | {pal,lat,apr,vcd} | l^ | L | gli | Italian
W | w | U+0077 | {lbv,apr,vcd} | w | w | with | US English
K | k | U+006B | {vel,stp,vls} | k | k | cut | US English
G | g | U+0067 | {vel,stp,vcd} | g | g | gut | US English
NG | ŋ | U+014B | {vel,nas} | N | N | sing | US English
X | x | U+0078 | {vel,frc,vls} | x | x | mujer | Spanish
GH | ɣ | U+0263 | {vel,frc,vcd} | Q | G | luego | Spanish
GA | ɰ | U+0270 | {vel,apr,vcd} | j<vel> | M\ |  |
GL | ʟ | U+029F | {vel,lat,vcd} | L | L\ |  |
QT | q | U+0071 | {uvl,stp,vls} | q | q |  |
QD | ɢ | U+0262 | {uvl,stp,vcd} | G | G\ |  |
QN | ɴ | U+0274 | {uvl,nas,vcd} | n" | N\ |  |
QQ | ʀ | U+0280 | {uvl,trl,vcd} | - | R\ |  |
QH | χ | U+03C7 | {uvl,frc,vls} | X | X |  |
RH | ʁ | U+0281 | {uvl,frc,vcd} | g" | R | rond | French
HH | ħ | U+0127 | {phr,frc,vls} | H | X\ |  |
HG | ʕ | U+0295 | {phr,frc,vcd} | H<vcd> | ?\ |  |
GT | ʔ | U+0294 | {glt,stp,vls} | ? | ? |  |
H | h | U+0068 | {glt,frc,vls} | h | h | help | US English
WJ | ɥ | U+0265 | {lbp,apr,vcd} | j<rnd> | H | huit;juin | French

Affricates

Affricates are consonants that begin as stops but release as a fricative.

The SAPI UPS includes explicit phones for the most frequent affricates in the highest priority languages. The IPA Unicode specification includes some of these phones, though not all of them.

The table shows the constituent phones (UPS Compound) that were combined to create the resulting explicit phone (UPS).

UPS | UPS Compound | IPA | Unicode | IPA Description | Example | Language
PF | P + F | p.f |  | {lbd,aff,vls} | Pfahl | German
TS | T + S | t.s / ʦ | U+02A6 | {den,aff,vls} | Zahl | German
CH | T + SH | t.ʃ / ʧ | U+02A7 | {pla,aff,vls} | chin | English
JH | D + ZH | d.ʒ / ʤ | U+02A4 | {pla,aff,vcd} | joy | English
JJ | J + J | j.j |  | {pal,aff,vcd} | hielo | Spanish
DZ | D + Z | d.z / ʣ | U+02A3 | {den,aff,vcd} | zona | Italian
CC | T + SC | t.ɕ / ʨ | U+02A8 | {pla,aff,vls} |  | Mandarin
TSR | T + SR | t.ʂ |  | {rfx,aff,vls} |  | Mandarin
JC | D + ZC | d.ʑ / ʥ | U+02A5 | {pla,aff,vcd} |  |

Many other affricates or compound consonants exist and may be required by other languages. For example, there are about 20 Italian geminate consonants (doubled consonants). UPS does not include dedicated phones for these, but allows them to be defined using the + symbol, or the length diacritic 'lng' in the case of geminates.

Vowels

This is a listing and cross reference of the vowel phones that are used by the three phonetic alphabets.

UPS Labeling Conventions for Vowels

The UPS labeling conventions for vowels were designed to make the phones more intuitive and maintain phonetic similarity across each class. The labels follow these conventions:

  • Cardinal or main vowels use single character labels
  • Non-cardinal vowels and common diphthongs use two characters
  • Maximum label length is three characters
  • Centralized vowel labels use X, as in AX, IX, UX
  • Checked vowel (usually must be followed by a consonant in a stressed syllable) labels use H, as in IH, UH
  • U or O signifies lip rounding, as in AU, AO, EU

Vowel Tables

There are four tables, each listing a different category of vowel phones:

  • Monophthong
  • Diphthong
  • German Diphthong
  • Nasal

Monophthong Vowel Phones

Monophthong (literally "one sound" or "one tone") vowels are those whose articulation at both beginning and end is relatively fixed, and which does not glide up or down towards a new position of articulation.

UPS | IPA | Unicode | IPA Description | ASCII-IPA | X-SAMPA | Example | Language
I | i | U+0069 | {hgh,fnt,unr,vwl} | I | i | feel | English
Y | y | U+0079 | {hgh,fnt,rnd,vwl} | Y | y | du | French
IX | ɨ | U+0268 | {hgh,cnt,unr,vwl} | i" | I\ |  |
YX | ʉ | U+0289 | {hgh,cnt,rnd,vwl} | U" | } |  |
UU | ɯ | U+026F | {hgh,bck,unr,vwl} | u- | M |  |
U | u | U+0075 | {hgh,bck,rnd,vwl} | u | u | too | English
IH | ɪ | U+026A | {smh,fnt,unr,vwl} | I | I | fill | English
YH | ʏ | U+028F | {smh,fnt,rnd,vwl} | I. | Y | hübsch | German
UH | ʊ | U+028ª | {smh,bck,rnd,vwl} | U | U | book | English
E | e | U+0065 | {umd,fnt,urd,vwl} | e | e | ses | French
EU | ø | U+00F8 | {umd,fnt,rnd,vwl} | Y | 2 | blöd | German
EX | ɘ | U+0258 | {umd,cnt,urd,vwl} | @<umd> | @\ |  |
OX | ɵ | U+0275 | {umd,cnt,rnd,vwl} |  | 8 |  |
OU | ɤ | U+0264 | {umd,bck,urd,vwl} | o- | 7 |  |
O | o | U+006F | {umd,bck,rnd,vwl} | o | o | go | English
AX | ə | U+0259 | {mid,cnt,unr,vwl} | @ | @ | ago | English
AX rho | ɚ | U+025ª | {mid,cnt,rho,vwl} | R |  | forensic | English
EH | ɛ | U+025B | {lmd,fnt,unr,vwl} | E | E | pet | English
OE | œ | U+0153 | {lmd,fnt,rnd,vwl} | W | 9 | plötzlich | German
ER | ɜ | U+025C | {lmd,cnt,unr,vwl} | V" | 3 | bird | UK English
ER rho | ɝ | U+025D | {lmd,cnt,unr,rho,vwl} | @. |  | bird | US English
UR | ɞ | U+025E | {lmd,cnt,rnd,vwl} | O" | 3\ |  |
H | ʌ | U+028C | {lmd,bck,unr,vwl} | V | V | cut | English
AO | ɔ | U+0254 | {lmd,bck,rnd,vwl} | O | O | dog | English
AE | æ | U+00E6 | {sml,fnt,unr,vwl} | & | { | cat | English
AEX | ɐ | U+0250 | {sml,cnt,unr,vwl} | 6 |  | Besser | German
A | a | U+0061 | {low,fnt,unr,vwl} | a | a | valle | Spanish
AOE | ɶ | U+0276 | {low,fnt,rnd,vwl} | &. | & |  |
AA | ɑ | U+0251 | {low,bck,unr,vwl} | A | A | father | English
Q | ɒ | U+0252 | {low,bck,rnd,vwl} | A. | Q | hot | English

Diphthong Vowel Phones

In addition to monophthongs, many languages contain diphthongs or even triphthongs. Diphthong (literally "two sounds" or "two tones") vowels are those that change quality during their pronunciation, or "glide", with a smooth movement of the tongue from one articulation to another, as in the English words eye, boy, and cow.

Diphthongs and triphthongs can be represented in UPS as vowel compounds, using the + symbol. However to make lexicons more readable, UPS also contains phones for common diphthongs. The table below shows both the compounding of two phones using the + symbol and the resultant UPS phone.

UPS Compound | UPS | IPA | X-SAMPA | Example | Language | Example | Language
E + I | EI | e.ɪ | eI | late | English | late | English
A + UH | AU | ɑ.ʊ | aU | foul | English | Haus | German
AO + I | OI | ɔ.ɪ | OI | toy | English | Kreuz | German
A + I | AI | ɑ.ɪ | ai | bite | English | Eis | German
I + AX | IYX | i.ə | i:6 | Tier | German | fear | English
Y + AX | UYX | y.ə | y:6 | Tür | German |  |
EH + AX | EHX | ɛ.ə | E6 | Berg | German | stairs | English
U + AX | UWX | u.ə | u:6 | Kur | German | lure | English
O + AX | OWX | o.ə | o:6 | Ohr | German | boa | English
AO + AX | AOX | ɔ.ə | O6 | dort | German | four | English

German Diphthong Vowels

The German language has several more centering diphthongs that must be represented as phone compounds and do not have explicit UPS phones assigned to them. The 'lng' diacritic is included for phonetic completeness.

UPS Compound | IPA | X-SAMPA | Example | Language
IH + AX | ɪ.ə | I6 | Wirt | German
YH + AX | ʏ.ə | Y6 | Türke | German
EY lng + AX | e.ə | e:6 | schwer | German
EH lng + AX | ɛ:.ə | E:6 | Bär | German
EU lng + AX | ø.ə | 2:6 | Föhr | German
OE + AX | œ.ə | 96 | Wörter | German
A lng + AX | a.ə | a:6 | Haar | German
A + AX | a.ə | a6 | hart | German
UH + AX | ʊ.ə | U6 | kurz | German

Nasal Vowel Phones

UPS contains phones for four nasal vowels. These are shown in the following table with French examples.

Compound | UPS | X-SAMPA | Example | Language
E nas | EN | e~ | vin | French
A nas | AN | a~ | vent | French
O nas | ON | o~ | bon | French
OE nas | OEN | 9~ | brun | French

Diacritics

This is a listing and cross reference of the diacritic phones that are used by the three phonetic alphabets.

Diacritic Phones

Diacritics are used to modify segmental phones (vowels, consonants, clicks, and ejectives) with additional phonetic detail. A diacritic cannot stand-alone. Diacritics must modify the preceding segmental phone. Any number of diacritics can follow a segmental symbol.

UPS | IPA | Unicode | IPA Description | ASCII-IPA | X-SAMPA
+ | ͡ | U+0361 | Tie bar |  | _
adv | o̟ | U+031F | Advanced |  | _+
api | t̺ | U+033A | Apical |  | _a
asp | tʰ | U+02B0 | Aspirated | ^lt;h> {asp} | _h
atr | e̘ | U+0318 | Advanced tongue root |  | _A
bvd | b̤ | U+0324 | Breathy voiced |  | _t
cen | ë | U+0308 | Centralized | " | _"
cvd | b̰ | U+0330 | Creaky voiced |  | _k
den | t̪ | U+032A | Dental | [ / {dnt} | _d
ejc | pʼ | U+02BC | Ejective | {ejc} | _>
lab | tʷ | U+02B7 | Labialised | <w> {lzd} | _w
lam | t̻ | U+033B | Laminal |  | _m
lar | dˡ | U+02E1 | Lateral release |  | _l
lla | n̼ | U+033C | Linguolabial |  | _N
low | e̞ | U+031E | Lowered |  | _o
lrd | o̜ | U+031C | Less rounded |  | _c
mcn | e̽ | U+033D | Mid-centralized |  | _x
mrd | o̹ | U+0339 | More rounded |  | _O
nar | d̚ | U+031A | No audible release |  | _}
nas | ñ | U+0303 | Nasalized | ~ / <nzd> | ~ / _~
nsr | oⁿ | U+207F | Nasal release |  | _n
nsy | n̯ | U+032F | Non-syllabic |  | _^
pal | tʲ | U+02B2 | Palatalized | ; / {pzd} | '
phr | nˤ | U+02E4 | Pharyngealized |  | _?\
rai | e̝ | U+031D | Raised |  | _r
ret | o̱ | U+0331 | Retracted |  | _-
rho | ə˞ | U+02DE | Rhoticity |  | `
rtr | e̙ | U+0319 | Retracted tongue root |  | _q
syl | n̩ | U+0329 | Syllabic | {syl} | = / _=
vcd | s̬ | U+032C | Voiced |  | _v
vel | tˠ | U+02E0 | Velarized | {vzd} | _G
vls | n̊ | U+030A | Voiceless |  | _0
vph | l̴ | U+0334 | Velarized or pharyngealized | {fzd} | _e

Suprasegmentals

This is a listing and cross reference of the suprasegmental phones that are used by the three phonetic alphabets.

Suprasegmental Phones

Suprasegmentals describe the features of a language above the level of individual consonants and vowels, such as prosody, tone, length, and stress.

The first set of suprasegmental symbols, up to and including “linking”, map directly to the IPA suprasegmental set and therefore have the IPA Unicode value. This set includes length diacritics for long, half-long, and extra-short. Length is often used phonemically, so length markers could also belong in the diacritics table. For this reason they are given the lower case label format of a diacritic.

The remaining suprasegmental symbols are used in UPS to describe intonation contours in text-to-speech markup (SSML prompt documents). These UPS symbols were formed by prefixing the original SAPI labels with an underscore. This makes them more easily identifiable as a class and removes any ambiguity with other IPA symbols. For example the old SAPI symbol '!' sentence terminator is the IPA symbol for an alveolar click.

UPS | IPA | Unicode | IPA Description | X-SAMPA | SAPI Equivalent
S1 | ˈ | U+02C8 | Primary stress | " | 1
S2 | ˌ | U+02CC | Secondary stress | % | 2
. | . | U+002E | Syllable break | . |
_| | | | U+007C | Minor (foot) group | | |
_|| | ‖ | U+2016 | Major (intonation) group | || |
lng | ː | U+02D0 | Long | : |
hlg | ˑ | U+02D1 | Half-long | :\ |
xsh | ˘ | U+02D8 | Extra-short | _X |
_^ | ‿ | U+203F | Linking (absence of a break) | -\ |
_! |  |  | Intonation - exclamation |  | ! Sentence terminator (exclamation mark)
_& |  |  | Intonation - continue |  | & Word boundary
_, |  |  | Intonation - incompletion rise |  | , Sentence terminator (comma)
_s |  |  | Silence |  | _ Silence (underscore)
_. | ↘ | U+2198 | Intonation – fall | <F> | . Sentence terminator (period)
_? | ↗ | U+2197 | Intonation - question rise | <R> | ? Sentence terminator (question mark)

Clicks and Ejectives

This is a listing and cross reference of the click and ejective phones that are used by the three phonetic alphabets.

Click and Ejective Phones

IPA uses a diacritic to describe ejectives, but has specific phones for clicks and implosives. Clicks and ejectives are voiceless consonants, although implosives may be partially voiced.

UPS | IPA | Unicode | IPA Description | X-SAMPA
PCK | ʘ | U+0298 | blb,clk | O\
TCK | ǀ | U+01C0 | dnt,clk | |\
NCK | ! | U+0021 | alv,clk | !\
CCK | ǂ | U+01C2 | pla,clk | =\
LCK | ǁ | U+01C1 | alv,lat,clk | |\|\
BIM | ɓ | U+0253 | blb,imp,vcd | b_<
DIM | ɗ | U+0257 | dnt-alv,imp,vcd | d_<
QIM | ʛ | U+029B | uvl,imp,vcd |
QIM vls | ʠ | U+02A0 | uvl,imp,vls |
GIM | ɠ | U+0260 | vel,imp,vcd | g_<
JIM | ʄ | U+0284 | pal,imp,vcd |
P ejc | pʼ | 0070 02BC | blb,ej | b_>
T ejc | tʼ | 0074 02BC | dnt-alv, ej | t_>
K ejc | kʼ | 006B 02BC | vel ej | g_>
S ejc | sʼ | 0073 02BC | alv fric ej | s_>
QT ejc | qʼ | 0071 02BC | uvl,ej |

Tones

This is a listing and cross reference of the tone phones that are used by the three phonetic alphabets.

Tone Phones

Tone describes the use of pitch in speech sounds to distinguish lexical or grammatical meaning. Lexical tones can follow a vowel or syllabic consonant. They can be made up of simple levels, on a universal scale which has a maximum of five level contrasts, or they can be contours composed of sequences of tones. A sequence of three tones should be sufficient to describe any tone contour.

IPA contains a mixture of lexical tones and contour tones. UPS covers the five lexical tones found in IPA, plus upstep and downstep. All contour tones can be represented in UPS by compound tones.

UPS does not include tonal symbols for the following IPA symbols: Rising, Falling, High Rising, Low Rising and Rising-Falling. These can all be defined in UPS using tone sequences. Global Rise and Global Fall are equivalent to "intonation – fall" and "intonation – question rise" in UPS ("Suprasegmentals").

UPS | IPA | Unicode | IPA Description | X-SAMPA
T5 | e̋ | U+030B | Extra high Level | _T
T4 | é | U+0301 | High Level | _H
T3 | ē | U+0304 | Mid Level | _M
T2 | è | U+0300 | Low Level | _L
T1 | ȅ | U+030F | Extra Low Level | _B
T- | ↓ | U+2193 | Downstep | !
T+ | ↑ | U+2191 | Upstep | ^

Other Phones

This is a listing and cross reference of the uncommon phones that are not listed in the other phone tables, but are used by the three phonetic alphabets.

Other Phones

UPS | IPA | Unicode | IPA Description | ASCII-IPA | X-SAMPA
WH | ʍ | U+028D | lbv,frc,vls | w<vls> | W
ESH | ʜ | U+029C | epl,frc,vls |  | H\
EZH | ʢ | U+02A2 | epl,frc,vcd |  | <\
ET | ʡ | U+02A1 | epl,stp |  | >\
SC | ɕ | U+0255 | pla,frc,vls |  | s\
ZC | ʑ | U+0291 | pla,frc,vcd |  | z\
LT | ɺ | U+027A | alv,lat,flp | *<lat> | l\
SHX | ɧ | U+0267 | simultaneous SH and X |  | x\
HZ | ɦ | U+0266 | glt,frc,vcd |  | h\