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

# Mode API du moteur : Talk (synthèse vocale de texte) - VOICEVOX for Laravel

> Comment intégrer une API HTTP compatible moteur VOICEVOX dans une application Laravel et utiliser les mêmes endpoints Talk que le moteur officiel.

## Qu'est-ce que le mode API du moteur

Le mode API du moteur expose, à l'intérieur de l'application Laravel, une API HTTP compatible avec le moteur officiel VOICEVOX.

En démarrant l'application par `php artisan serve --port=50513`, vous pouvez utiliser directement `/audio_query`, `/synthesis`, etc.

## Prérequis

<Steps>
  <Step title="Mettre en place VOICEVOX Core for PHP">
    Suivez la procédure d'[Installation et configuration](/fr/packages/laravel-voicevox/installation) pour préparer `voicevox-core-php` et la bibliothèque core.
  </Step>

  <Step title="Activer les variables d'environnement et FFI">
    ```dotenv theme={null}
    VOICEVOX_CORE_PATH=/path/to/voicevox_core/
    ```

    ```ini theme={null}
    ffi.enable=true
    ```
  </Step>

  <Step title="Installer les ressources d'informations sur les personnages">
    ```shell theme={null}
    php artisan voicevox:install
    ```
  </Step>
</Steps>

## Démarrer le moteur version Laravel

```shell theme={null}
php artisan serve --port=50513
```

Par défaut, il démarre sur `http://127.0.0.1:50513`.

### À propos du port 50513

Le port par défaut du moteur officiel VOICEVOX est 50021. Pour permettre l'exécution simultanée du moteur version Laravel et du moteur officiel, le port par défaut est fixé à 50513.

C'est simplement un démarrage avec `--port=50513` ; vous pouvez utiliser un autre port comme `--port=8000` sans problème.

<Info>
  Si son port par défaut est déjà occupé, le moteur officiel s'ajuste automatiquement sur 50022 ou un port libre suivant. `php artisan serve` sans `--port` fait de même à partir de 8001, mais avec `--port` spécifié, un port occupé fait échouer le démarrage. Il est recommandé de choisir un port fixe peu susceptible d'entrer en collision avec d'autres services. 50513 en est un exemple.
</Info>

## Générer une voix Talk

### 1. Créer une `audio_query`

```shell theme={null}
curl -s -X POST "http://127.0.0.1:50513/audio_query?speaker=1&text=ララベルが好きなのだ" \
  -H "Content-Type: application/json" \
  > audio_query.json
```

### 2. Synthétiser via `synthesis`

```shell theme={null}
curl -s -X POST "http://127.0.0.1:50513/synthesis?speaker=1" \
  -H "Content-Type: application/json" \
  -d @audio_query.json \
  > talk.wav
```

## Utilisation depuis un client Laravel

Le moteur version Laravel peut servir de cible en mode client.

```php theme={null}
// config/voicevox.php
'client' => [
    'url' => env('VOICEVOX_URL', 'http://127.0.0.1:50513'),
],
```

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

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

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

## Activation/désactivation de l'API du moteur et fallback

```php theme={null}
'engine' => [
    'disabled' => env('VOICEVOX_ENGINE_DISABLED', false),
    'fallback_url' => env('VOICEVOX_ENGINE_FALLBACK_URL', 'http://127.0.0.1:50021'),
],
```

Les endpoints non encore implémentés comme `cancellable_synthesis` ou `multi_synthesis` peuvent être relayés en fallback vers le moteur officiel.

<Info>
  Pour utiliser le fallback, démarrez le moteur officiel à l'URL indiquée par `VOICEVOX_ENGINE_FALLBACK_URL`.
</Info>

## État de la prise en charge côté Talk

| Endpoint                      | Version Laravel | Fallback | Remarque                                     |
| ----------------------------- | --------------- | -------- | -------------------------------------------- |
| `POST /audio_query`           | ✅               | ✅        | `enable_katakana_english` non pris en charge |
| `POST /accent_phrases`        | ✅               | ✅        | `enable_katakana_english` non pris en charge |
| `POST /synthesis`             | ✅               | ✅        |                                              |
| `POST /mora_data`             | ✅               | ✅        |                                              |
| `POST /mora_length`           | ✅               | ✅        |                                              |
| `POST /mora_pitch`            | ✅               | ✅        |                                              |
| `GET /speakers`               | ✅               | ✅        |                                              |
| `GET /speaker_info`           | ✅               | ✅        | L'installation des ressources est nécessaire |
| `POST /cancellable_synthesis` | ❌               | ✅        | Uniquement en fallback                       |
| `POST /multi_synthesis`       | ❌               | ✅        | Uniquement en fallback                       |

## Endpoint TTS compatible OpenAI

`POST /v1/audio/speech` accepte le même format de requête que l'API de synthèse vocale d'OpenAI. Il suffit de changer la Base URL pour l'utiliser depuis Laravel AI SDK et de nombreux outils compatibles avec l'API OpenAI.

```shell theme={null}
curl -s -X POST "http://127.0.0.1:50513/v1/audio/speech" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "voicevox",
    "input": "ララベルが好きなのだ",
    "voice": "ずんだもん"
  }' \
  > talk.wav
```

### Paramètres

| Paramètre         | Description                                                                                    |
| ----------------- | ---------------------------------------------------------------------------------------------- |
| `input`           | Texte à lire (jusqu'à 4096 caractères)                                                         |
| `voice`           | ID de style (numérique), alias (`ずんだもん`, `四国めたん`…) ou nom de voix OpenAI (`alloy`, `shimmer`…) |
| `speed`           | Vitesse de lecture. Appliquée comme `speedScale` (0.25 à 4.0, 1.0 par défaut)                  |
| `response_format` | Retourne toujours du wav. La valeur spécifiée est ignorée                                      |
| Autres paramètres | Ignorés                                                                                        |

<Info>
  Les noms de voix OpenAI (`alloy`, `shimmer`…) sont une correspondance provisoire. Il n'existe pas de définition officielle pour associer les voix d'OpenAI aux personnages VOICEVOX ; cette correspondance existe donc pour la compatibilité. Nous recommandons d'utiliser les alias des personnages VOICEVOX (`ずんだもん`, `四国めたん/ノーマル`, etc.).
</Info>

## Pages suivantes

<Columns cols={2}>
  <Card title="API du moteur : Song" href="/fr/packages/laravel-voicevox/engine-song" icon="music">
    Découvrez l'utilisation de `sing_frame_audio_query` et `frame_synthesis`.
  </Card>

  <Card title="Intégration Laravel AI SDK" href="/fr/packages/laravel-voicevox/ai-sdk" icon="sparkles">
    Découvrez la configuration pour utiliser VOICEVOX depuis la facade `Audio`.
  </Card>
</Columns>


## Related topics

- [Mode API du moteur : Song (synthèse vocale chantée) - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/engine-song.md)
- [Mode natif : Talk (synthèse vocale de texte) - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/native-talk.md)
- [Mode client : Talk (synthèse vocale de texte) - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/client-talk.md)
- [Guide de développement d'applications intégrées à l'API du moteur - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/app-guide.md)
- [VOICEVOX for Laravel](/fr/packages/laravel-voicevox/index.md)
