-
Notifications
You must be signed in to change notification settings - Fork 0
[ttsWebServer] Plugin : fonctions pour plugins tiers
Cette présentation permet aux plugins tiers d’intégrer le synthèse TTS en utilisant les fonctionnalités disponible au niveau du plugin TTS WebServer.
Pour rappel:
- la logique de TTS WebServer est de pouvoir fonctionner en "cluster", l’équipement TTS (appli android) n’existe pas (éteint,…), le plugin va tenter de solliciter un autre équipement.
- si la voix demandée n’est pas disponible, un message sera quand même retourné avec une autre voix, en fonction des options définies au niveau des paramètres du plugin (systématique utiliser la voix, etc …).
Ces fonctions doivent être appelées directement à partir de la class "ttsWebServer" (exemple: ttsWebServer::mafonction()), et ne sont pas directement dépendante d’un équipement.
Pour permettre à ttsWebServer de connaitre qu’il existe une intégration avec votre plugin, vous devez rajouter le code suivant au niveau de votre class EqLogic du plugin.
public static function useTTSWebServerPlugin() { return true; }
Cette fonction permet de retourner la liste des voix disponibles par équipement TTS.
La liste n’est pas dynamique, elle est générée depuis la page de configuration de l’équipement (pour chaque équipement). S’il y avait besoin d’une mise à jour, la synchro peut être forcée.
forceSync
: (false par défaut) ;
En positionnant "true", la liste des voix est systématiquement redemandée auprès de l’équipement distant TTS (appli android), puis mis en cache au niveau de l’équipement.
Si la valeur est "false", la liste des voix en cache est utilisée et retournée.
Cette vérification est faite pour tous les équipements TTS et mis en forme dans un tableau.
Pour chaque valeur du tableau, un 2nd tableau présente les informations suivantes:
- "eqLogicId", "eqLogicName", "voice".
- exemple:
array("0"⇒array("eqLogicId"⇒"18", "eqLogicName"⇒"Tablette domo", "voice"⇒"voxygen.tts.fabienne"), "1"⇒array(…))
- remarque : si aucune voix n’est trouvée, le tableau retourné est vide.
Les arguments sont positionner dans un tableau, qui prend les paramètres suivants :
* eqLogicId
(obligatoire): id de l’équipement portant la voix sélectionnée (en lien avec la valeur retournée par la fonction "getVoicesList()").
* message
(obligatoire): valeur du texte à synthétiser.
* voice
(facultatif): valeur de la voix à utiliser pour synthétiser le texte. Cette valeur fait partie de la liste des valeurs retournées par la fonction "getVoicesList()". Si aucune voix n’est communiquée, le fonctionnement standard s’applique : la voix utilisée est celle sélectionnée par défaut sur l’équipement TTS.
* returnType
(facultatif): valeurs possibles :
- "path" (défaut): retourne le chemin où se trouve le fichier généré.
Remarque: ce chemin est un répertoire "temporaire" sur la box et ne correspond pas au répertoire de stockage (si archivage sur box).
- "file" : retourne le contenu du fichier audio.
* returnFormat
(facultatif): définit l’encodage du fichier.
- valeurs possibles : mp3 (par défaut), wav, ogg (opus).
En fonction de la demande, le format du retour peut être différent.
* string: (si returnType=path) ; exemple: /var/www/html/plugins/ttsWebServer/3rdparty/tmpMp3/voxygen-tts-melodine-e3d43c0d803a25de5f6d9bff63aa8b77.mp3
* contenu: (si returnType=file) ;
* boolean: false; s’il y a eu une erreur durant le traitement.
Voir les logs "ttsWebServer" en debug pour avoir une trace complète.