Volver al blog
Proyectos5 min

EdgeVoice: API de Texto a Voz Compatible con OpenAI

Conrado Gómez

EdgeVoice es una API REST de texto a voz que desarrollé como alternativa auto-hospedable a servicios comerciales de TTS. Compatible con el formato de OpenAI, utiliza Microsoft Edge TTS para generar audio de calidad profesional sin costos por uso.

¿Por Qué EdgeVoice?

Los servicios de Text-to-Speech como OpenAI TTS o ElevenLabs son potentes, pero costosos a escala. EdgeVoice ofrece:

  • Costo cero: Sin límites de caracteres ni suscripciones
  • Privacidad: Todo el procesamiento es local, sin enviar datos a terceros
  • Compatibilidad OpenAI: Integración directa con aplicaciones existentes
  • Múltiples voces: Acceso a las voces neurales de Microsoft Edge

Características Principales

1. Compatibilidad con OpenAI TTS API

EdgeVoice implementa los mismos endpoints que OpenAI, permitiendo reemplazarlo sin cambiar código:

POST /v1/audio/speech
Authorization: Bearer YOUR_KEY
{model: "tts-1", voice: "alloy", input: "Hello world"}

2. Soporte Multi-Formato

EdgeVoice genera audio en múltiples formatos optimizados:

  • MP3: Uso general, compatible universalmente
  • Opus: Máxima calidad con menor tamaño (ideal para streaming)
  • AAC: Optimizado para dispositivos Apple
  • FLAC: Sin pérdida, para aplicaciones de audio profesional
  • WAV: Sin comprimir, máxima calidad

3. Streaming con Server-Sent Events (SSE)

EdgeVoice soporta streaming en tiempo real, enviando chunks de audio mientras se genera:

response_format: "opus"
stream: true
→ Audio enviado en fragmentos incrementales

Esto permite iniciar reproducción antes de que se genere todo el audio, reduciendo latencia percibida.

4. Control de Velocidad de Reproducción

Ajusta la velocidad de habla entre 0.25x (muy lento) y 4.0x (muy rápido):

  • 1.0x: Velocidad normal (conversacional)
  • 1.2x: Ideal para audiolibros y podcasts
  • 0.8x: Útil para aprendizaje de idiomas
  • 1.5x+: Consumo rápido de contenido

Stack Tecnológico

  • Python: Backend de la API
  • Flask: Framework web minimalista
  • Edge-TTS: Biblioteca para acceder a Microsoft Edge TTS
  • FFmpeg: Conversión y procesamiento de audio
  • Asyncio: Gestión asíncrona para streaming eficiente

Casos de Uso

1. Asistentes de Voz Personalizados

Integra EdgeVoice en chatbots o asistentes virtuales para añadir voz sin costos recurrentes.

2. Generación de Audiolibros

Convierte grandes volúmenes de texto en audio para plataformas educativas o de entretenimiento.

3. Accesibilidad Web

Implementa lectores de pantalla personalizados o sistemas de navegación por voz para usuarios con discapacidades visuales.

4. Prototipado de Apps con IA

Desarrolladores pueden probar funcionalidades de voz antes de invertir en servicios comerciales.

Instalación y Configuración

# Clonar repositorio
git clone https://github.com/OOMrConrado/EdgeVoice
cd EdgeVoice

# Instalar dependencias
pip install -r requirements.txt

# Iniciar servidor
python app.py

# API disponible en http://localhost:5000

Ejemplo de Uso con cURL

Generar audio simple:

curl http://localhost:5000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{"model": "tts-1", "voice": "alloy", "input": "Hola mundo"}' \
  --output audio.mp3

Integración con Librerías Populares

OpenAI Python SDK

from openai import OpenAI
client = OpenAI(base_url="http://localhost:5000/v1")

response = client.audio.speech.create(
  model="tts-1",
  voice="alloy",
  input="Hello from EdgeVoice!"
)
response.stream_to_file("output.mp3")

JavaScript/TypeScript

const response = await fetch('http://localhost:5000/v1/audio/speech', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    model: 'tts-1',
    voice: 'alloy',
    input: 'Text to speech'
  })
});
const audioBlob = await response.blob();

💡 Desafío Técnico Resuelto

El mayor reto fue implementar streaming eficiente sin bloquear el servidor. La solución fue usar asyncio con generators para enviar chunks de audio a medida que Edge TTS los genera, manteniendo baja latencia incluso con textos largos.

Voces Disponibles

EdgeVoice soporta todas las voces neurales de Microsoft Edge. Algunas populares:

  • Español (ES): es-ES-AlvaroNeural, es-ES-ElviraNeural
  • Español (MX): es-MX-DaliaNeural, es-MX-JorgeNeural
  • English (US): en-US-JennyNeural, en-US-GuyNeural
  • English (UK): en-GB-SoniaNeural, en-GB-RyanNeural

Consulta la documentación completa para ver todas las voces y sus características.

Limitaciones y Consideraciones

  • EdgeVoice depende del servicio Edge TTS de Microsoft, que puede cambiar sin aviso
  • Para uso comercial intensivo, considera servicios oficiales con SLA garantizado
  • La calidad de voz es excelente pero puede no igualar servicios premium como ElevenLabs
  • Requiere conexión a internet para acceder al servicio TTS de Edge

Roadmap Futuro

  • ✅ API compatible con OpenAI TTS
  • ✅ Streaming con Server-Sent Events
  • ✅ Soporte multi-formato (MP3, Opus, AAC, FLAC)
  • 🔄 Cache de audios generados para reducir latencia
  • 📋 Dashboard web para gestión y monitoreo
  • 🌐 Soporte para más idiomas y voces custom
  • 🔐 Autenticación con API keys rotativos

Enlaces del Proyecto

EdgeVoice es perfecto para proyectos personales, prototipos y pequeñas aplicaciones. Para producción a gran escala, evalúa tus necesidades de SLA y considera servicios comerciales.

Tags:#Python#API#Text-to-Speech#OpenAI

¿Te gustó este artículo?

Descubre más artículos sobre QA, Testing, Scrum y mejores prácticas de desarrollo.

Ver todos los artículos

© 2025 Conrado Gómez. All rights reserved.

Conrado Gómez | Software Developer