VOICEVOX for Laravel è un pacchetto che ti permette di usare le funzionalità di sintesi vocale di VOICEVOX in Laravel. Puoi generare audio in giapponese partendo dal testo.
Il modo più rapido per iniziare è partire dalla modalità client. Se disponi di un ambiente in cui FFI è utilizzabile, puoi migrare in seguito, progressivamente, alla modalità nativa o alla modalità API Engine.
Le 3 modalità di utilizzo
| Modalità | Metodo di esecuzione | FFI | Casi d’uso | Guida |
|---|
| Modalità client | Connessione HTTP al VOICEVOX Engine ufficiale | Non necessario | Prova iniziale, ambienti Docker, ambienti senza FFI | Client Talk / Client Song |
| Modalità nativa | Chiamata diretta a VOICEVOX CORE tramite PHP FFI | Necessario | Velocizzazione, esecuzione offline, integrazione con strumenti CLI | Native Talk / Native Song |
| Modalità API Engine | Laravel fornisce un’API compatibile con VOICEVOX | Necessario | Esposizione come server API, integrazione con più client | Engine Talk / Engine Song |
Guida rapida
Procedura per la modalità client.
Avviare l'engine ufficiale
docker pull voicevox/voicevox_engine:cpu-latest
docker run --rm -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:cpu-latest
Provare la sintesi vocale
use Revolution\Voicevox\Voicevox;
$response = Voicevox::talk('こんにちは、Laravel です。', id: 1)->generate(id: 1);
$response->storeAs('output.wav');
Funzionalità principali
Sintesi vocale (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);
Sintesi canora (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);
Dizionario utente e preset
In modalità client puoi usare la facade Voicevox per gestire il dizionario utente e i preset dell’engine ufficiale.
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,
]);
Integrazione con Laravel AI SDK
use Laravel\Ai\Audio;
$audio = Audio::of('こんにちは、Laravel です。')
->voice('ずんだもん')
->generate();
$audio->storeAs('output.wav');
Prossimi passi