> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Mode natif - Presets - VOICEVOX for Laravel

> Comment utiliser la fonctionnalité de presets en mode natif de VOICEVOX for Laravel pour sauvegarder et réutiliser des paramètres de synthèse vocale.

## 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.

<Info>
  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.
</Info>

## 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`.

```php theme={null}
// config/voicevox.php

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

## Structure d'un preset

Un preset a la structure suivante.

```php theme={null}
[
    '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.

```php theme={null}
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

```php theme={null}
use function Revolution\Voicevox\preset;

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

### Rechercher un preset

```php theme={null}
use function Revolution\Voicevox\preset;

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

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

### Mettre à jour un preset

```php theme={null}
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

```php theme={null}
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é.

```php theme={null}
use function Revolution\Voicevox\talk;

$response = talk('プリセットを使うのだ', preset: 1)->generate(id: 1);
```

<Tip>
  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.
</Tip>

### 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

```bash theme={null}
curl http://localhost:50513/presets
```

#### Ajouter un preset

```bash theme={null}
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

```bash theme={null}
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

```bash theme={null}
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

```bash theme={null}
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

<Warning>
  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.
</Warning>

* 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

```php theme={null}
$path = config('voicevox.core.presets');
echo $path;
```

### Réinitialiser les presets

```bash theme={null}
rm storage/voicevox/presets.json
```

```php theme={null}
$path = config('voicevox.core.presets');
if (file_exists($path)) {
    unlink($path);
}
```


## Related topics

- [Mode client - Presets - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/client-presets.md)
- [Mode natif - Dictionnaire utilisateur - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/native-user-dict.md)
- [Mode natif : Song (synthèse vocale chantée) - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/native-song.md)
- [Mode natif : Talk (synthèse vocale de texte) - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/native-talk.md)
- [Mode client - Dictionnaire utilisateur - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/client-user-dict.md)
