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
- Prüfen Sie die Schreibrechte auf das Storage-Verzeichnis.
- 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