Met de presetfunctie kun je veelgebruikte combinaties van spraaksyntheseparameters opslaan in de officiële VOICEVOX-engine en hergebruiken. In de clientmodus worden presets niet aan de Laravel-kant opgeslagen; je gebruikt de preset-API die door de gekoppelde officiële engine wordt beheerd.
Overzicht
Presets in de clientmodus beheer je via de Voicevox-facade. Intern worden HTTP-requests verstuurd naar /presets, /add_preset, /update_preset, /delete_preset en /audio_query_from_preset van de officiële VOICEVOX-engine.
De presets van de officiële engine worden per OS opgeslagen in het gebruikersgebied als presets.yaml. Bij de macOS-buildversie van de VOICEVOX-app (productversie) worden ze doorgaans hier opgeslagen.
Ook als je de officiële engine in Docker draait, worden ze opgeslagen in het gebruikersgebied binnen de container. Zolang je dezelfde container blijft gebruiken, blijft de data behouden na een herstart. Maar als je telkens een tijdelijke container aanmaakt, zoals met docker run --rm, gaan de presets verloren zodra de container stopt. Wil je presets betrouwbaar persistent maken, mount dan het gebruikersgebied in de container via een Docker volume.
Dit staat los van storage/voicevox/presets.json van de native modus. De Laravel-instelling config('voicevox.core.presets') wordt in de clientmodus niet gebruikt.
Voorbereiding
Start de officiële VOICEVOX-engine.
Je kunt de bestemming wijzigen met VOICEVOX_URL.
Structuur van een preset
De presets die je in de clientmodus verstuurt en ontvangt zijn arrays volgens het schema van de officiële engine-API.
Basisgebruik
Een preset aanmaken
Met Voicevox::addPreset() maak je een preset aan. Als je bij de officiële engine 0 opgeeft als id, wordt er een ongebruikt ID toegewezen.
Alle presets ophalen
Een preset bijwerken
Een preset verwijderen
Spraaksynthese met presets
talkFromPreset()
Voicevox::talkFromPreset() maakt via /audio_query_from_preset van de officiële engine een TalkAudioQuery waarop de preset al is toegepast.
audioQueryFromPreset()
Gebruik audioQueryFromPreset() als je alleen de audioquery-array van vóór de spraaksynthese wilt ophalen.
Ook een TalkAudioQuery die uit een preset is gemaakt, kun je net als bij het gewone Voicevox::talk() aanpassen met tap().
Mapping met de Engine API
Elke methode van de Voicevox-facade komt overeen met een API van de officiële engine.
Verschillen met de native modus
Praktijkvoorbeelden
Voor narratie
Voor snel spreken
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
In de clientmodus wordt de presets.yaml aan de kant van de officiële engine bijgewerkt. Er wordt niets opgeslagen in de storage van je Laravel-project.
- Als je telkens een tijdelijke container aanmaakt, zoals met
docker run --rm, gaan de presets verloren wanneer de container stopt.
- Neem zowel
speaker_uuid als style_id op.
- Als je een query die met
talkFromPreset() is gemaakt aan generate(id:) doorgeeft, geef je normaal gesproken hetzelfde ID op als het style_id van de preset.
Problemen oplossen
Presets kunnen niet worden opgehaald
- Controleer of de officiële VOICEVOX-engine draait.
- Controleer of
VOICEVOX_URL naar de juiste bestemming verwijst.
- Controleer of je in Docker niet per ongeluk een andere container opnieuw hebt gestart.
De locatie van het presetbestand is onbekend
Controleer bij de macOS-buildversie de volgende locatie.
In Docker worden ze opgeslagen in het gebruikersgebied van de officiële engine (binnen de container). Als persistentie nodig is, mount dan het gebruikersgebied in de container op een Docker volume.
De speaker_uuid is onbekend
Je kunt de UUID ophalen uit de lijst met speakers.