VOICEVOX for Laravel es un paquete para usar las funciones de síntesis de voz de VOICEVOX desde Laravel. Puedes generar audio en japonés a partir de texto.
Lo más rápido para empezar es el modo cliente. Si tu entorno admite FFI, puedes ir migrando después al modo nativo o al modo Engine API por fases.
Los 3 modos de uso
| Modo | Forma de ejecución | FFI | Uso recomendado | Guía |
|---|
| Modo cliente | Conexión HTTP al motor oficial de VOICEVOX | No requerido | Para empezar a probar, entornos Docker, entornos sin FFI | Client Talk / Client Song |
| Modo nativo | Llama directamente a VOICEVOX CORE con PHP FFI | Requerido | Aceleración, ejecución offline, integración con herramientas CLI | Native Talk / Native Song |
| Modo Engine API | Laravel expone una API compatible con VOICEVOX | Requerido | Publicar un servidor API, integración con varios clientes | Engine Talk / Engine Song |
Inicio rápido
Pasos del modo cliente.
Arranca el motor oficial
docker pull voicevox/voicevox_engine:cpu-latest
docker run --rm -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:cpu-latest
Prueba la síntesis de voz
use Revolution\Voicevox\Voicevox;
$response = Voicevox::talk('こんにちは、Laravel です。', id: 1)->generate(id: 1);
$response->storeAs('output.wav');
Funciones principales
Síntesis de voz (Talk)
use Revolution\Voicevox\Client\TalkAudioQuery;
use Revolution\Voicevox\Voicevox;
$response = Voicevox::talk('こんにちは', id: 1)
->tap(function (TalkAudioQuery $talk) {
$talk->audioQuery['speedScale'] = 1.2;
$talk->audioQuery['pitchScale'] = 0.05;
$talk->audioQuery['intonationScale'] = 1.5;
$talk->audioQuery['volumeScale'] = 1.0;
})
->generate(id: 1);
Síntesis de voz cantada (Song)
use Revolution\Voicevox\Song\Note;
use Revolution\Voicevox\Song\Score;
use Revolution\Voicevox\Voicevox;
$score = Score::make([
Note::make(length: 15),
Note::make(length: Note::len(ticks: 480, bpm: 120), lyric: 'ド', key: 60),
Note::make(length: Note::len(480, 120), lyric: 'レ', key: 62),
Note::make(length: Note::len(960, 120), lyric: 'ミ', key: 64),
Note::make(length: 2),
]);
$response = Voicevox::song($score)->generate(id: 3001);
Diccionario de usuario y presets
En modo cliente, usa la facade Voicevox para manipular el diccionario de usuario y los presets del motor oficial.
use Revolution\Voicevox\Voicevox;
$uuid = Voicevox::addWord(
surface: 'Laravel',
pronunciation: 'ララベル',
accentType: 3,
);
$presetId = Voicevox::addPreset([
'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,
]);
Integración con Laravel AI SDK
use Laravel\Ai\Audio;
$audio = Audio::of('こんにちは、Laravel です。')
->voice('ずんだもん')
->generate();
$audio->storeAs('output.wav');
Siguientes pasos