- La téléphonie Internet libre basée sur Asterisk par Sylvain Thérien - http://www.tux89.com -

Synthèse vocale en français sous Asterisk

Vous avez toujours rêvé d’entendre Asterisk parler français, et bien voici vos souhaits réalisés. Dans cet article, nous allons mettre en place un synthétiseur vocal qui permettra à Asterisk (version 1.4 et 1.6) d’utiliser en intrant un texte qui lui est soumis et de le transformer afin que vos applications et menus RVI puissent vous livrer le message vocalement en français. Nous utiliserons des composants qui seront installés localement sur la même plateforme que notre serveur Asterisk. Il va sans dire que nous ne serons dépendants d’aucun composant externe pour ce service.

Nous devrons installer trois différents composants pour ce projet, soit MBROLA, Lia_Phon et Liambrola.

MBROLA

MBROLA [1] est un synthétiseur vocal initié par le laboratoire de RTT de la Faculté Polytechnique de Mons en Belgique. Il est à l’origine d’un projet visant à obtenir un ensemble de synthétiseurs vocaux pour une multitude de langues qui est fourni gratuitement lorsqu’il s’agit d’applications non commerciales et non militaires. MBROLA n’est pas sous licence de source libre.

D’un point de vue plus concert, le synthétiseur vocal MBROLA est basé sur la concaténation de diphones. Ainsi, il prend une liste de phonèmes en entrée, avec des informations prosodiques, c’est-à-dire la durée des phonèmes et une description linéaire par morceaux de la tonalité, et produit des échantillons de parole sur 16 bits linéaire. Les fréquences d’échantillonnage proviennent d’une base de données de diphone. MBROLA n’est donc pas un synthétiseur « Text-To-Speech », puisqu’il n’accepte pas de texte brut en entrée, mais plutôt une représentation de phonèmes.

Chaque base de données de diphone est adaptée au format MBROLA. Une voix françaises a été mise à la disposition par les auteurs de MBROLA, et le projet MBROLA a été lui-même organisée de manière à inciter les laboratoires de recherche et les entreprises à partager leurs bases de données de diphone.

Il est à noter que les bases de données sont aussi rendues disponibles pour utilisation non commerciale et utilisation non militaires dans le cadre du projet MBROLA.

Lia_Phon

Comme nous venons de le voir, MBROLA n’étant pas un synthétiseur « Text-To-Speech », nous utiliserons Lia_Phon pour cette fonction, en le reliant au synthétiseur vocal MBROLA, afin d’obtenir effectivement une sortie audio basée sur un texte d’origine.

Lia_Phon est un système de phonétisation de textes qui a été développé au LIA par Frédéric Bechet. Ce système permet de nettoyer, étiqueter, accentuer et phonétiser un texte libre. Un module de génération d’une prosodie minimale est également fourni afin de générer des fichiers compatibles avec le synthétiseur vocal MBROLA. Lia_Phon est disponible gratuitement sous licence GNU GPL.

Installation

Afin d’installer MBROLA, nous devons télécharger son noyau, qui est composé d’un exécutable MBROLA et de voix additionnelles. Un fichiers zip dépendent de notre système d’exploitation Linux sera copié. Le fichier binaire en soi prend moins de 100 kilo-octets et les voix pour une langue prennent environ 5 méga-octets. Notez que si vous désirez à titre d’intérêt personnel explorer MBROLA et mieux comprendre le fonctionnement du synthétiseur sur une plateforme Microsoft, il est possible pour vous de télécharger une version graphique pour Windows XP.

[2]

[3]

Revenons maintenant à Linux et commençons notre installation. Ouvrez une session « Shell » sur Asterisk et exécutez les lignes de commandes suivantes :

cd /usr/local/bin
mkdir mbrola
cd mbrola
wget http://tcts.fpms.ac.be/synthesis/mbrola/bin/pclinux/mbr301h.zip
unzip mbr301h.zip
rm -f mbr301h.zip
ln -s mbrola-linux-i386 mbrola

Pour plus d’information, lire le fichier « readme.txt » situé dans le répertoire /usr/local/bin/mbrola.

Nous avons maintenant besoin de voix pour la langue française. Les choix possibles sont les suivants :

Français masculin (fr1-990204.zip) Faculté Polytechnique De Mons
Français féminin (fr2-980806.zip) Celine Egea
Français masculin (fr3-990324.zip)  Babel Technology
Français féminin (fr4-990521.zip) Babel Technology
Français belge (fr5-991020.zip) Faculté Polytechnique De Mons
Français masculin (fr6-010330.zip) Faculté Polytechnique De Mons
Français belge (fr7-010330.zip) Faculté Polytechnique De Mons
Français masculin canadien (ca1.zip) Vincent Arnaud
Français masculin canadien (ca2.zip) Silex Création Inc.

Il est à noter que plusieurs autres langues sont disponibles, entre autres les suivantes :

Anglais, Allemand, Espagnol, etc. Si vous lisez cet article dans une autre langue que le français, alors soyez quelque peu audacieux et essayez MBROLA avec votre propre langue si elle est disponible. Les instructions de cet article seront similaires pour votre choix de langue.

Nous aimons vraiment la diversité, n’est-ce pas ? Alors, allons-y pour le buffet à volonté francophone. Poursuivez en exécutant les lignes de commandes ci-dessous :

wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr1/fr1-990204.zip
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr2/fr2-980806.zip
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr3/fr3-990324.zip
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr5/fr5-991020.zip
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr6/fr6-010330.zip
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr7/fr7-010330.zip
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/ca1/ca1.zip
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/ca2/ca2.zip

find . -name "fr*.zip" -print -exec unzip {} \;
find . -name "ca*.zip" -print -exec unzip {} \;

Lors del’exécution de la commande « find. -print … » sous Debian, les accolades {} devraient être entourées d’apostrophes  » pour éviter une erreur d’interprétation de la commande. Ainsi elle devient « find . -name « fr*.zip » -print -exec unzip ‘{}’ \; ».

Si vous ne désirez pas garder les archives, simplement les détruire via les lignes de commandes suivantes :

rm –f fr*.zip
rm –f ca*.zip

L’archive pour la voix fr4 doit être traitée de façon plus particulière puisque ses fichiers ne sont pas inclus dans un sous répertoire. Suivez donc les étapes ci-dessous.

mkdir fr4
cd fr4
wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr4/fr4-990521.zip
unzip fr4-990521.zip;
rm –f fr4-990521.zip
cd ..

Nous sommes maintenant prêts à effectuer un test à mi-chemin. Alors voici, exécutez la ligne de commande suivante afin de générer un fichier format WAV à partir de phonème prédéfinit.

./mbrola fr1/fr1 fr1/TEST/bonjour.pho bonjour.wav

Nous devrions donc avoir un fichier contenant la représentation sonore du texte « bonjour ». Utilisez votre outil préféré (WinScp, Fugu, FTP, etc.) afin de transférer le fichier « bonjour.wav » situé dans le répertoire « /usr/local/bin/mbrola » de votre serveur Asterisk vers votre ordinateur personnel et faites-en l’écoute. Si vous préférez une autre voix, simplement effectuez le changement dans la ligne de commande précédente de fr1 à fr7 par exemple.

La version audio devrait être comme ceci : bonjour.wav [4]

La première étape étant complétée, passons maintenant à la mise en place de Lia_phon.

Afin d’installer Lia_phon, poursuivez via la session « Shell » et exécutez les lignes de commandes suivantes :

cd /usr/local/bin
wget http://tcts.fpms.ac.be/synthesis/mbrola/tts/French/lia_phon.v1.2.tar.gz
tar zxvf lia_phon.v1.2.tar.gz
rm –f lia_phon.v1.2.tar.gz
cd lia_phon
find . -print -exec chown root:root {} \;

Comme spécifiées précédemment, lors de la modification du propriétaire de fichier, c’est-à-dire l’exécution de la commande « find. -print … » sous Debian, les accolades {} devraient être entourées d’apostrophes  » pour éviter une erreur d’interprétation de la commande. Ainsi elle devient « find. -print -exec chown asterisk:asterisk ‘{}’ \; ».

Pour plus d’information, lire le fichier « README.txt » situé dans le répertoire /usr/local/bin/lia_phon. Vous pouvez aussi jeter un coup d’œil au fichier « lia_phon.htm » situé dans le répertoire /usr/local/bin/lia_phon/doc.

Il faut maintenant définir une variable au niveau de notre session, exécutez la ligne de commande suivante :

export LIA_PHON_REP=/usr/local/bin/lia_phon

Afin de vérifier que la variable a bien été définie, exécutez la ligne de commande ci-dessous :

export -p | grep LIA_PHON_REP

Si vous êtes sous Debian, il faut s’assurer de la présence de « csh » avant de compiler lia_phon. Si « csh » n’est pas installé, exécutez la ligne de commande suivante afin d’en faire l’installation : apt-get install csh.

Passons maintenant à l’étape de la compilation du code source. Suivez le processus en exécutant les lignes de commandes suivantes :

make all
make ressource
make check

Le tout devrait se terminer avec le message suivant :

« Congratulation, LIA_PHON is correctly installed »

Effectuons maintenant un transfert de propriétaire des fichiers de lia_phon à l’utilisateur Asterisk. Je suppose ici que vous avez effectué jusqu’à présent les opérations d’installation via l’utilisateur root. Exécutez la ligne de commande suivante :

find . -print -exec chown asterisk:asterisk {} \;

Vous pouvez aussi remplacer « asterisk:asterisk » par « root:root » dans la mesure ou votre serveur Asterisk est hébergé sur un système local plutôt que sur un serveur lointain.

Nous sommes maintenant prêts à effectuer un autre test. Exécutez les lignes de commandes suivantes afin de valider notre générateur de prosodie en plus du synthétiseur vocal.

cd doc
$LIA_PHON_REP/script/lia_text2mbrola < test.txt > test.ola
cd ../../mbrola
./mbrola -I $LIA_PHON_REP/data/initfile.lia fr1/fr1 $LIA_PHON_REP/doc/test.ola test.wav

Le résultat du test devrait ressembler à ceci :

« Ceci est un test d’utilisation du système de phonétisation LIA_PHON qui a été développé au LIA par Frédéric Bechet. Ce système permet de nettoyer, étiqueter, accentuer et phonétiser un texte libre. Un module de génération d’une prosodie minimale est également fourni afin de générer des fichiers compatibles avec le synthétiseur de parole MBROLA. Bonne utilisation ! »

La version audio de ce dernier test est disponible ici : test.wav [5]

Utilisez encore une fois votre outil préféré afin de transférer le fichier « test.wav » situé dans le répertoire « /usr/local/bin/mbrola » de votre serveur Asterisk vers votre ordinateur personnel et faites-en l’écoute.

Effectuons un dernier test. Exécutez les lignes de commandes suivantes afin valider avec notre propre texte. Toujours à partir du même répertoire, « /usr/local/bin/mbrola », créez un fichier nommé « tux89.txt » et insérez-y le texte suivant :

« Ceci est un test. Si test égale téléphonie est égale à nule, alors go to w w w point t u x 89 point come. Fin du test.»

La version texte est disponible ici : tux89.txt [6]

Attention : Le texte doit être encodé dans le format ISO-8859-1. Si votre ordinateur supporte un autre format tel que UTF8, vous devrez alors convertir afin de pourvoir écouter le message, sinon les accents ne seront pas lu correctement par Lia_phon.

Pour convertir sous Linux, utilisez la ligne de commande suivante :

iconv –from-code=UTF-8 –to-code=ISO-8859-1 FichierEntrant.txt > FichierSortant.txt

Lors de la conversion, bien faire attention aux doubles tirets des options from-code et to-code de iconv : « iconv –from-code=UTF-8 –to-code=ISO-8859-1 tux89.txt > tux89conv.txt ».

Effectuons maintenant la phonétisation en exécutant la commande suivante. Le fichier tux89.txt est déjà dans le bon format ISO-8859-1 :

$LIA_PHON_REP/script/lia_nett < tux89.txt | $LIA_PHON_REP/script/lia_taggreac | $LIA_PHON_REP/script/lia_phon | $LIA_PHON_REP/bin/lia_add_proso > tux89.pho

Finalement, effectuons la synthèse vocale en exécutant la commande ci-dessous. Lors de la synthèse dans la commande ci-dessous, bien écrire « -I » (i majuscule) et non pas « -l » (L minuscule).

 

./mbrola -I $LIA_PHON_REP/data/initfile.lia fr1/fr1 tux89.pho tux89.wav

Les écrits restent, mais les paroles s’envolent, validons pour voir s’il y a un brin de vérité dans ceci en écoutant le contenu du fichier tux89.wav.

La version audio est disponible ici : tux89.wav [7]

Liambrola

En fait, tout cela est quand même assez fastidieux, n’est-ce pas ? Alors j’ai décidé d’écrire un module d’interface nommé Asterisk-liambrola afin d’interfacer Lia_phon et MBROLA au plan de numérotation d’Asterisk. Ce module permet l’ajout de l’application Liambrola au plan de numérotation, ce qui vous permet d’utiliser Lia_phon et Mbrola comme synthétiseur vocal français directement dans Asterisk. Le module Liambrola fait appel à Lia_phon et Mbrola via un appel système, car il n’existe pas d’interface de programmation applicative « API » pour ces deux composants.

Afin de rendre accessible le code source de Liambrola à la communauté, j’ai créé un projet sous SourceForge (http://sourceforge.net).  Si vous désirez, référez-vous à la page du projet asterisk-liambrola situé à l’adresse suivante afin d’obtenir les instructions les plus récentes : http://sourceforge.net/projects/liambrola/ [8]

Exécutez maintenant les lignes de commandes suivantes afin d’installer Liambrola :

cd /usr/src
wget http://sourceforge.net/projects/liambrola/files/asterisk-liambrola-0.3.tgz/download
tar xzvf asterisk-liambrola-0.3.tgz
rm -f asterisk-liambrola-0.3.tgz
cd asterisk-liambrola-0.3

Pour compiler sous Asterisk 1.4, exécutez :

make
make install

Pour compiler sous Asterisk 1.6, exécutez :

make ASTERISKVERSION=1.6
make install ASTERISKVERSION=1.6

Vérifiez qu’il existe maintenant un fichier app_liambrola.so dans le répertoire /usr/lib/asterisk/modules /

Exécutez maintenant les lignes de commandes suivantes afin de charger le module  Liambrola dans Asterisk :

asterisk –rvvv
module load app_liambrola.so
core show application liambrola
exit

Vous devriez maintenant avoir les fonctions offertes par Lia_phon et MBROLA dans le plan de numérotation d’Asterisk. Le tout a été vérifié sur les distributions PIAF et Trixbox.

Essai pratique

Pour tester, modifiez simplement le fichier /etc/asterisk/extensions_custom.conf et y ajouter les lignes ci-dessous :

exten => 542,1,Answer
exten => 542,2,Wait(1)
exten => 542,3,Liambrola(« Ceci est un test permettant de vérifier les fonctions de Lia Mbrola. »)
exten => 542,4,AGI(agi-liambrola-test.agi)
exten => 542,5,Hangup

N’oubliez pas de recharger la configuration d’Asterisk.

asterisk -rx reload

Maintenant, prenez le combiné et composez le numéro 542 qui correspond aux lettres LIA sur votre clavier téléphonique. Écoutez et vérifiez que tout fonctionne bien.

Si vous désirez modifier les paramètres opérationnels de Lia_phon ou de MBROLA, éditez le fichier /etc/asterisk/liambrola.conf. Ce fichier contient des paramètres d’ajustement qui influenceront votre synthétiseur vocal Liambrola. Les paramètres sont basés sur les paramètres natifs de Lia_phon et de MBROLA. Simplement suivre les exemples. Pour plus d’information sur Lia_phon et MBROLA, regardez la documentation disponible dans les répertoires où vous avez fait l’installation de ces deux composants.

Il est à noter que dans l’éventualité où vous n’auriez pas installé les exécutables MBROLA et Lia_phon dans les répertoires tels que spécifiés dans cet article, le chemin d’accès pour les exécutables MBROLA et Lia_phon peuvent être ajustés via les paramètres mbrolaPath et liaphonPath dans le fichier liambrola.conf.

Utilisation

Comment faire appel à Liambrola ?

La première méthode est via le plan de numérotation. Ajoutez la commande suivante à votre plan, comme dans l’exemple ci-dessous:

exten => 542,3,Liambrola(« Ceci est un test permettant de vérifier les fonctions de Lia Mbrola. »)

La deuxième méthode est via un script AGI. Vous devrez d’abord ajouter la commande suivante à votre plan, comme dans l’exemple ci-dessous :

exten => 542,4,AGI(agi-liambrola-test.agi)

Pour plus d’information, consultez le fichier /var/lib/asterisk/agi-bin/agi-liambrola-test.agi afin d’obtenir quelques exemples mis à votre disposition.

Le premier paramètre de Liambrola doit être le texte à convertir en parole. Vous pouvez aussi interagir dynamiquement sur Lia_phon ou MBROLA via les paramètres passés à Liambrola. Chaque paramètre est séparé par une barre verticale « | ». Il est à noter que les paramètres contenus dans le fichier /etc/asterisk/liambrola.conf sont évalués en premier et que par la suite, les paramètres dynamiques sont évalués. Vous pouvez aussi passer plusieurs paramètres dynamiques à Liambrola en les séparant par une barre verticale « | » sous Asterisk 1.4, pourvu que cela ait du sens.Veuillez noter que le séparateur de paramètres sous Asterisk 1.6 est une virgule « , » plutôt qu’une barre verticale « | » comme sous Asterisk 1.4. Si vous utilisez Asterisk 1.6, alors tenez-en bien compte. De plus, le fichier /var/lib/asterisk/agi-bin/agi-liambrola-test.agi a été ajusté en conséquence pour Asterisk 1.6.

Voici quelques explications sur comment cela fonctionne.

Exemple sous Asterisk 1.4, avec le paramètre « any » :

Liambrola (« Appuyez sur une touche pour interrompre la transmission de ce message.|any »)

Exemple sous Asterisk 1.6, avec le paramètre « any » :

Liambrola (« Appuyez sur une touche pour interrompre la transmission de ce message.,any »)

Vous pouvez appuyer sur une touche pour interrompre la lecture du message. En l’absence du paramètre « any », il sera impossible d’interrompre la transmission du message.

Le reste des exemples est pour Asterisk 1.4 avec la barre verticale « | » comme séparateur pour les arguments. Si vous utilisez Asterisk 1.6, changez la barre verticale « | » par une virgule « , ».

Exemple, avec le paramètre MBROLA « fr1 » et « any »  :

Liambrola (« Français un ceci est la voix F R 1.|fr1|any »)

La voix sélectionnée sera fr1 et vous pourrez appuyer sur une touche pour interrompre la lecture du message. Les choix possibles de voix sont fr1 à fr7 (pour français) et ca1 ou ca2 (pour Canadien français).

Exemple, avec le paramètre MBROLA « volumeratio »  :

Liambrola (« Le volume de ce message est élevé.|volumeratio|3.0 »)
Liambrola (« Le volume de ce message est faible.|volumeratio|0.2 »)

La valeur normale du volume est « 1.0 ».

Exemple, avec le paramètre MBROLA « frequencyratio »  :

Liambrola (« La fréquence de ce message est élevée.|frequencyratio|3.0 »)
Liambrola (« La fréquence de ce message est basse.|frequencyratio|0.5 »)

La valeur normale de la fréquence est « 1.0 ».

Exemple, avec le paramètre MBROLA « timeratio »  :

Liambrola (« Le rythme de ce message est lent.|timeratio|1.5 »)
Liambrola (« Le rythme de ce message est rapide.|timeratio|0.7 »)

La valeur normale du tempo est « 1.0 ».

Exemple, avec le paramètre MBROLA « voicefrequency »  :

Liambrola (« La fréquence vocale de ce message est élevée.|voicefrequency|18000 »)
Liambrola (« La fréquence vocale de ce message est basse.|voicefrequency|10000 »)

La valeur normale de la fréquence vocale est « 16000 ».

Exemple, avec le paramètre Lia_phon « reajustAccent »  :

Liambrola (« Les accents sont corrigés. Par exemple le mot été se prononce ete|reajustAccent »)

Avec ce paramètre, Lia_phon corrigera le texte et produire « Les accents sont corrigés. Par exemple le mot été ne se prononce pas été ». Le mot « ete » sera ajusté avec les accents et deviendra « été ». Notez que l’utilisation de ce paramètre peut produire quelques fois des résultats autres que ceux attendus.

Exemple, avec le paramètre Lia_phon « sylvain »  :

Liambrola (« Bonjour je m apelle Sylvain.|sylvain »)

Sylvain est une voix préconfigurée avec les paramètres de MBROLA. Les choix de voix disponibles sont énumérés ci-dessous, c’est étrange, mais ça ressemble à des voix que je connais bien :

Sylvain (Voix masculine)
Alexis (Voix masculine)
Claudine (Voix féminine)
Audrey (Voix féminine)
Camille (Voix féminine)

À partir de la version 0.3, liambrola offre maintenant l’utilisation de liambrola via une ligne de commande « shell ». Il est donc possible  de faire appel à la synthèse vocale liambrola en spécifiant un fichier d’entrée de texte et un fichier de sortie audio dans lequel liambrola produira une synthèse vocale française du texte d’entrée.

Par exemple, on peut faire appel à liambrola en exécutant la ligne de commande suivante :

liambrola –f fichier_entree.txt –o fichier_sortie.wav

Ce nouvel exécutable est pratique dans le cas de scripts externe au plan de numérotation d’Asterisk, comme on peut le constater dans l’article Rappels téléphoniques 4.0 en français sous Asterisk 1.4 [9]

Pour connaître les possibilités de liambrola, simplement exécuter la ligne de commande suivante :

liambrola –-help

Vous verrez alors les options telles que présentées ci-dessous :

utilisation: liambrola
Fait appel à Lia_Phon et Mbrola afin de produire une synthèse vocale,
à partir d’un texte, et retourne le tout sous forme d’onde sonore
———————————————-
Options disponibles :
–version   Donne la version de liambrola
–help      Donne ce menu d’aide
-lp PATH Spécifie le chemin d’accès de l’exécutable Lia_Phon
-mp PATH Spécifie le chemin d’accès de l’exécutable Mbrola
-o WAVEFILE Spécifie le fichier de sortir audio
-f TEXTFILE Spécifie le fichier texte d’entrée
———————————————-
Le TEXTE est de forme libre et supporte les paramètres suivants :
intkeys – voice – ignoreError – volumeRatio – frequencyRatio
timeRatio – voiceFrequency – reajustAccent
Claudine – Audrey – Camille – Alexis – Sylvain
———————————————-
Le paramètre voix « voice » peut être fr1 à fr7 ou ca1 ou ca2.
Se référer au fichier agi-liambrola-test.agi situe dans le répertoire
/var/lib/asterisk/agi-bin afin de voir des exemples d’utilisation
de Liambrola. Veuillez prendre note que le TEXTE d’entrée doit être
exempt de « | » sous Arterisk 1.4 et doit être exempt de « , » sous
Arterisk 1.6 car ces derniers sont le séparateur d’arguments
pour les paramètres AGI sous Asterisk.

De plus, vous pouvez aussi interagir dynamiquement sur Lia_phon ou MBROLA via les paramètres passés à liambrola dans le texte du fichier d’entrée. Ainsi, vous pouvez passer plusieurs paramètres dynamiques à liambrola en les séparant par une barre verticale « | » sous Asterisk 1.4, pourvu que cela ait du sens. Veuillez noter que le séparateur de paramètres sous Asterisk 1.6 est une virgule « , » plutôt qu’une barre verticale « | » comme sous Asterisk 1.4.

Il est à noter qu’à l’opposé de la fonction liambrola faisant partie du plan de numérotation,  les paramètres contenus dans le fichier /etc/asterisk/liambrola.conf ne sont pas évalués lorsque vous utilisez l’exécutable liambrola via une ligne de commande. Les paramètres à défauts sont plutôt codés dans l’application liambrola.

Les valeurs de ces paramètres sont les suivantes :

Le chemin d’accès pour l’exécutable mbrola est :

mbrolaPath = /usr/local/bin/mbrola

Traitement des erreurs sur les diaphonies de Mbrola :

ignoreError = activé

La voix utilisée pour la synthèse vocale est :

voiceSelection = fr1

La valeur du volume est :

volumeratio = 1.0

La valeur de la fréquence est :

frequencyratio = 1.0

La valeur du tempo est :

timeratio = 1.0

La valeur de la fréquence vocale est :

voicefrequency = 16000

Le chemin d’accès pour l’exécutable lia_phon est :

liaphonPath = /usr/local/bin/lia_phon

Traitement de l’ajustement des accents lors de l’analyse par Lia_phon :

reajustAccent = activé

Vous auriez donc pu mettre un des textes suivants afin d’interagir dynamiquement sur Lia_phon ou MBROLA :

Français un ceci est la voix F R 1.|fr1

Le volume de ce message est élevé.|volumeratio|3.0

La fréquence de ce message est basse.|frequencyratio|0.5

Le rythme de ce message est lent.|timeratio|1.5

La fréquence vocale de ce message est basse.|voicefrequency|10000

Bonjour je m’appelle Sylvain.|sylvain

Ce message est une combinaison de différentes options.|fr2|volumeratio|3.0|frequencyratio|0.5|timeratio|1.5|voicefrequency|10000

Conclusion

J’espère que vous trouverez une utilisation pratique à Liambrola. Dans un prochain article, je présenterai un script permettant d’extraire les nouvelles du site Yahoo et d’en produire une synthèse vocale.

Amusez-vous bien !

Références :

http://tcts.fpms.ac.be/synthesis/mbrola/ [1] http://doc.ubuntu-fr.org/synthese_vocale [10] http://lia.univ-avignon.fr/fileadmin/documents/Users/Intranet/chercheurs/bechet/index.html [11] pixelstats trackingpixel
Comments Disabled (Open | Close)

Comments Disabled To "Synthèse vocale en français sous Asterisk"

#1 Comment By Sylvain Thérien On 1 avril 2011 @ 8 h 54 min

Salut,

Il y a effectivement un problème avec la fonction ast_waitstream () dans Asterisk 1.8. Cette fonction envoie le fichier audio sur le canal du poste. Je ne connais pas encore la cause du problème. Tu remarqueras, lorsque tu es dans la console d’Asterisk (asterisk -rvvvvv), qu’Asterisk Crach et que tu es expulsé de la console. Il arrive parfois que le fichier audio soit audible.

Peux-tu me dire si ton installation est dans une machine virtuelle ou plutôt un système physique ?

La persévérance est de mise, ne désespère pas, je vais finir par trouver.

A+

#2 Comment By Etann38 On 20 mai 2011 @ 20 h 49 min

Salut Sylvain,
J’ai suivi pas à pas ton tutoriel et je suis heureux de voir que mon asterisk me parle 🙂
Je suis débutant en linux…
D’ailleurs, au cas où, sur ma debian6, csh n’était pas installé…
Merci pour ton tutoriel en tout cas !!!

#3 Comment By Sylvain Thérien On 22 mai 2011 @ 7 h 57 min

Cool ! J’ai modifié l’article afin que ce soit plus évident d’effectuer l’installation de csh au préalable pour les utilisateurs Debian.

Si tu as envie de t’amuser, tu peux aussi créer des applications vocales qui s’interfacent à liambrola.

#4 Comment By Etann38 On 22 mai 2011 @ 10 h 06 min

Interface vocale c’est à dire ?
En fait j’avais dans l’idée de faire un annuaire…
Ma base de donnée est remplie de mes contacts sur mysql et j’voulais oui récupérer les infos, que la synthèse me l’énonce et que je puisse appeler en pressant une touche…
Je suis aveugle et les synthèses vocales, ça me connait, domage qu’elle ne soit pas un peu plus humaine comme eloquance ou bien comme les synthèse d’accapela…
Mais bon pour l’instant, ça foncitonne et je suis ravi !!!

#5 Comment By Sylvain Thérien On 23 mai 2011 @ 21 h 00 min

Salut,

Pour ce qui est de l’éloquence de Liambrola, je suis d’accord que ce n’est pas l’idéal. Sauf qu’il faut comprendre qu’avant tout ça utilise Lia-Phon et MBrola et que c’est gratuit, et qui dit gratuité, dit parfois compromis !

Si tu désires améliorer la qualité quelque peu, tu peux essayer de substituer Liambrola par Cepestal avec la voix française d’Isabelle (8Khz). Tu devras cependant acheter une licence pour environ 30 €. Si tu désires explorer ce côté suit ce tutoriel [12] pour installer Cepstral.

Je ne connais pas vraiment le contexte dans lequel tu vis, mais jusqu’à quel niveau es-tu en mesure d’utiliser un ordinateur ? Fonctionnes-tu avec la synthèse vocale aussi sur ton ordinateur ?

Sous Pbx In a Flash « PIAF », il y a une application nommée Asteridex. C’est un annuaire que tu peux utiliser en mode Web à partir de ton fureteur ou encore avec une composition abrégée et qui te dictera la personne avec laquelle on te met en communication. Même si tu n’utilises pas PIAF, tu peux sûrement installer Asteridex en suivant le lien en référence à l’article [13].

En espérant que cela puise t’être utile.

#6 Comment By Etann38 On 24 mai 2011 @ 2 h 19 min

Merci de ta réponse rapide !!!
Mon réseau est fait comme ceci :
– Machine windows sur lequel j’ai une version d’acapela
– machine debian sur lequel j’ai asterisk entre autre
J’avais dans l’idée de demander à asterisk de se connecter en telnet sur ma machine windows, de lancer un script .bat qui génèrerait le fichier de l’appelant en wav puis serait copier sur la debian.
il me manque juste la ligne de commande pour me connecter en telnet en ligne de commande : telnet serveur -l login … il manque le mot de passe.
Sinon, le reste fonctionne…
J’utilise windows avec une synthèse vocale (debian en SSH) ou bien sur le serveur avec une plage tactile.
La mise en place de tout ça n’est que pour mon plaisir et pour me perfectionner en linux…
Je vais voir le lien que tu m’as mis avec isabelle…
Sinon c’est concluant, tant mieux, sinon je continuerai sur ma voie de telnet vers mon windows…
Merci à toi !

#7 Comment By Sylvain Thérien On 24 mai 2011 @ 7 h 49 min

Wow, c’est cool ton truc.

Si tu mets en place Asteridex sous Debian, fais-moi part de tes commentaires. De plus, si tu as des questions, fais-moi signe et j’essayerai de t’aider au meilleur de mes disponibilités.

Au plaisir !

#8 Comment By Etann38 On 20 juillet 2011 @ 17 h 00 min

Salut Sylvain,
J’ai fait des recherches sur le ent et j’ai découvert qu’il y avait un synthèse vocale bien plus agréable que celle proposer dans ce tutoriel. Connais-tu SVOX Pico ?
C’est une synthèse proche des synthèses accapela, mais qui est gratuite !
Je n’ai pas un niveau assez avancé pour m’en sortir afin de l’installer mais si tu as du temps et que tu trouves comment le faire… et bien ça m’interesseras :).
Quant à mon projet entre les deux serveurs, je pêche. J’n’arrive pas à me connecter de mon linux vers mon windows en telnet avec une seule et simple ligne de commande…
C’est pourquoi, j’me rabas vers Svox…
Tiens moi au courant ! Merci à toi !

#9 Comment By Sylvain Thérien On 20 juillet 2011 @ 17 h 51 min

Salut Etann,

Lorsque j’aurai une minute, je regraderai cela de plus près. J’ai effectué quelques recherches sur le net il semble que Nuace ait acheté SVOX le 11 juin 2011 (Réf: [14]).

J’ai essayé sans succès de trouver un lien pour avoir accès à SVOX Pico. Aurais-tu un lien à me refiler afin que je regarde le tout et les possibilité d’intégration ?

A+

#10 Comment By Etann38 On 20 juillet 2011 @ 17 h 56 min

Non, pas encore, je cherche très activement.
Je dois pouvoir récupérer les sources chez un ami qui l’avait installé sou ubintus. Cela te suffirait ?

#11 Comment By Sylvain Thérien On 21 juillet 2011 @ 17 h 54 min

Je suppose que oui, ça devrait suffir.

#12 Comment By Etann38 On 22 juillet 2011 @ 4 h 28 min

Salut,
Je t’ai envoyé un mail avec tout le tutoriel que j’ai suivi…
J’ai dit que ça ne marchait pas mais c’est fau…
ça marche !
Je remets le tutoriel pour ceux qu eça pourrait intéressé.
SVOX-Pico est une synthèse dont la qualitié se situe entre mbrola et acapela.
Elle est gratuite et vraiment excellente :
Pour compiler pico, il faut installer certains packages.
Sous debian
apt-get install build-essential git automake autoconf autogen libtool libpopt-dev

Récupération des sources
git clone git://git.debian.org/collab-maint/svox.git pico

cd pico
git branch -a
git checkout -f origin/debian-squeeze

cd pico
./autogen.sh
./configure
make
make install
ldconfig

Ensuite on teste :
pico2wave -l fr-FR -w test.wav « Je fais un test avec pico »

Et voilà !
POur l’intégrer à asterisk, ça ne devrai tpas être trop dur!
Merci à mon pote Olivier qui m’a bien aidé !

#13 Comment By Sylvain Thérien On 22 juillet 2011 @ 17 h 46 min

OK, ça va pour Pico sous Debian ou Ubuntu. J’utilise PIAF comme distribution Asterisk, qui est basée sous CentOS. J’ai trouvé sur le net une procédure indiquant comment installer Pico sous CentOS ( [15]). Lorsque j’aurai un peu de temps, je mettrai en place Pico et ensuite modifierai asterisk-liambrola afin de l’interfacer avec Pico. Ça ne devrait pas être trop difficile. En fait, le plus difficile est de trouver du temps pour le faire.

Si tu veux t’essayer pour interfacer Pico, voici quoi faire.

Utilise la version asterisk-liambrola 0.3

Fichier liambrola_main.c, effectue tes modifications à la ligne 319, soit cette ligne ci :

sprintf(cmd, « export LIA_PHON_REP=%s ; %s/script/lia_nett %s; %s/mbrola %s %s %s %s %s -I %s/data/initfile.lia %s/%s %s %s », liaphonPath, liaphonPath, txtFilename, liaphonPath, reajustAccent, liaphonPath, liaphonPath, phoFilename, mbrolaPath, ignoreError, volumeRatio, voiceFrequency, frequencyRatio, timeRatio, liaphonPath, mbrolaPath, voiceSelection, phoFilename, wavFilename);

La modification devrait resembler à quelque chose du genre :

sprintf(cmd, « pico2wave -l fr-FR -w %s < %s", wavFilename, txtFilename);

Et dans le fichier app_liambrola.c, effectue aussi tes modifications à la ligne 503, soit cette ligne ci :

sprintf(cmd, "export LIA_PHON_REP=%s ; %s/script/lia_nett %s; %s/mbrola %s %s %s %s %s -I %s/data/initfile.lia %s/%s %s %s », liaphonPath, liaphonPath, txtFilename, liaphonPath, reajustAccent, liaphonPath, liaphonPath, phoFilename, mbrolaPath, ignoreError, volumeRatio, voiceFrequency, frequencyRatio, timeRatio, liaphonPath, mbrolaPath, voiceSelection, phoFilename, wavFilename);

Donne moi des nouvelles.

A+

#14 Comment By Etann On 30 juillet 2011 @ 10 h 56 min

Salut Sylvain,

Bon, j’ai réussi à interfacé Pico de SVOX avec Asterisk 1.6.x.

Je n’ai pas utilisé Mbrola, j’ai trouvé une méthode plus simple qui marche tout aussi bien… Enfin, elle était plus simple pour moi.

J’ai utilisé un script php.

Pour commencer et pour tester, j’ai utilisé pico pour me dire le nom/prénom de l’appelant car je suis aveugle et je n’ai de toute façon, pas de téléphone IP avec un écran.

Voici mon extensions.conf

;Menu vocal
[Menu]
exten => s,1,Ringing(); ça sonne
exten => s,2,Wait(1)
exten => s,3,Answer() ;ça décroche
exten => s,4,agi(Identifiant.php,${CALLERID(num)}) ; je lance l'AGI en PHP avec le numéro de l'appelant en paramètre
exten => s,5,Set(__Identifiant=${Identifiant})
exten => s,6,System(/usr/bin/sox /var/local/Monitor/PicoAppelantTMP.wav -r 8000 /var/local/Monitor/PicoAppelantTMP.ogg && /bin/chmod +x /var/local/Monitor/PicoAppelantTMP.ogg && /bin/rm /var/local/Monitor/*.wav) ; je lance en schell des commandes pour convertir mon fichier généré par mon fichier php, en ogg, je change les droits d'accès...
(...)

[MANU]
INCLUDE => PourTous
exten => SPASallon,1,Set(CALLFILENAME=/var/local/Monitor/${STRFTIME(${EPOCH},,%Y-%m-%d_%H%M)}-${CALLERID(name)})
exten => SPASallon,2,Set(__ContextProvenance=MANU) ; je déclare des variable contenant le context actuel
exten => SPASallon,3,Set(__ExtensionProvenance=SPASallon) ; la même chose pour l'extension courante
exten => SPASallon,4,Monitor(wav,${CALLFILENAME},m)
exten => SPASallon,5,Set(CHANNEL(musicclass)=Attente)
exten => SPASallon,6,DIAL(SIP/SPASallon,40,mG(RecupAppel^Choix^1)) ; je redirige vers le context qui me permettra d'entendre le nom de l'appelant, de l'accepter ou de le refuser
exten => SPASallon,7,Voicemail(713@MANU,us)
exten => SPASallon,8,hangup
exten => h,1,agi(LogAppels.php,${CALLERID(num)},${ExtensionProvenance},${CDR(duration)})

[RecupAppel]
exten => Choix,1,GoTo(RecupAppel,ring,1)
exten => Choix,2,GoTo(RecupAppel,identity,1)
exten => identity,1,Wait(1)
exten => identity,2,Set(ChmAudio=/var/lib/asterisk/sounds/fr/MenuVocal/)
exten => identity,3,PlayBack(${ChmAudio}AppelQui)
exten => identity,4,PlayBack(/var/local/Monitor/PicoAppelantTMP) ; je lis le fichier picoappelanttmp
exten => identity,5,Background(${ChmAudio}AppelChoix)
exten => identity,6,WaitExten(3)
exten => 1,1,Pickup(ring@RecupAppel)
exten => 2,1,GoTo(RecupAppel,identity,4)
exten => t,1,GoTo(${CONTEXT},identity,1)
exten => ring,1,Dial(LOCAL/null@RecupAppel,20,rg)
exten => ring,n,GoToIf($["${DIALSTATUS}" == "ANSWER"] ?h,1)
exten => ring,n,GoTo(${ContextProvenance},${ExtensionProvenance},7)
exten => null,1,Wait(100)
exten => h,1,GOTO(${ContextProvenance},h,1)

Mon script PHP

#!/usr/bin/php
"a", "è" => "e", "é" => "e");
IF(MYSQL_NUM_ROWS($RESSelection)==1)
{
$Prenom = MYSQL_RESULT($RESSelection,0,"prenom");
$Nom = MYSQL_RESULT($RESSelection,0,"nom");
$Identifiant = $Prenom.' '.$Nom;
}
ELSE
{
$Identifiant = $Num.', non présent dans la base de donnée';
}
$CMDExecution = '/usr/local/bin/pico2wave -l fr-FR -w /var/local/Monitor/PicoAppelantTMP.wav "'.$Identifiant.'"'; /// Je configure ma commande avec le lancement de pico et mon résultat passé en paramètre
exec("$CMDExecution"); /// j'excute ma commande
?>

Voilà !!!

J’espère que ça pourra en aider certains…
ça fait du temps que je suis dessus, je suis bien content d’être arrivé à ce résultat.

Prochaine étape, je ferai un annuaire pour récupérer mes contacts de ma base de données afin de pouvoir les appeler sans composer leur numéro !

A bientôt !

#15 Comment By Sylvain Thérien On 2 août 2011 @ 17 h 46 min

Manu,

C’est super ! Félicitation pour ta persévérance.

Je suis certain que ça va intéresser plus d’un.

Combien de temps cela prend-il de temps en secondes de la réception de l’appel jusqu’à ce que tu entendes le nom de l’appelant ?

Merci encore.

#16 Comment By Etann On 3 août 2011 @ 7 h 07 min

Et bien, je ne crois pas que ça se compte en seconde.

En tout cas c’était pas assez lent pour que ça m’interpelle.

De plus, j’ai un serveur vocal donc je génère le fichier ogg par pico juste avant l’anonce du serveur vocal.

Avec un ami, nous avons intégré pico dans app-directory() afin qu’on puisse utiliser l’application avec Pico.

Je te tiens au courant dès que j’ai mis en place tout ça !

En tout cas merci pour ton aide !

#17 Comment By Didier Kasole On 15 décembre 2011 @ 4 h 29 min

JE n’arrive pas a terminer l’installation, je bute sur le compilation de Lia_phon.
make all genere un message d’erreur :

Making all in /src/format
cd: 4: can’t cd to /src/format
make: *** [all] Erreur 2

Je sui sur ubuntu 11.10

#18 Comment By Sylvain Thérien On 19 décembre 2011 @ 10 h 28 min

Salut Didier,

Je n’utilise pas Ubuntu mais plutôt Centos. Je sais cependant que ça fonctionne très bien sous debian.

Tu peux consulter les 2 liens suivants, il sont dédiés à la synthèse vocale sous Ubuntu et parlent de Mbrola et Lia_Phon :

[10]
[16]

#19 Comment By Cedric On 10 mai 2012 @ 4 h 56 min

Bonjour Sylvain,

Je te remercie pour ton tutoriel et le travail que tu as fourni en amont.
J’ai plusieurs soucis en ce qui me concerne :
Mais tout d’abord commençons par le commencement. Je suis sous Ubuntu 12.04 avec asterisk 1.8.10.1

1) J’ai une erreur lors de l’execution de cette commande :
./mbrola -I $LIA_PHON_REP/data/initfile.lia fr1/fr1 tux89.pho tux89.wav

qui me donne :
Fatal error in line:-
(au passage pas de ligne d’indiquée …)

2)Ensuite, j’ai une erreur au niveau de la compilation de liambrola, (que ce soit un make ou make ASTERISK 1.6) qui me donne ceci :

gcc -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g -D_REENTRANT -D_GNU_SOURCE -O6 -fPIC -DASTERISK_VERSION=6 -c -o app_liambrola.o app_liambrola.c
app_liambrola.c:50:22: erreur fatale: asterisk.h : Aucun fichier ou dossier de ce type
compilation terminée.
make: *** [app_liambrola.o] Erreur 1

J’espère avoir une réponse au plus vite,

Cédric

#20 Comment By Norbert Cordier On 25 mai 2012 @ 10 h 54 min

Bonjour,

Bravo pour votre documentation si précise. Je l’ai suivi pas à pas mais j’hésite pour liambrola car votre installation ne permet que la version <=1.4 ou 1.6. Avez-vous testé avec Asterisk 1.8? J'ai parallèlement testé SVOX qui semble ne donner qu'une voix féminine. Dommage.
Merci pour votre réponse.
Mon système est CentOS 5.7 avec Asterisk 1.8.11.0-0

#21 Comment By Sylvain Thérien On 31 mai 2012 @ 11 h 00 min

Malheureusement, liambrola ne fonctionne pas sous Asterisk 1.8. La compilation fonctionne, mais ça achoppe à l’exécution !

Tu peux jeter un coup d’oeil à Cesptral, ça fonctionne en français. Je ne l’ai pas testé moi-même, mais certains trouvent que c’est peut-être une meilleure solution que liambrola 🙂 sauf que tu dois acheter une licence.

#22 Comment By Sylvain Thérien On 4 juin 2012 @ 17 h 57 min

Désolé pour le délai de réponse.

Pour la première erreur :

1) J’ai une erreur lors de l’execution de cette commande :
./mbrola -I $LIA_PHON_REP/data/initfile.lia fr1/fr1 tux89.pho tux89.wav

qui me donne :
Fatal error in line:-
(au passage pas de ligne d’indiquée …)

As-tu tenu compte de la note indiquée dans les instructions ?

Un petit rappel (ça devrait être la même chose sous Ubuntu) : Si vous êtes sous Debian, il faut s’assurer de la présence de « csh » avant de compiler lia_phon. Si « csh » n’est pas installé, exécutez la ligne de commande suivante afin d’en faire l’installation : apt-get install csh.

Pour la deuxième erreur, le problème de compilation, c’est comme s’il te manquait les librairies d’Asterisk « asterisk.h ». Ton problème est peut-être aussi lié au Shell csh mentionné plus haut.

Dernière note, liambrola compile sous Asterisk 1.8 mais il y a quelques problèmes à l’exécution (au niveau de la sorite de la synthèse). Je n’ai pas encore eu le temps de regarder à une solution permanente.

#23 Comment By jospinox On 21 juillet 2012 @ 5 h 44 min

je n’arive pas à compiler LIIA_PHON ;j’ai des warnings partout qd je fais « make all ».

make[1]: Entering directory `/usr/local/bin/lia_phon/src/post_process’
cc -I. -I/usr/local/bin/lia_phon/src/aphon -I/usr/local/bin/lia_phon/src/libgram -I/usr/local/bin/lia_phon/src/format -o /usr/local/bin/lia_phon/bin/lia_pprocess pprocess.c
pprocess.c: In function âcreer_reglesâ:
pprocess.c:195: warning: incompatible implicit declaration of built-in function âmallocâ
pprocess.c: In function âdecoupe_stringâ:
pprocess.c:275: warning: incompatible implicit declaration of built-in function âexitâ
pprocess.c: In function âmodif_liaisonâ:
pprocess.c:327: warning: incompatible implicit declaration of built-in function âexitâ
pprocess.c:340: warning: incompatible implicit declaration of built-in function âexitâ
pprocess.c: In function âlecture_reglesâ:
pprocess.c:360: warning: incompatible implicit declaration of built-in function âexitâ
pprocess.c:367: warning: incompatible implicit declaration of built-in function âmallocâ
pprocess.c: In function âEmpileâ:
pprocess.c:615: warning: incompatible implicit declaration of built-in function âexitâ
pprocess.c: In function âphonetise_baktrakâ:
……………………………………………

#24 Comment By Sylvain Thérien On 23 juillet 2012 @ 9 h 07 min

Quel est ton environnement ?

#25 Comment By jospinox On 24 juillet 2012 @ 12 h 28 min

J’utilise trixbox 2.6

#26 Comment By Sylvain Thérien On 27 juillet 2012 @ 7 h 58 min

Il te manque quelque chose pour compiler adéquatement sur ton système (Trixbox 2.6). L’erreur que tu as est causé parce que le compilateur C ne trouve pas la directive #include . Voir le fichier README.txt dans le répertoire lia_phon pour plus d’information sur lia_phon.

#27 Pingback By Text-to-Speech (TTS) | -Transcom VOIP-Transcom VOIP On 24 octobre 2012 @ 8 h 35 min

[…] asterisk-liambrola: Asterisk Dialplan application, which allows you to use Lia_Phon and Mbrola as a French speech synthesizer. Step by step instuctions on liambrola’s installation under Asterisk (1.2, 1.4 and 1.6) can be found in this post: Speech synthesis in French under Asterisk. […]

#28 Comment By Nicolas On 14 novembre 2012 @ 22 h 07 min

Juste une petite correction pout faire fonctionner pico2wave :

In file liambrola_sub.c, line 319
Replace
sprintf(cmd, “export LIA_PHON_REP=%s ; %s/script/lia_nett %s; %s/mbrola %s %s %s %s %s -I %s/data/initfile.lia %s/%s %s %s”, liaphonPath, liaphonPath, txtFilename, liaphonPath, reajustAccent, liaphonPath, liaphonPath, phoFilename, mbrolaPath, ignoreError, volumeRatio, voiceFrequency, frequencyRatio, timeRatio, liaphonPath, mbrolaPath, voiceSelection, phoFilename, wavFilename);
By
sprintf(cmd, “/opt/svox-pico/bin/pico2wave -l fr-FR -w %s \ »`cat %s`\ » », wavFilename, txtFilename);
In file app_liambrola.c, line 503
Replace
sprintf(cmd, “export LIA_PHON_REP=%s ; %s/script/lia_nett %s; %s/mbrola %s %s %s %s %s -I %s/data/initfile.lia %s/%s %s %s”, liaphonPath, liaphonPath, txtFilename, liaphonPath, reajustAccent, liaphonPath, liaphonPath, phoFilename, mbrolaPath, ignoreError, volumeRatio, voiceFrequency, frequencyRatio, timeRatio, liaphonPath, mbrolaPath, voiceSelection, phoFilename, wavFilename);
By
sprintf(cmd, “/opt/svox-pico/bin/pico2wave -l fr-FR -w %s \ »`cat %s`\ » », wavFilename, txtFilename);

#29 Comment By beeckmanso On 17 novembre 2012 @ 16 h 31 min

J’ai suivi pas a pas cette page, je l’ai même refaite 2 fois sur une fresh install

Et j’obtiens à chaque fois la même erreur format wav incompatible

— Starting simple switch on ‘DAHDI/1-1’
— Executing [542@from-internal:1] Answer(« DAHDI/1-1 », «  ») in new stack
— Executing [542@from-internal:2] Wait(« DAHDI/1-1 », « 1 ») in new stack
— Executing [542@from-internal:3] Liambrola(« DAHDI/1-1 », «  »Ceci est un test permettant de les fonctions de Lia Mbrola..,fr1,any » ») in new stack
== Parsing ‘/etc/asterisk/liambrola.conf’: == Found
[Nov 17 22:23:02] WARNING[7272]: format_wav.c:103 check_header_fmt: Unexpected frequency 16000
[Nov 17 22:23:02] WARNING[7272]: file.c:370 fn_wrapper: Unable to open format wav
[Nov 17 22:23:02] WARNING[7272]: file.c:956 ast_streamfile: Unable to open /tmp/liambrola_buf_ssEE4f (format 0x4 (ulaw)): No such file or directory
[Nov 17 22:23:02] WARNING[7272]: app_liambrola.c:538 liambrola_exec: ast_streamfile failed on DAHDI/1-1 for Liambrola
== Spawn extension (from-internal, 542, 3) exited non-zero on ‘DAHDI/1-1’
— Hungup ‘DAHDI/1-1’

#30 Comment By Sylvain Thérien On 17 novembre 2012 @ 17 h 28 min

Salut,

Quelle distribution utilises-tu ? Quelle version d’Asterisk utilises-tu ? Sur quel système d’exploitation le tout fonctionne ?

#31 Comment By beeckmanso On 18 novembre 2012 @ 2 h 11 min

Bonjour Sylvain,

D’abord merci pour cette prompte réponse.

Je suis sur Centos 5.8 64 Bits tournant dans un DomU Citrix XenServer kernel vmlinuz-2.6.18-308.20.1.el5xen.

L’installation Asterisk 1.6.2.24 a été faite en ligne de commande par mes soins afin d’éliminer toute sources polluantes des GUI et de conserver des fichiers de configuration propre et maintenable.

J’arrive à faire tourner asterisk-googletts et asterisk-flite sans soucis.

Je sais écouter sans problèmes les fichier wav Mbrola et Lia_Phon comme indiqué dans ce how-to.

J’utilise des Téléphones Cisco 303 et une carte OpenVOX avec 3 FXO et 1 FXS

Les Codecs locaux sont dans l’ordre : alaw, ulaw
Les Codecs distants sont dans l’ordre : g729, gsm, alaw, ulaw

Voilà, j’espère avoir été assez complet

#32 Comment By Sylvain Thérien On 18 novembre 2012 @ 19 h 35 min

J’ai remarqué que tu utilise un environnement virtuel, ça ne devrait pas causer de problème (en théorie).

Dans la première trace que tu m’as envoyé, j’ai remarqué ceci :

— Executing [542@from-internal:3] Liambrola(“DAHDI/1-1″, “”Ceci est un test permettant de les fonctions de Lia Mbrola..,fr1,any” ») in new stack
== Parsing ‘/etc/asterisk/liambrola.conf’: == Found
[Nov 17 22:23:02] WARNING[7272]: format_wav.c:103 check_header_fmt: Unexpected frequency 16000

1 – il manque le mot vérifier dans la phrase ”Ceci est un test permettant de vérifier les fonctions de Lia Mbrola..,fr1,any”

Est-ce une erreur de typo ou plutôt la source du problème ?

2 – Le message d’erreur « format_wav.c:103 check_header_fmt: Unexpected frequency 16000 » indique que le le fichier Wav est en fréquence de 16000 alors que la commande sox dans liambrola devrait le générer à 8000Hz.

Si tu peux modifier le code (liambrola_sub.c & app_liambrola.c) et mettre une trace avec la ligne suivante :

fprintf(stdout, « %s\n », cmd);

juste en dessous de :

sprintf(cmd, « /usr/bin/sox %s -r 8000 -t .wav %s; cp %s %s », wavFilename, tmpFilename, tmpFilename, wavFilename);

Comme ça tu pourras mieux voir ce qui se passe.