> ## 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 für Laravel

> Beschreibt, wie Sie im Native-Modus von VOICEVOX für Laravel die Preset-Funktion verwenden und Sprachsynthese-Parameter speichern und wiederverwenden.

## Was sind Presets?

Mit der Preset-Funktion können Sie häufig verwendete Kombinationen von Sprachsynthese-Parametern speichern und wiederverwenden.

<Info>
  Wenn Sie Sprechgeschwindigkeit, Tonhöhe, Intonation usw. gebündelt verwalten, ist es leichter, bei der Erzeugung mehrerer Audiodateien eine konsistente Qualität zu wahren.
</Info>

## Übersicht

Die Preset-Funktion von Laravel VOICEVOX ist eine native Implementierung auf Basis von VOICEVOX Core. Preset-Daten werden im JSON-Format unter `storage/voicevox/presets.json` persistent gespeichert.

Da unabhängig von der offiziellen VOICEVOX-Engine ein eigener Speicher verwendet wird, werden auf Laravel-Seite erstellte Presets nicht auf die offizielle Engine übertragen (und umgekehrt).

## Konfiguration

Standardmäßig wird unter `storage/voicevox/presets.json` gespeichert. Wenn Sie einen anderen Pfad verwenden möchten, können Sie dies in `config/voicevox.php` ändern.

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

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

## Preset-Struktur

Presets haben die folgende Struktur.

```php theme={null}
[
    'id' => 1,                 // Preset-ID (Integer, automatisch vergeben)
    'name' => 'ゆっくり',       // Preset-Name
    'speaker_uuid' => 'uuid',  // Speaker-UUID (String)
    'style_id' => 1,           // Style-ID (Integer)
    'speedScale' => 0.8,       // Sprechgeschwindigkeit (0,5 – 2,0)
    'pitchScale' => 0.0,       // Tonhöhe (-0,15 – 0,15)
    'intonationScale' => 1.0,  // Intonation (0,0 – 2,0)
    'volumeScale' => 1.0,      // Lautstärke (0,0 – 2,0)
    'prePhonemeLength' => 0.1, // Stille am Anfang (0,0 – 1,5)
    'postPhonemeLength' => 0.1, // Stille am Ende (0,0 – 1,5)
]
```

## Grundlegende Verwendung

### Preset erstellen

Sie können mit `add()` des `preset()`-Helpers ein Preset erstellen.

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

$id = preset()->add([
    'id' => 0, // Bei Angabe von 0 wird automatisch eine ID vergeben
    '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,
]);

// Die automatisch vergebene ID wird zurückgegeben
echo $id; // Beispiel: 1
```

### Alle Presets abrufen

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

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

### Preset suchen

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

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

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

### Preset aktualisieren

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

### Preset löschen

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

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

## Sprachsynthese mit Presets

Nutzen Sie den `talk()`-Helper oder den `/audio_query_from_preset`-Endpunkt der Engine-API.

### `talk()`-Helper

Geben Sie in `talk(preset:)` die Preset-ID an. Die reguläre Style-ID wird dann ignoriert.

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

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

<Tip>
  Der Ablauf der Sprachsynthese ist bei Preset-Anwendung derselbe wie üblich. Nur die Werte der Standard-`AudioQuery` werden durch das Preset ersetzt.
</Tip>

### Zugriff über die Engine-API

Wenn Sie die Engine-API von Laravel VOICEVOX gestartet haben, können Sie Presets über HTTP verwalten.

#### Alle Presets abrufen

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

#### Preset hinzufügen

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

#### Preset aktualisieren

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

#### Preset löschen

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

#### Audio-Query mit einem Preset erzeugen

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

## Parameter-Details

* `speedScale`: 0,5 – 2,0 (Sprechgeschwindigkeit)
* `pitchScale`: -0,15 – 0,15 (Tonhöhe)
* `intonationScale`: 0,0 – 2,0 (Intonation)
* `volumeScale`: 0,0 – 2,0 (Lautstärke)
* `prePhonemeLength`: 0,0 – 1,5 (Stille am Anfang, in Sekunden)
* `postPhonemeLength`: 0,0 – 1,5 (Stille am Ende, in Sekunden)

## Hinweise

<Warning>
  Die Presets der Laravel-Version und die der offiziellen VOICEVOX-Engine werden getrennt verwaltet. Hinzufügen, Aktualisieren und Löschen werden sofort in der JSON-Datei gespeichert.
</Warning>

* Wenn Sie als Preset-ID `0` angeben, wird automatisch eine unbenutzte ID vergeben.
* Fügen Sie in ein Preset sowohl `speaker_uuid` (UUID-String) als auch `style_id` (Integer) ein.

## Fehlerbehebung

### Presets werden nicht gespeichert

1. Prüfen Sie die Schreibrechte auf das Storage-Verzeichnis.
2. Prüfen Sie, ob `storage/voicevox/presets.json` korrekt erstellt wurde.

### Der Speicherort der Preset-Datei ist unklar

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

### Presets zurücksetzen

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

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


## Related topics

- [Client-Modus - Presets - VOICEVOX für Laravel](/de/packages/laravel-voicevox/client-presets.md)
- [Native-Modus - Benutzerwörterbuch - VOICEVOX für Laravel](/de/packages/laravel-voicevox/native-user-dict.md)
- [Native-Modus: Talk (Text-Sprachsynthese) - VOICEVOX für Laravel](/de/packages/laravel-voicevox/native-talk.md)
- [Native-Modus: Song (Gesangs-Sprachsynthese) - VOICEVOX für Laravel](/de/packages/laravel-voicevox/native-song.md)
- [Client-Modus - Benutzerwörterbuch - VOICEVOX für Laravel](/de/packages/laravel-voicevox/client-user-dict.md)
