MacOS MBROLA DLL: Sharedlib porté sur MacOS par Philippe Devallois
La librairie partagée (MBROLA dll) permet de faire appel aux fonctions de synthèse vocale à l'intérieur d¹un programme. L'usage de MBROLA est gratuit pour une utilisation non militaire et non commerciale.
Néanmoins elle opère à bas-niveau: elle nécessite des phonèmes en entrée et produit un buffer d'échantillons que l'on doit convertir soit même en format AIFF pour pouvoir produire un son.
(voir l'exemple fourni avec la MBROLA.dll)
Fonctions de la Librairie partagée (Shared Library):
int init_MBR(char *dbaname);
Initialisation de la librairie et chargement de la voix choisie (diphone database) dont on spécifie le nom de fichier dans la chaine de caractères "dbaname". Cette fonction renvoie 0 si le chargement s'est fait correctement et une valeur négative en cas d'erreur.
int write_MBR(char *buffer_in);
Ecriture des phonèmes dans le buffer de la librairie. Les phonèmes sont entrés sous forme d'une chaine de caractères (buffer_in ) de la forme "_ 100\n b 100 50 125\n". Cette fonction retourne le nombre de caractères qui ont été écrit dans la librairie; si elle renvoie 0, rien n¹a pu pu être inscrit dans la librairie et vous devez vider le buffer en lisant les sons produits avec read_MBR.
int read_MBR(int16 *buffer_out,int16 nb_wanted);
Lit un buffer de sons synthétisés à partir des phonèmes écrits dans le buffer avec write_MBR.
buffer_out : tableau de sons (int16).
nb_wanted : nombre de sons demandés (retourne le nombre actuel disponibles donc inférieur ou égal nb_wanted, en cas d¹erreur renvoie une valeur négative)
int read_MBR_Code(int16 *buffer_out,int16 nb_wanted, char code_type);
Même fonction que read_MBR, à la différence que l¹on peut spécifier le format de sortie des sons produits.
code_type peut être LIN16, LIN8, ULAW, ALAW
void reset_MBR();
Annule le synthétiseur si une erreur a eu lieu
int LastError_MBR();
Cette fonction renvoie le numéro de la dernière erreur commise par la librairie.
int lastErrorStr_MBR(char *buffer_err,int nb_wanted);
Copie dans un buffer la chaîne de caractères correspondant à la dernière erreur.
buffer_err: buffer de caractères
nb_wanted : taille du buffer demandé. Si le message est trop long, il est tronqué.
Cette fonction renvoie le nombre de caractères qui ont été copiés dans le buffer.
int flush_MBR();
Vide le buffer en écrivant le symbole de "vidage" à la fin de l¹entrée de phonèmes. Elle renvoie 0 en cas d'erreur et une valeur différente en cas de succès.
(les autres fonctions seront détaillées par la suite)