跳转到主要内容

Laravel AI SDK 集成

VOICEVOX for Laravel 与 Laravel AI SDK 已完成集成,可通过 Audio Facade 生成语音。 可用的驱动有以下两种:
  • voicevox-client(客户端模式)
  • voicevox(原生模式)

客户端驱动(voicevox-client

向官方 VOICEVOX 引擎发送 HTTP 请求的模式。无需 FFI。

前置准备

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

配置

config/ai.php 中添加 voicevox-client provider。
'providers' => [
    'voicevox-client' => [
        'driver' => 'voicevox-client',
        'key' => env('VOICEVOX_URL', 'http://127.0.0.1:50021'),
    ],
],

使用方法

use Laravel\Ai\Audio;

$response = Audio::of('Laravelが好きなのだ')
    ->voice('ずんだもん')
    ->generate('voicevox-client');

Storage::put('talk.wav', $response->content());

原生驱动(voicevox

直接调用 VOICEVOX CORE 的模式。需要 FFI。 仅能使用 config/voicevox.phpcore.vvms 已加载的模型。

配置

'providers' => [
    'voicevox' => [
        'driver' => 'voicevox',
    ],
],

使用方法

use Laravel\Ai\Audio;

$response = Audio::of('ネイティブで話すのだ')
    ->voice('ずんだもん')
    ->generate('voicevox');

Storage::put('talk.wav', $response->content());

可传给 voice() 的值

voice() 可以指定以下内容:
  • VOICEVOX 的 Style ID(数字字符串)
  • 角色名别名(例如 ずんだもん四国めたん/ノーマル

别名列表

别名Style ID角色
ずんだもん1ずんだもん(あまあま)
ずんだもん/あまあま1ずんだもん(あまあま)
ずんだもん/ノーマル3ずんだもん(ノーマル)
ずんだもん/セクシー5ずんだもん(セクシー)
ずんだもん/ツンツン7ずんだもん(ツンツン)
ずんだもん/ささやき22ずんだもん(ささやき)
ずんだもん/ヒソヒソ38ずんだもん(ヒソヒソ)
四国めたん/あまあま0四国めたん(あまあま)
四国めたん2四国めたん(ノーマル)
四国めたん/ノーマル2四国めたん(ノーマル)
四国めたん/セクシー4四国めたん(セクシー)
四国めたん/ツンツン6四国めたん(ツンツン)
四国めたん/ヒソヒソ37四国めたん(ヒソヒソ)
春日部つむぎ8春日部つむぎ(ノーマル)
波音リツ9波音リツ(ノーマル)
雨晴はう10雨晴はう(ノーマル)
玄野武宏11玄野武宏(ノーマル)
白上虎太郎12白上虎太郎(ノーマル)
青山龍星13青山龍星(ノーマル)
冥鳴ひまり14冥鳴ひまり(ノーマル)
九州そら16九州そら(ノーマル)
default-female10雨晴はう(ノーマル)
default-male12白上虎太郎(ノーマル)
如果省略 voice(),将使用 default-female(ID:10)。
use Laravel\Ai\Audio;

Audio::of('テスト')->voice('3')->generate('voicevox-client');
可用的说话人列表也可以通过 Voicevox::speakers() 查看。
use Revolution\Voicevox\Voicevox;

$speakers = Voicevox::speakers();

Agent(KanalizerAgent)

由于原生模式没有 enable_katakana_english,你可以使用将英语提前转换为片假名的 KanalizerAgent
use Revolution\Voicevox\Ai\Agents\KanalizerAgent;
use function Revolution\Voicevox\talk;

$kana = KanalizerAgent::make()->prompt('KanalizerAgentで英語をカタカナに変換するのだ');

$response = talk($kana['kana'] ?? $kana->text, id: 1)->generate(id: 1);

$response->storeAs('native', 'kanalizer.wav');
基于 AI 的片假名转换并非总是准确。在实际使用中,请让人工确认生成的文本后再进行合成。

下一步阅读

客户端:Talk

了解客户端模式下常规 API 的调用流程。

原生:Talk

了解通过 FFI 直接合成的模式的用法。
最后修改于 2026年7月13日