La fonctionnalité de presets permet d’enregistrer dans le moteur officiel VOICEVOX des combinaisons de paramètres de synthèse vocale fréquemment utilisées et de les réutiliser. En mode client, les presets ne sont pas stockés côté Laravel : l’API de presets du moteur officiel connecté est utilisée.
Vue d’ensemble
Les presets en mode client se manipulent via la Facade Voicevox. En interne, des requêtes HTTP sont envoyées à /presets, /add_preset, /update_preset, /delete_preset et /audio_query_from_preset du moteur officiel VOICEVOX.
Les presets du moteur officiel sont stockés dans la zone utilisateur propre à chaque OS sous forme de presets.yaml. Sur la version macOS de l’application VOICEVOX (version produit), ils sont généralement stockés à cet emplacement :
Quand le moteur officiel est démarré via Docker, il stocke également dans la zone utilisateur du conteneur. Les données sont conservées tant que le même conteneur est réutilisé. Si en revanche vous créez un conteneur temporaire à chaque fois (docker run --rm), les presets sont perdus à l’arrêt du conteneur. Pour une persistance fiable, montez la zone utilisateur du conteneur via un volume Docker.
Ceci est distinct de storage/voicevox/presets.json du mode natif. config('voicevox.core.presets') côté Laravel n’est pas utilisé en mode client.
Prérequis
Démarrez le moteur officiel VOICEVOX.
La cible de connexion peut être changée via VOICEVOX_URL.
Structure d’un preset
Les presets envoyés et reçus en mode client sont des tableaux alignés sur le schéma de l’API du moteur officiel.
Utilisation de base
Créer un preset
Voicevox::addPreset() permet de créer un preset. Dans le moteur officiel, spécifier 0 comme id fait attribuer automatiquement un ID libre.
Récupérer tous les presets
Mettre à jour un preset
Supprimer un preset
Synthèse vocale à partir d’un preset
talkFromPreset()
Voicevox::talkFromPreset() utilise /audio_query_from_preset du moteur officiel pour créer un TalkAudioQuery avec le preset déjà appliqué.
audioQueryFromPreset()
Pour ne récupérer que le tableau de la audio query avant synthèse, utilisez audioQueryFromPreset().
Ajustements complémentaires avec tap()
Le TalkAudioQuery créé depuis un preset peut être ajusté avec tap() comme n’importe quel Voicevox::talk().
Correspondance avec l’API du moteur
Chaque méthode de la Facade Voicevox correspond à une API du moteur officiel.
Différences avec le mode natif
Exemples pratiques
Pour la narration
Pour la parole rapide
Détails des paramètres
speedScale : 0.5 à 2.0 (vitesse)
pitchScale : -0.15 à 0.15 (hauteur)
intonationScale : 0.0 à 2.0 (intonation)
volumeScale : 0.0 à 2.0 (volume)
prePhonemeLength : 0.0 à 1.5 (silence de début, en secondes)
postPhonemeLength : 0.0 à 1.5 (silence de fin, en secondes)
Précautions
En mode client, c’est le presets.yaml du moteur officiel qui est mis à jour. Rien n’est stocké dans le storage du projet Laravel.
- Si vous créez à chaque fois un conteneur temporaire (par exemple
docker run --rm), les presets sont perdus à l’arrêt du conteneur.
- Incluez toujours à la fois
speaker_uuid et style_id.
- Pour
generate(id:) sur une query créée par talkFromPreset(), spécifiez normalement le même ID que le style_id du preset.
Dépannage
Les presets ne peuvent pas être récupérés
- Vérifiez que le moteur officiel VOICEVOX est bien démarré.
- Vérifiez que
VOICEVOX_URL pointe vers la bonne cible.
- Vérifiez que vous n’avez pas relancé un autre conteneur Docker.
L’emplacement du fichier de presets est inconnu
Sur la version build macOS, vérifiez cet emplacement :
Sous Docker, le fichier est stocké dans la zone utilisateur du moteur officiel (dans le conteneur). Pour une persistance, montez cette zone utilisateur du conteneur dans un volume Docker.
Le speaker_uuid est inconnu
Vous pouvez récupérer l’UUID depuis la liste des locuteurs.