Famille ElevenLabs
Les modèles vocaux d’ElevenLabs, au nombre de deux : Eleven v4 pour la synthèse vocale et Scribe v2 pour la transcription. Tous deux s’appellent via les endpoints audio compatibles OpenAI.
elevenlabs/eleven_v4POST /v1/audio/speechelevenlabs/scribe_v2POST /v1/audio/transcriptionsLes paramètres communs des endpoints sont décrits dans Audio Speech API et Audio Transcriptions API. Les prix en vigueur figurent sur la page du modèle : la synthèse vocale est facturée au caractère, la transcription à la durée audio.
Synthèse vocale Eleven v4
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"])
with client.audio.speech.with_streaming_response.create(
model="elevenlabs/eleven_v4",
voice="21m00Tcm4TlvDq8ikWAM",
input="Bonjour et bienvenue dans la synthèse vocale OfoxAI.",
response_format="mp3",
) as resp:
resp.stream_to_file("speech.mp3")Lors de nos tests, une phrase d’environ 20 caractères chinois est renvoyée en 2 secondes environ, pour un audio généré d’environ 4 secondes.
Transcription Scribe v2
En plus du texte transcrit, Scribe v2 renvoie les horodatages de début et de fin de chaque mot et peut distinguer les différents locuteurs.
Python
import json
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"])
with open("meeting.mp3", "rb") as f:
result = client.audio.transcriptions.create(
model="elevenlabs/scribe_v2",
file=f,
extra_body={"provider_options": json.dumps({"elevenlabs": {"diarize": True}})},
)
print(result.text)
for w in (result.model_extra or {}).get("words", [])[:10]:
print(w.get("speaker"), w["start"], w["end"], w["word"])Structure de la réponse :
- La séparation des locuteurs s’active via
provider_options:{"elevenlabs": {"diarize": true}}, passé comme chaîne JSON dans un champ de formulaire. response_formatacceptejsonetverbose_json, qui renvoient le même contenu. Pour obtenir un fichier de sous-titres, générez-le vous-même à partir des horodatages dewords.
Erreurs courantes
D’autres erreurs sont décrites dans Audio Speech API et Audio Transcriptions API.
Documentation officielle
FAQ
Que mettre dans voice pour ElevenLabs ?
Un ID de voix (20 caractères), par exemple 21m00Tcm4TlvDq8ikWAM, à trouver dans la bibliothèque de voix ElevenLabs. Un nom de voix (par exemple Rachel) ou la voix alloy d'OpenAI renvoie 404 voice_id not found.
Quels formats audio Eleven v4 prend-il en charge ?
mp3 (par défaut), opus, wav et pcm. aac et flac ne sont pas pris en charge.
Scribe v2 sait-il distinguer les locuteurs ?
Oui. Passez {"elevenlabs": {"diarize": true}} via provider_options ; dans la réponse, chaque mot de words porte un champ speaker, par exemple speaker_0 ou speaker_1.
Scribe v2 peut-il produire directement des sous-titres srt ?
Non, response_format accepte uniquement json et verbose_json. Vous pouvez générer les sous-titres vous-même à partir des horodatages start et end de words dans la réponse.
Comment la voix ElevenLabs est-elle facturée ?
Eleven v4 est facturé au nombre de caractères en entrée, Scribe v2 à la durée audio ; les prix figurent sur la page du modèle.