Passer au contenu principal

Qu’est-ce qu’un preset

La fonctionnalité de presets permet d’enregistrer et de réutiliser des combinaisons fréquentes de paramètres de synthèse vocale.
En regroupant vitesse, hauteur, intonation et autres paramètres, il est plus facile de conserver une qualité cohérente même en générant plusieurs voix.

Vue d’ensemble

La fonctionnalité de presets de Laravel VOICEVOX est une implémentation native utilisant VOICEVOX Core. Les données de presets sont persistées au format JSON dans storage/voicevox/presets.json. Comme un stockage indépendant du moteur officiel VOICEVOX est utilisé, les presets créés côté Laravel ne sont pas répercutés côté moteur officiel (et inversement).

Configuration

Par défaut, les données sont stockées dans storage/voicevox/presets.json. Pour utiliser un autre chemin, modifiez config/voicevox.php.
// config/voicevox.php

return [
    'core' => [
        'presets' => storage_path('voicevox/presets.json'),
    ],
];

Structure d’un preset

Un preset a la structure suivante.
[
    'id' => 1,                 // ID du preset (entier, auto-incrémenté)
    'name' => 'ゆっくり',       // Nom du preset
    'speaker_uuid' => 'uuid',  // UUID du locuteur (chaîne)
    'style_id' => 1,           // ID de style (entier)
    'speedScale' => 0.8,       // Vitesse (0.5 à 2.0)
    'pitchScale' => 0.0,       // Hauteur (-0.15 à 0.15)
    'intonationScale' => 1.0,  // Intonation (0.0 à 2.0)
    'volumeScale' => 1.0,      // Volume (0.0 à 2.0)
    'prePhonemeLength' => 0.1, // Silence de début (0.0 à 1.5)
    'postPhonemeLength' => 0.1, // Silence de fin (0.0 à 1.5)
]

Utilisation de base

Créer un preset

add() du helper preset() permet de créer un preset.
use function Revolution\Voicevox\preset;

$id = preset()->add([
    'id' => 0, // Spécifier 0 déclenche l'auto-numérotation
    'name' => 'ゆっくり丁寧',
    'speaker_uuid' => '7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff',
    'style_id' => 1,
    'speedScale' => 0.8,
    'pitchScale' => 0.0,
    'intonationScale' => 1.2,
    'volumeScale' => 1.0,
    'prePhonemeLength' => 0.1,
    'postPhonemeLength' => 0.1,
]);

// L'ID auto-numéroté est retourné
echo $id; // exemple : 1

Récupérer tous les presets

use function Revolution\Voicevox\preset;

$presets = preset()->all();

Rechercher un preset

use function Revolution\Voicevox\preset;

$preset = preset()->find(1);

if ($preset !== null) {
    echo $preset['name']; // "ゆっくり丁寧"
}

Mettre à jour un preset

use function Revolution\Voicevox\preset;

preset()->update([
    'id' => 1,
    'name' => 'ゆっくりはっきり',
    'speaker_uuid' => '7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff',
    'style_id' => 1,
    'speedScale' => 0.7,
    'pitchScale' => 0.0,
    'intonationScale' => 1.5,
    'volumeScale' => 1.0,
    'prePhonemeLength' => 0.1,
    'postPhonemeLength' => 0.1,
]);

Supprimer un preset

use function Revolution\Voicevox\preset;

preset()->delete(1);

Synthèse vocale avec un preset

Utilisez le helper talk() ou l’endpoint /audio_query_from_preset de l’Engine API.

Helper talk()

Spécifiez l’ID du preset via talk(preset:). L’ID de style habituel est alors ignoré.
use function Revolution\Voicevox\talk;

$response = talk('プリセットを使うのだ', preset: 1)->generate(id: 1);
Le flux de synthèse est le même que d’habitude lorsqu’un preset est appliqué. Seules les valeurs par défaut de l’AudioQuery sont remplacées par celles du preset.

Accès via l’Engine API

Si l’API du moteur Laravel VOICEVOX est démarrée, vous pouvez manipuler les presets via HTTP.

Récupérer tous les presets

curl http://localhost:50513/presets

Ajouter un preset

curl -X POST http://localhost:50513/add_preset \
  -H "Content-Type: application/json" \
  -d '{
    "id": 0,
    "name": "ゆっくり丁寧",
    "speaker_uuid": "7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff",
    "style_id": 1,
    "speedScale": 0.8,
    "pitchScale": 0.0,
    "intonationScale": 1.2,
    "volumeScale": 1.0,
    "prePhonemeLength": 0.1,
    "postPhonemeLength": 0.1
  }'

Mettre à jour un preset

curl -X POST http://localhost:50513/update_preset \
  -H "Content-Type: application/json" \
  -d '{
    "id": 1,
    "name": "ゆっくりはっきり",
    "speaker_uuid": "7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff",
    "style_id": 1,
    "speedScale": 0.7,
    "pitchScale": 0.0,
    "intonationScale": 1.5,
    "volumeScale": 1.0,
    "prePhonemeLength": 0.1,
    "postPhonemeLength": 0.1
  }'

Supprimer un preset

curl -X POST http://localhost:50513/delete_preset \
  -H "Content-Type: application/json" \
  -d '{"id": 1}'

Générer une audio query avec un preset

curl -X POST "http://localhost:50513/audio_query_from_preset?text=こんにちは&preset_id=1"

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

Les presets de la version Laravel et ceux du moteur officiel VOICEVOX sont gérés séparément. Les ajouts, mises à jour et suppressions sont immédiatement écrits dans le fichier JSON.
  • Spécifier 0 comme ID de preset attribue automatiquement un ID libre.
  • Incluez toujours à la fois speaker_uuid (chaîne UUID) et style_id (entier) dans le preset.

Dépannage

Les presets ne sont pas enregistrés

  1. Vérifiez les droits d’écriture sur le dossier de storage.
  2. Vérifiez que storage/voicevox/presets.json est bien créé.

L’emplacement du fichier de presets est inconnu

$path = config('voicevox.core.presets');
echo $path;

Réinitialiser les presets

rm storage/voicevox/presets.json
$path = config('voicevox.core.presets');
if (file_exists($path)) {
    unlink($path);
}
Dernière modification le 13 juillet 2026