Vai al contenuto principale

Cantare in modalità nativa

Nella sintesi canora in modalità nativa, VOICEVOX CORE viene chiamato direttamente tramite PHP FFI. Il modo di costruire Score e Note è lo stesso della modalità client.

Preparazione

  1. Aver completato Installazione e configurazione
  2. Aver configurato VOICEVOX Core for PHP
  3. Aver impostato VOICEVOX_CORE_PATH nel .env
VOICEVOX_CORE_PATH=/path/to/voicevox_core/
Per usare i modelli di canto verifica che s0.vvm sia incluso in core.vvms di config/voicevox.php.

Creare Score e Note

use Revolution\Voicevox\Song\Note;
use Revolution\Voicevox\Song\Score;

$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),
]);

Uso di base

use Revolution\Voicevox\Song\Note;
use Revolution\Voicevox\Song\Score;
use function Revolution\Voicevox\song;

$score = Score::make([
    Note::make(length: 15),
    Note::make(length: Note::len(480, 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 = song($score, teacher: 6000)
    ->generate(id: 3001);

$response->storeAs('native', 'song.wav');
Con lo stesso Score puoi riutilizzare la stessa partitura sia in modalità client che nativa.

Risincronizzare F0 e volume con tap()

Anche nel Song nativo tap() è utile. Dopo aver regolato la SongAudioQuery puoi passarla direttamente a generate().
use Revolution\Voicevox\Song\SongAudioQuery;
use function Revolution\Voicevox\song;

$response = song($score, teacher: 6000)
    ->tap(function (SongAudioQuery $song) {
        $song->sync();
    })
    ->generate(id: 3001);
Se vuoi aggiornare F0 e volume separatamente, esegui sempre nel seguente ordine.
->tap(function (SongAudioQuery $song) {
    $song->updateF0();
    $song->updateVolume();
})

Differenze con la modalità client

VoceClient SongNative Song
Avvio dell’engineNecessarioNon necessario
FFINon necessarioNecessario
Punto di ingresso APIVoicevox::song()song()
Score / NoteIn comuneIn comune
Per il funzionamento di FFI consulta PHP FFI; per il flusso della sola libreria core, Utilizzo di VOICEVOX Core for PHP.

Pagine successive da leggere

Dettagli di Score e Note

Consulta le pratiche di gestione dei dati di partitura Song.

Client Song

Confronta le differenze con la versione client HTTP.

Panoramica VOICEVOX for Laravel

Consulta insieme le varie modalità e le pagine correlate.
Ultima modifica il 13 luglio 2026