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

# Native modus - presets - VOICEVOX for Laravel

> Uitleg over het gebruik van de presetfunctie in de native modus van VOICEVOX for Laravel om spraaksyntheseparameters op te slaan en opnieuw te gebruiken.

## Wat zijn presets

Met de presetfunctie kun je veelgebruikte combinaties van spraaksyntheseparameters opslaan en hergebruiken.

<Info>
  Door spreeksnelheid, toonhoogte, intonatie en dergelijke gezamenlijk te beheren, is het makkelijker om een consistente kwaliteit te behouden wanneer je meerdere audiofragmenten genereert.
</Info>

## Overzicht

De presetfunctie van Laravel VOICEVOX is een native implementatie die gebruikmaakt van VOICEVOX Core. Presetgegevens worden in JSON-formaat opgeslagen in `storage/voicevox/presets.json`.

Omdat er een opslag wordt gebruikt die losstaat van de officiële VOICEVOX-engine, worden presets die je aan de Laravel-kant maakt niet doorgevoerd naar de officiële engine (en andersom evenmin).

## Configuratie

Standaard worden presets opgeslagen in `storage/voicevox/presets.json`. Wil je een ander pad gebruiken, dan kun je dat wijzigen in `config/voicevox.php`.

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

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

## Structuur van een preset

Een preset heeft de volgende structuur.

```php theme={null}
[
    'id' => 1,                 // Preset-ID (integer, automatisch toegewezen)
    'name' => 'ゆっくり',       // Presetnaam
    'speaker_uuid' => 'uuid',  // Speaker-UUID (string)
    'style_id' => 1,           // Stijl-ID (integer)
    'speedScale' => 0.8,       // Spreeksnelheid (0.5 – 2.0)
    'pitchScale' => 0.0,       // Toonhoogte (-0.15 – 0.15)
    'intonationScale' => 1.0,  // Intonatie (0.0 – 2.0)
    'volumeScale' => 1.0,      // Volume (0.0 – 2.0)
    'prePhonemeLength' => 0.1, // Stilte aan het begin (0.0 – 1.5)
    'postPhonemeLength' => 0.1, // Stilte aan het einde (0.0 – 1.5)
]
```

## Basisgebruik

### Een preset aanmaken

Met `add()` van de `preset()`-helper maak je een preset aan.

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

$id = preset()->add([
    'id' => 0, // Bij 0 wordt automatisch een ID toegewezen
    '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,
]);

// Het automatisch toegewezen ID wordt teruggegeven
echo $id; // bijvoorbeeld: 1
```

### Alle presets ophalen

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

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

### Een preset opzoeken

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

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

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

### Een preset bijwerken

```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,
]);
```

### Een preset verwijderen

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

preset()->delete(1);
```

## Spraaksynthese met presets

Gebruik de `talk()`-helper of het `/audio_query_from_preset`-endpoint van de Engine API.

### De `talk()`-helper

Geef een preset-ID op via `talk(preset:)`. Het gewone stijl-ID wordt dan genegeerd.

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

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

<Tip>
  Ook bij het toepassen van een preset blijft de normale spraaksyntheseflow gelijk. Alleen de waarden van de standaard `AudioQuery` worden door de preset vervangen.
</Tip>

### Toegang via de Engine API

Als je de Engine API van Laravel VOICEVOX draait, kun je presets via HTTP beheren.

#### Alle presets ophalen

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

#### Een preset toevoegen

```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
  }'
```

#### Een preset bijwerken

```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
  }'
```

#### Een preset verwijderen

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

#### Een audioquery genereren met een preset

```bash theme={null}
curl -X POST "http://localhost:50513/audio_query_from_preset?text=こんにちは&preset_id=1"
```

## Parameterdetails

* `speedScale`: 0.5 – 2.0 (spreeksnelheid)
* `pitchScale`: -0.15 – 0.15 (toonhoogte)
* `intonationScale`: 0.0 – 2.0 (intonatie)
* `volumeScale`: 0.0 – 2.0 (volume)
* `prePhonemeLength`: 0.0 – 1.5 (stilte aan het begin, in seconden)
* `postPhonemeLength`: 0.0 – 1.5 (stilte aan het einde, in seconden)

## Aandachtspunten

<Warning>
  De presets van de Laravel-versie en de presets van de officiële VOICEVOX-engine worden apart beheerd. Toevoegingen, wijzigingen en verwijderingen worden direct naar het JSON-bestand opgeslagen.
</Warning>

* Als je `0` opgeeft als preset-ID, wordt automatisch een ongebruikt ID toegewezen.
* Neem in een preset zowel `speaker_uuid` (UUID-string) als `style_id` (integer) op.

## Probleemoplossing

### Presets worden niet opgeslagen

1. Controleer de schrijfrechten van de storage-directory
2. Controleer of `storage/voicevox/presets.json` correct is aangemaakt

### Je weet niet waar het presetbestand staat

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

### Presets resetten

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

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


## Related topics

- [Clientmodus - presets - VOICEVOX for Laravel](/nl/packages/laravel-voicevox/client-presets.md)
- [Native modus - gebruikerswoordenboek - VOICEVOX for Laravel](/nl/packages/laravel-voicevox/native-user-dict.md)
- [Native modus: song (zangsynthese) - VOICEVOX for Laravel](/nl/packages/laravel-voicevox/native-song.md)
- [Native modus: talk (tekst-naar-spraak) - VOICEVOX for Laravel](/nl/packages/laravel-voicevox/native-talk.md)
- [Engine-API-modus: song (zangsynthese) - VOICEVOX for Laravel](/nl/packages/laravel-voicevox/engine-song.md)
