AstrApp
Docs

Asistente de voz

Convierte texto en voz con ElevenLabs y transcribe audio en tiempo real con AssemblyAI desde la API de AstrApp.

Solo por API: todavía no hay pantalla

La voz no tiene pantalla ni entrada en el menú de la app. Lo que existe son las dos rutas de esta guía, que puedes llamar con tu sesión o con una API key.

Texto a voz (TTS)

Recibe un texto y devuelve el audio. Usa ElevenLabs y, si no responde, VibeVoice en Replicate.

Voz a texto (STT)

Te da un token temporal para transcribir en tiempo real con AssemblyAI y guarda el resultado como conversación.

Convertir texto en voz

POST/api/v1/voice/tts
Devuelve el audio del texto
CampoRequeridoDescripción
textSíTexto a convertir en audio. Máximo 5,000 caracteres.
voiceIdNoID de una voz de ElevenLabs. Si no lo mandas, se usa la voz Mariana (XB0fDUnXU5powFXDhCwa).
providerNoCon "vibevoice" se salta ElevenLabs y usa VibeVoice directamente.
bash
curl -X POST https://app.astrapp.lat/api/v1/voice/tts \
  -H "Authorization: Bearer sk_live_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "text": "Hola, ¿en qué puedo ayudarte hoy?" }' \
  --output respuesta.mp3

Respuesta

La respuesta es el audio. El encabezado X-TTS-Provider te dice quién lo generó:

ProveedorFormatoCuándo
elevenlabsaudio/mpegPrimera opción. Usa el modelo eleven_multilingual_v2 y respeta el voiceId.
vibevoiceEl del archivo generado (normalmente WAV)Respaldo en Replicate. Ignora el voiceId.

Si ningún proveedor responde, la ruta devuelve 503 con "fallback": "browser" en el cuerpo: en ese caso usa la síntesis de voz del navegador.

Transcribir en tiempo real

POST/api/v1/voice/transcribe
Con action en token o save

1. Pide un token temporal

Envía { "action": "token" } (es la acción por defecto). Recibes { "token": "…" }, válido por una hora.

bash
curl -X POST https://app.astrapp.lat/api/v1/voice/transcribe \
  -H "Authorization: Bearer sk_live_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "action": "token" }'

2. Transcribe con AssemblyAI

Con ese token, tu cliente abre la sesión en tiempo real de AssemblyAI y le envía el audio del micrófono. Así lo hace AstrApp: audio mono PCM de 16 bits a 16 kHz y 400 ms de silencio para cerrar cada frase.

text
wss://api.assemblyai.com/v2/realtime/ws?sample_rate=16000&token=<token>&end_utterance_silence_threshold=400

3. Guarda la transcripción

Con action en save, la transcripción se guarda como una conversación nueva del proyecto, con su evaluación de calidad pendiente y las etiquetas voice_transcription, live y assemblyai. Responde { "success": true, "conversationId": "…" }.

CampoRequeridoDescripción
actionSí"save"
projectIdSíProyecto donde se guarda la conversación.
messagesSíLista no vacía de mensajes con role, content y timestamp opcional.

Guardar necesita la sesión de la app

La acción save escribe con los permisos de tu sesión. Con API key no hay sesión y la base rechaza la escritura, así que llámala desde la app, con tu sesión iniciada.

Si la transcripción no está disponible

Si el servicio de transcripción no está configurado en AstrApp, /api/v1/voice/transcribe responde 503 en cualquier acción.