# Audio

> Points d'accès de synthèse vocale et de transcription (Whisper) pour générer de l'audio à partir de texte et convertir des fichiers audio en texte.

- Canonical: https://tchavi.com/fr/docs/audio

---


Tchavi prend en charge deux points d'accès audio : la synthèse vocale (TTS) pour générer de l'audio à partir de texte, et la transcription (Whisper) pour convertir des fichiers audio en texte.

## Synthèse vocale

<Endpoint method="POST" path="/v1/audio/speech" />

Convertit du texte en audio parlé. Renvoie des octets audio bruts.

| Paramètre         | Type   | Requis | Description                                                                     |
| ----------------- | ------ | ------ | ------------------------------------------------------------------------------- |
| `model`           | string | Oui    | « tts-1 » (plus rapide) ou « tts-1-hd » (qualité supérieure)                    |
| `input`           | string | Oui    | Le texte à convertir en parole (max 4096 caractères)                            |
| `voice`           | string | Oui    | alloy, ash, ballad, cedar, coral, echo, fable, marin, nova, onyx, sage, shimmer |
| `response_format` | string | Non    | mp3, opus, aac, flac, wav, pcm. Par défaut : mp3                                |
| `speed`           | number | Non    | Vitesse de lecture 0.25–4.0. Par défaut : 1.0                                   |

<CodeTabs>

```tchavi
import Tchavi from '@tchavi/sdk';
import { writeFileSync } from 'fs';

const client = new Tchavi({ apiKey: 'YOUR_API_KEY' });

const response = await client.audio.speech.create({
  model: 'tts-1',
  input: 'Tchavi est la meilleure passerelle d\'API IA en Afrique.',
  voice: 'nova',
  response_format: 'mp3',
});

const buffer = Buffer.from(await response.arrayBuffer());
writeFileSync('speech.mp3', buffer);
```

```javascript
const response = await fetch('https://tchavi.com/api/v1/audio/speech', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: 'Bearer YOUR_API_KEY',
  },
  body: JSON.stringify({
    model: 'tts-1',
    input: "Tchavi est la meilleure passerelle d'API IA en Afrique.",
    voice: 'nova',
    response_format: 'mp3',
  }),
});

const buffer = await response.arrayBuffer();
// Enregistrer ou lire le buffer audio
```

```python
import requests

response = requests.post(
    "https://tchavi.com/api/v1/audio/speech",
    headers={
        "Content-Type": "application/json",
        "Authorization": "Bearer YOUR_API_KEY",
    },
    json={
        "model": "tts-1",
        "input": "Tchavi est la meilleure passerelle d'API IA en Afrique.",
        "voice": "nova",
        "response_format": "mp3",
    },
)

with open("speech.mp3", "wb") as f:
    f.write(response.content)
```

```curl
curl -X POST https://tchavi.com/api/v1/audio/speech \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "tts-1",
    "input": "Tchavi est la meilleure passerelle d'\''API IA en Afrique.",
    "voice": "nova"
  }' --output speech.mp3
```

</CodeTabs>

## Transcription (Whisper)

<Endpoint method="POST" path="/v1/audio/transcriptions" />

Transcrit des fichiers audio en texte. Envoyez en `multipart/form-data`.

| Paramètre         | Type   | Requis | Description                                                                                                                   |
| ----------------- | ------ | ------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `model`           | string | Oui    | « whisper-1 »                                                                                                                 |
| `file`            | file   | Oui    | Fichier audio (mp3, wav, m4a, webm, ogg…). Max 25 Mo                                                                          |
| `language`        | string | Non    | Code ISO-639-1 (par ex. « fr », « en »). Détecté automatiquement si omis                                                      |
| `response_format` | string | Non    | json, text, srt, vtt, verbose_json. Par défaut : json                                                                         |
| `prompt`          | string | Non    | Texte facultatif pour guider le style du modèle ou poursuivre un segment précédent. Doit correspondre à la langue de l'audio. |
| `temperature`     | number | Non    | Température d'échantillonnage 0–1. Des valeurs plus élevées produisent des transcriptions plus variées. Par défaut : 0        |

<CodeTabs>

```tchavi
import Tchavi from '@tchavi/sdk';
import { createReadStream } from 'fs';

const client = new Tchavi({ apiKey: 'YOUR_API_KEY' });

const result = await client.audio.transcriptions.create({
  model: 'whisper-1',
  file: createReadStream('audio.mp3'),
  language: 'fr',
});

console.log(result.text);
console.log('Durée :', result.tchavi.duration_minutes, 'min');
console.log('Crédits utilisés :', result.tchavi.credits_used);
```

```javascript
const formData = new FormData();
formData.append('model', 'whisper-1');
formData.append('file', audioFile); // File ou Blob
formData.append('language', 'fr');

const response = await fetch('https://tchavi.com/api/v1/audio/transcriptions', {
  method: 'POST',
  headers: { Authorization: 'Bearer YOUR_API_KEY' },
  body: formData,
});

const data = await response.json();
console.log(data.text);
```

```python
import requests

with open("audio.mp3", "rb") as f:
    response = requests.post(
        "https://tchavi.com/api/v1/audio/transcriptions",
        headers={"Authorization": "Bearer YOUR_API_KEY"},
        files={"file": ("audio.mp3", f, "audio/mpeg")},
        data={"model": "whisper-1", "language": "fr"},
    )

data = response.json()
print(data["text"])
```

```curl
curl -X POST https://tchavi.com/api/v1/audio/transcriptions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "model=whisper-1" \
  -F "file=@audio.mp3" \
  -F "language=fr"
```

</CodeTabs>

