Partie 1: source de données et génération des messages vocaux (.wav)
Les données opendata de météofrance étant difficilles à récupérer en automatique, nous utilisons l’API d’Opendatasoft qui les met à disposition au format JSON.
Les données sont récupées par l’intermédiaire d’une page web en php.
$json = file_get_contents("https://data.opendatasoft.com/api/records/1.0/search/?dataset=vigilance-meteorologique%40public&q=isere&facet=couleur");
$parsed_json = json_decode($json);
$nom_dept = $parsed_json->{'records'}[0]->{'fields'}->{'nom_dept'};
$couleur = $parsed_json->{'records'}[0]->{'fields'}->{'couleur'};
$datefin = $parsed_json->{'records'}[0]->{'fields'}->{'dateprevue'};
$risque = $parsed_json->{'records'}[0]->{'fields'}->{'risque_valeur0'};
Les données sont ensuite misent en forme avant d’être envoyées à la synthèse vocale. ex: Bulletin de vigilance météo pour le département: ISERE. Niveau de vigilance: Vert.
$msg_vigi = "Bulletin de vigilance météo pour le département: ".$nom_dept.".";
if (strlen($risque)>0) {
$msg_vigi = $msg_vigi."Alerte vigilance en cours. Niveau ".$couleur." pour ".$risque;
}
else {
$msg_vigi = $msg_vigi . " Niveau de vigilance: ".$couleur.".";
}
La synthèse vocale est réalisée avec l’API de VoiceRSS. VoiceRSS propose un API gratuit allant jusqu’a 350 requêtes par jour ainsi qu’un SDK pour PHP.
<?php
// include SDK VoiceRSS
require_once('/home/xxx/www/xxx/voicerss_tts.php');
$api='xxxxx clé API xxxxxx';
$tts = new VoiceRSS;
$voice = $tts->speech([
'key' => $api,
'hl' => 'fr-FR',
'v' => 'axel',
'src' => $msg_vigi, //Message à synthétiser
'r' => '-1',
'c' => 'wav',
'f' => '16khz_16bit_mono',
'ssml' => 'false',
'b64' => 'false'
]);
//stockage du résultat dans un fichier .wav file_put_contents('/home/xxx/www/xxx/vigi.wav',$voice['response']);