Passer au contenu principal

Faire chanter en mode natif

En mode natif, la synthèse chantée appelle directement VOICEVOX CORE via PHP FFI. La construction de Score et de Note est identique à celle du mode client.

Prérequis

  1. Avoir terminé Installation et configuration
  2. Avoir mis en place VOICEVOX Core for PHP
  3. Avoir configuré VOICEVOX_CORE_PATH dans le .env
VOICEVOX_CORE_PATH=/path/to/voicevox_core/
Pour utiliser le modèle de chant, vérifiez que s0.vvm figure bien dans core.vvms de config/voicevox.php.

Créer un Score et des 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),
]);

Utilisation de 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');
Avec le même Score, vous pouvez réutiliser une partition commune entre le mode client et le mode natif.

Resynchroniser F0 et volume avec tap()

tap() est également utile pour Song natif. Après avoir ajusté le SongAudioQuery, vous pouvez le passer tel quel à 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);
Pour mettre à jour F0 et volume individuellement, exécutez impérativement dans l’ordre suivant.
->tap(function (SongAudioQuery $song) {
    $song->updateF0();
    $song->updateVolume();
})

Différences avec le mode client

ÉlémentClient SongNative Song
Démarrage du moteurRequisNon requis
FFINon requisRequis
Point d’entrée APIVoicevox::song()song()
Score / NoteCommunCommun
Pour le fonctionnement de FFI, consultez PHP FFI. Pour le flux avec la bibliothèque core seule, consultez Utilisation de VOICEVOX Core for PHP.

Pages suivantes

Détails Score et Note

Découvrez la gestion pratique des données de partition Song.

Client Song

Comparez avec la version client HTTP.

Vue d'ensemble VOICEVOX for Laravel

Retrouvez tous les modes et pages associées.
Dernière modification le 13 juillet 2026