Zum Hauptinhalt springen

Was sind Presets?

Mit der Preset-Funktion können Sie häufig verwendete Kombinationen von Sprachsynthese-Parametern speichern und wiederverwenden.
Wenn Sie Sprechgeschwindigkeit, Tonhöhe, Intonation usw. gebündelt verwalten, ist es leichter, bei der Erzeugung mehrerer Audiodateien eine konsistente Qualität zu wahren.

Ü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.
// config/voicevox.php

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

Preset-Struktur

Presets haben die folgende Struktur.
[
    '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.
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

use function Revolution\Voicevox\preset;

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

Preset suchen

use function Revolution\Voicevox\preset;

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

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

Preset aktualisieren

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

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.
use function Revolution\Voicevox\talk;

$response = talk('プリセットを使うのだ', preset: 1)->generate(id: 1);
Der Ablauf der Sprachsynthese ist bei Preset-Anwendung derselbe wie üblich. Nur die Werte der Standard-AudioQuery werden durch das Preset ersetzt.

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

curl http://localhost:50513/presets

Preset hinzufügen

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

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

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

Audio-Query mit einem Preset erzeugen

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

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

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

Presets zurücksetzen

rm storage/voicevox/presets.json
$path = config('voicevox.core.presets');
if (file_exists($path)) {
    unlink($path);
}
Zuletzt geändert am 13. Juli 2026