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

# Native 模式:Talk(文字語音合成)- VOICEVOX for Laravel

> 說明如何在 VOICEVOX for Laravel 的 Native 模式,透過 PHP FFI 直接呼叫 VOICEVOX CORE 進行文字語音合成。

## 什麼是 Native 模式

Native 模式透過 [VOICEVOX Core for PHP](/zh-TW/packages/voicevox-core-php) 從 PHP FFI 直接呼叫 VOICEVOX CORE。

不需啟動官方引擎即可合成,但需要 FFI 與本機 library 的設定。

<Warning>
  Native 模式不適合 Web 伺服器。請於本機 CLI 使用。FFI 的限制也在 [PHP FFI](/zh-TW/advanced/ffi) 中說明。
</Warning>

## 事前準備

1. 已完成 [安裝與設定](/zh-TW/packages/laravel-voicevox/installation)
2. 已完成 [VOICEVOX Core for PHP](/zh-TW/packages/voicevox-core-php) 的設定
3. 已於 `.env` 設定 `VOICEVOX_CORE_PATH`

```dotenv theme={null}
VOICEVOX_CORE_PATH=/path/to/voicevox_core/
```

## 基本用法

在 Native 模式使用 `talk()` helper。

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

$response = talk('這是 Native 版', id: 1)
    ->generate(id: 1);

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

## Style ID 指定

`id` 請指定已載入 `.vvm` 中所包含的 style ID。

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

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

只可使用 `config/voicevox.php` 的 `core.vvms` 中所包含的模型。

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

Native 模式的 `tap()` 用法相同。但 `TalkAudioQuery` 與 Client 模式為不同類別。

```php theme={null}
use Revolution\Voicevox\Talk\TalkAudioQuery;
use function Revolution\Voicevox\talk;

$response = 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);
```

<Info>
  `tap()` 模式本身整理於 [tap() helper 與 Tappable trait](/zh-TW/advanced/tap)。VOICEVOX for Laravel 是其實踐範例。
</Info>

## 使用 AquesTalk 風格記法的假名

Native 模式沒有 `enable_katakana_english`,不適合直接朗讀含英文的輸入。

可改用直接傳入 AquesTalk 風格記法假名的 `kana()`。

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

$response = kana("ネイティブ'バンナ/ノダ'", id: 1)
    ->generate(id: 1);

$response->storeAs('native', 'kana.wav');
```

## 與 Client 模式的差異

| 項目        | Client Talk        | Native Talk |
| --------- | ------------------ | ----------- |
| 引擎啟動      | 需要                 | 不需要         |
| FFI       | 不需                 | 需要          |
| 英文自動片假名轉換 | 有                  | 無           |
| API 入口    | `Voicevox::talk()` | `talk()`    |

## 下一步閱讀

<Columns cols={2}>
  <Card title="Native Song" href="/zh-TW/packages/laravel-voicevox/native-song" icon="music">
    透過 FFI 處理歌聲模型。
  </Card>

  <Card title="VOICEVOX Core for PHP" href="/zh-TW/packages/voicevox-core-php" icon="library">
    確認 Pure PHP wrapper 端的設定與限制。
  </Card>
</Columns>


## Related topics

- [Client 模式:Talk(文字語音合成)- VOICEVOX for Laravel](/zh-TW/packages/laravel-voicevox/client-talk.md)
- [Engine API 模式:Talk(文字語音合成)- VOICEVOX for Laravel](/zh-TW/packages/laravel-voicevox/engine-talk.md)
- [Engine API 模式:Song(歌聲語音合成)- VOICEVOX for Laravel](/zh-TW/packages/laravel-voicevox/engine-song.md)
- [Native 模式:Song(歌聲語音合成)- VOICEVOX for Laravel](/zh-TW/packages/laravel-voicevox/native-song.md)
- [Client 模式:Song(歌聲語音合成)- VOICEVOX for Laravel](/zh-TW/packages/laravel-voicevox/client-song.md)
