Familia ElevenLabs
Los modelos de voz de ElevenLabs, dos en total: Eleven v4 para síntesis de voz y Scribe v2 para transcripción de voz. Ambos se invocan a través de los endpoints de audio compatibles con OpenAI.
elevenlabs/eleven_v4POST /v1/audio/speechelevenlabs/scribe_v2POST /v1/audio/transcriptionsLos parámetros comunes de los endpoints están en Audio Speech API y Audio Transcriptions API. Los precios actualizados están en la página del modelo : la síntesis de voz se factura por caracteres y la transcripción por duración del audio.
Síntesis de voz con 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="Hola, bienvenido a la síntesis de voz de OfoxAI.",
response_format="mp3",
) as resp:
resp.stream_to_file("speech.mp3")En las pruebas, una frase en chino de unos 20 caracteres se devolvió en unos 2 segundos, con un audio generado de unos 4 segundos.
Transcripción de voz con Scribe v2
Además del texto transcrito, Scribe v2 devuelve los tiempos de inicio y fin de cada palabra y puede distinguir entre hablantes.
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"])Estructura de la respuesta:
- La diarización de hablantes se activa mediante
provider_options:{"elevenlabs": {"diarize": true}}, enviado como cadena JSON en un campo del formulario. response_formatadmitejsonyverbose_json, que devuelven el mismo contenido. Si necesita un archivo de subtítulos, puede generarlo a partir de las marcas de tiempo dewords.
Errores habituales
Más errores en Audio Speech API y Audio Transcriptions API.
Documentación oficial
Preguntas frecuentes
¿Qué valor va en voice de ElevenLabs?
Un ID de voz (20 caracteres), por ejemplo 21m00Tcm4TlvDq8ikWAM, que puede buscar en la biblioteca de voces de ElevenLabs. Si indica un nombre de voz (como Rachel) o la voz alloy de OpenAI, se devuelve 404 voice_id not found.
¿Qué formatos de audio admite Eleven v4?
mp3 (predeterminado), opus, wav y pcm. aac y flac no son compatibles.
¿Scribe v2 puede distinguir entre hablantes?
Sí. Pase {"elevenlabs": {"diarize": true}} mediante provider_options y cada palabra de words en la respuesta incluirá el campo speaker, por ejemplo speaker_0 o speaker_1.
¿Scribe v2 puede devolver directamente subtítulos srt?
No; response_format solo admite json y verbose_json. Puede generar los subtítulos a partir de las marcas de tiempo start y end de words en la respuesta.
¿Cómo se factura la voz de ElevenLabs?
Eleven v4 se factura por número de caracteres de entrada y Scribe v2 por duración del audio; los precios unitarios están en la página del modelo.