跳转到主要内容

什么是客户端模式

客户端模式通过向官方 VOICEVOX 引擎发送 HTTP 请求来生成语音。 由于不需要 FFI,这是最方便的入门方式。
尚未完成安装的用户请先阅读 安装与配置

前置准备

1

启动官方引擎

docker pull voicevox/voicevox_engine:cpu-latest
docker run --rm -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:cpu-latest
2

按需配置连接 URL

VOICEVOX_URL=http://127.0.0.1:50021
在支持 GPU 的环境中也可以使用 GPU 镜像。

基本使用

use Revolution\Voicevox\Voicevox;

$response = Voicevox::talk('Laravelが好きなのだ', id: 1)
    ->generate(id: 1);

$response->storeAs('client', 'talk.wav');

指定 Style ID

talk()generate() 都可以传入 Style ID。
  • talk(id:):创建 audio_query 时使用的风格
  • generate(id:):进行语音合成时使用的风格
通常应指定相同的值。
use Revolution\Voicevox\Voicevox;

$response = Voicevox::talk('ずんだもんなのだ', id: 1)
    ->generate(id: 1);
可用的说话人列表可通过 speakers() 获取。
use Revolution\Voicevox\Voicevox;

$speakers = Voicevox::speakers();

使用 tap() 调整 Audio Query

在该包中,可以在 generate() 之前获取 TalkAudioQuery,因此非常适合用 tap() 只插入副作用。
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);
tap() 仅对 query 进行微调,返回值可原样传给下一个 generate()。相关思路整理在 tap() helper 与 Tappable trait 中。

英语自动片假名转换

客户端模式启用了 enable_katakana_english,可将包含英语的文本自动向片假名靠拢地修正。
$response = Voicevox::talk('I love Laravel', id: 1)
    ->generate(id: 1);
如需禁用,请在第 3 个参数传入 false
$response = Voicevox::talk('I love Laravel', id: 1, enableKatakanaEnglish: false)
    ->generate(id: 1);

保存响应

$response = Voicevox::talk('テスト', id: 1)->generate(id: 1);

$wav = $response->content();
$path = $response->storeAs('client', 'talk.wav');
$path = $response->storeAs('client', 'talk.wav', disk: 's3');

下一步阅读

客户端 Song

在歌声合成中构建 ScoreNote

VOICEVOX Core for PHP

当准备使用 FFI 时,了解核心库的用法。
最后修改于 2026年7月13日