Douze pages de compte-rendu, des tournures administratives comme « le conseil, après en avoir délibéré, décide à l’unanimité », et zéro chance qu’un habitant les lise en entier sur son téléphone en marchant : voilà le problème concret que pose la publication mensuelle du compte-rendu de conseil municipal sur le site WordPress d’une petite commune.
La solution testée ici combine deux étapes distinctes : un résumé du texte administratif par un modèle de langage, puis la conversion de ce résumé en fichier audio via une API de synthèse vocale, le tout déclenché depuis l’administration WordPress au moment de la publication.
Pourquoi résumer avant de synthétiser
Une première tentative a consisté à envoyer directement le compte-rendu complet à l’API de synthèse vocale. Le résultat, techniquement correct, produisait un fichier audio de plus de trente minutes, aussi indigeste à l’oreille que le texte l’était à l’œil. La bonne séquence consiste donc à réduire d’abord le texte à l’essentiel via un modèle de langage, avec une consigne stricte de conserver les décisions prises et les montants votés, avant de ne synthétiser que ce résumé.
Le snippet de résumé et d’appel vocal
Voici la fonction déclenchée à la publication d’un compte-rendu, enregistré comme type de contenu personnalisé « Conseil » :
function commune_generer_audio_conseil( $post_id ) {
$texte = get_post_field( 'post_content', $post_id );
$resume = commune_resumer_via_llm( $texte, 400 );
$reponse = wp_remote_post( 'https://api.fournisseur-vocal.example/v1/synthese', array(
'timeout' => 45,
'headers' => array(
'Authorization' => 'Bearer ' . COMMUNE_TTS_API_KEY,
'Content-Type' => 'application/json',
),
'body' => wp_json_encode( array(
'texte' => $resume,
'voix' => 'fr-standard-1',
) ),
) );
if ( is_wp_error( $reponse ) ) {
error_log( 'Synthese vocale echouee : ' . $reponse->get_error_message() );
return;
}
$donnees = json_decode( wp_remote_retrieve_body( $reponse ), true );
if ( ! empty( $donnees['url_audio'] ) ) {
update_post_meta( $post_id, '_audio_resume_url', esc_url_raw( $donnees['url_audio'] ) );
}
}
add_action( 'publish_conseil', 'commune_generer_audio_conseil' );

Trois variantes selon la durée souhaitée
- Format court : environ deux minutes, réservé aux décisions budgétaires et votes, pensé pour une écoute en marchant.
- Format intermédiaire : environ cinq minutes, incluant le contexte de chaque délibération majeure, pour une écoute pendant un trajet en voiture.
- Format complet : la totalité du compte-rendu synthétisée telle quelle, réservée aux personnes souhaitant l’intégralité du contenu sans filtre éditorial du résumé.
Le prompt utilisé pour le résumé
La consigne envoyée au modèle de langage précise explicitement de ne jamais reformuler un montant chiffré ni une date de vote, seulement le contexte autour. Cette contrainte a évité, lors des premiers tests, qu’un montant de subvention soit arrondi de façon inexacte dans le résumé généré.
La relecture avant mise en ligne
Le secrétaire de mairie écoute systématiquement le fichier audio généré avant sa publication sur le site, plutôt que de se contenter d’une relecture du texte résumé. Cette étape a permis de repérer une prononciation erronée d’un nom de hameau local, corrigée en ajoutant une variante phonétique dans le texte source envoyé à l’API vocale.
La règle fixée dès le départ : aucun montant chiffré n’est reformulé par le résumé, il doit apparaître à l’identique dans le texte source et dans l’audio final.
En résumé
Rendre un compte-rendu municipal accessible à l’oral suppose de traiter le résumé et la synthèse vocale comme deux étapes distinctes, chacune avec ses propres garde-fous. Le gain d’accessibilité pour les habitants, en particulier les personnes malvoyantes ou peu à l’aise avec la lecture d’un long document administratif, justifie largement la complexité technique modeste de ce dispositif.