Con la funcionalidad de presets puedes guardar combinaciones habituales de parámetros de síntesis de voz en el motor oficial de VOICEVOX y reutilizarlas. En modo cliente, los presets no se guardan en Laravel; se usa la API de presets que gestiona el motor oficial al que te conectas.
Resumen
Los presets del modo cliente se manejan desde la facade Voicevox. Internamente envía peticiones HTTP a /presets, /add_preset, /update_preset, /delete_preset y /audio_query_from_preset del motor oficial de VOICEVOX.
Los presets del motor oficial se guardan como presets.yaml en el área de usuario según el sistema operativo. En la build de macOS de la app de VOICEVOX (versión de producto) se guarda normalmente en:
Cuando ejecutas el motor oficial con Docker también se guarda en el área de usuario dentro del contenedor. Los datos se mantienen mientras sigas usando el mismo contenedor, aunque reinicies. Sin embargo, si creas contenedores efímeros cada vez con docker run --rm, los presets se pierden al finalizar el contenedor. Si necesitas persistencia garantizada, monta el área de usuario del contenedor con un volumen Docker.
Se gestionan por separado del storage/voicevox/presets.json del modo nativo. El config('voicevox.core.presets') de Laravel no se usa en modo cliente.
Preparación
Arranca el motor oficial de VOICEVOX.
Puedes cambiar el destino de conexión con VOICEVOX_URL.
Estructura del preset
El preset que se envía y recibe en modo cliente es un array que se ajusta al esquema de la API del motor oficial.
Uso básico
Crear un preset
Puedes crear presets con Voicevox::addPreset(). En el motor oficial, si indicas 0 como id, se asigna un ID libre.
Obtener todos los presets
Actualizar un preset
Eliminar un preset
Síntesis de voz con presets
talkFromPreset()
Voicevox::talkFromPreset() usa /audio_query_from_preset del motor oficial para crear un TalkAudioQuery con el preset ya aplicado.
audioQueryFromPreset()
Si solo necesitas el array de audio query previo a la síntesis, usa audioQueryFromPreset().
Ajustes adicionales con tap()
El TalkAudioQuery creado desde un preset se puede ajustar con tap() igual que con el Voicevox::talk() habitual.
Correspondencia con la Engine API
Cada método de la facade Voicevox corresponde a una API del motor oficial.
Diferencias con el modo nativo
Ejemplos prácticos
Para narración
Para habla rápida
Detalle de parámetros
speedScale: 0.5 a 2.0 (velocidad)
pitchScale: -0.15 a 0.15 (tono)
intonationScale: 0.0 a 2.0 (entonación)
volumeScale: 0.0 a 2.0 (volumen)
prePhonemeLength: 0.0 a 1.5 (silencio inicial, en segundos)
postPhonemeLength: 0.0 a 1.5 (silencio final, en segundos)
Notas importantes
En modo cliente se actualiza el presets.yaml del motor oficial. No se guarda en el storage del proyecto Laravel.
- Si creas contenedores efímeros cada vez con
docker run --rm, los presets se pierden al finalizar el contenedor.
- Incluye tanto
speaker_uuid como style_id.
- Cuando llames a
generate(id:) con una query creada por talkFromPreset(), normalmente indica el mismo ID que el style_id del preset.
Solución de problemas
No se pueden obtener los presets
- Comprueba que el motor oficial de VOICEVOX esté arrancado.
- Comprueba que
VOICEVOX_URL apunte al destino correcto.
- Comprueba si has vuelto a arrancar un contenedor distinto de Docker.
No sé dónde está el archivo de presets
En la build de macOS, comprueba esta ruta:
En Docker se guarda en el área de usuario del motor oficial (dentro del contenedor). Si necesitas persistencia, monta el área de usuario del contenedor en un volumen Docker.
No conozco el speaker_uuid
Puedes obtener el UUID desde la lista de speakers.