> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# 客户端模式：Talk（文本语音合成） - VOICEVOX for Laravel

> 介绍在 VOICEVOX for Laravel 的客户端模式下连接官方 VOICEVOX 引擎进行文本语音合成的步骤。

## 什么是客户端模式

客户端模式通过向官方 VOICEVOX 引擎发送 HTTP 请求来生成语音。

由于不需要 FFI，这是最方便的入门方式。

<Info>
  尚未完成安装的用户请先阅读 [安装与配置](/zh/packages/laravel-voicevox/installation)。
</Info>

## 前置准备

<Steps>
  <Step title="启动官方引擎">
    ```shell theme={null}
    docker pull voicevox/voicevox_engine:cpu-latest
    docker run --rm -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:cpu-latest
    ```
  </Step>

  <Step title="按需配置连接 URL">
    ```dotenv theme={null}
    VOICEVOX_URL=http://127.0.0.1:50021
    ```
  </Step>
</Steps>

在支持 GPU 的环境中也可以使用 GPU 镜像。

## 基本使用

```php theme={null}
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:)`：进行语音合成时使用的风格

通常应指定相同的值。

```php theme={null}
use Revolution\Voicevox\Voicevox;

$response = Voicevox::talk('ずんだもんなのだ', id: 1)
    ->generate(id: 1);
```

可用的说话人列表可通过 `speakers()` 获取。

```php theme={null}
use Revolution\Voicevox\Voicevox;

$speakers = Voicevox::speakers();
```

## 使用 `tap()` 调整 Audio Query

在该包中，可以在 `generate()` 之前获取 `TalkAudioQuery`，因此非常适合用 `tap()` 只插入副作用。

```php theme={null}
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);
```

<Tip>
  `tap()` 仅对 query 进行微调，返回值可原样传给下一个 `generate()`。相关思路整理在 [tap() helper 与 Tappable trait](/zh/advanced/tap) 中。
</Tip>

## 英语自动片假名转换

客户端模式启用了 `enable_katakana_english`，可将包含英语的文本自动向片假名靠拢地修正。

```php theme={null}
$response = Voicevox::talk('I love Laravel', id: 1)
    ->generate(id: 1);
```

如需禁用，请在第 3 个参数传入 `false`。

```php theme={null}
$response = Voicevox::talk('I love Laravel', id: 1, enableKatakanaEnglish: false)
    ->generate(id: 1);
```

## 保存响应

```php theme={null}
$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');
```

## 下一步阅读

<Columns cols={2}>
  <Card title="客户端 Song" href="/zh/packages/laravel-voicevox/client-song" icon="music">
    在歌声合成中构建 `Score` 与 `Note`。
  </Card>

  <Card title="VOICEVOX Core for PHP" href="/zh/packages/voicevox-core-php/usage" icon="library">
    当准备使用 FFI 时，了解核心库的用法。
  </Card>
</Columns>


## Related topics

- [引擎 API 模式：Talk（文本语音合成） - VOICEVOX for Laravel](/zh/packages/laravel-voicevox/engine-talk.md)
- [原生模式：Talk（文本语音合成） - VOICEVOX for Laravel](/zh/packages/laravel-voicevox/native-talk.md)
- [客户端模式：Song（歌声合成） - VOICEVOX for Laravel](/zh/packages/laravel-voicevox/client-song.md)
- [VOICEVOX for Laravel](/zh/packages/laravel-voicevox/index.md)
- [引擎 API 模式：Song（歌声合成） - VOICEVOX for Laravel](/zh/packages/laravel-voicevox/engine-song.md)
