Entrada y salida de voz (STT / TTS)
Manijas AiHummer voz entrante y saliente de la caja — no se requiere API de voz de pago. Un clip de audio entrante se transcribe (STT), el texto impulsa un turno normal del agente, y la respuesta se reproduce en voz (TTS). Ambos motores son gratis y local y ejecutar como sidecares: faster-whisper para transcripción y edge-tts para síntesis.
Cómo funciona un cambio de voz
Un turno de voz es un turno normal del agente con audio en ambos extremos:
- La puerta de enlace envía el audio entrante a la Sidecar STT (
:8001, faster-whisper) y devuelve texto. - Ese texto impulsa la vuelta habitual de llamada de función: mismo enrutador, orquestador, herramientas y memoria como un mensaje de texto.
- El texto de respuesta se envía al Sidecar de TTS (
:8002, edge-tts) y el El audio hablado se devuelve al llamante.
Esto se expone como un único punto de conexión, POST /v1/voice/turn, de modo que un canal o cliente pueda entregar audio y recibir audio sin orquestar los pasos por sí mismo.
Los puntos finales
| Método | Punto final | Propósito |
|---|---|---|
POST |
/v1/voice/turn |
Audio entrante → turno del agente → audio saliente |
GET |
/v1/voice/config |
Configuración de voz actual (motores, perillas de ajuste) |
POST /v1/voice/turn HTTP/1.1
Host: localhost:8780
Content-Type: application/json
{
"audio": "<base64-encoded clip>",
"format": "wav"
}
[!NOTE] Las características del habla forman parte de núcleo — no están vinculados al complemento SIP. El El canal SIP utiliza estos mismos motores STT/TTS para su
localmotor, pero voz entrada/salida funciona para cualquier cliente que llame/v1/voice/turn.
Los sidecars de voz
| Puerto | Sidecar | Motor | Rol | Conectado con |
|---|---|---|---|---|
| 8001 | STT | susurro más rápido | voz → texto | AIHUMMER_STT_URL |
| 8002 | TTS | edge-tts | texto → voz | AIHUMMER_TTS_URL |
Ambos motores son gratuitos y locales: nada se envía a un proveedor de voz de pago. Como con todos los sidecars, la puerta de enlace los alcanza por URL, para que puedas ejecutarlos junto a la puerta de enlace o apuntar a una instancia compartida.
Cableado
El instalador nativo del anfitrión establece las URLs de STT y TTS por ti. Estas son configuración del catálogo — cámbialos desde la interfaz de administración (Gestión → Configuración) o con aihummer settings set; gateway.env es solo para bootstrap y se ignora para estos:
# Voice in/out (auto-configured by the installer)
aihummer settings set AIHUMMER_STT_URL http://127.0.0.1:8001
aihummer settings set AIHUMMER_TTS_URL http://127.0.0.1:8002
[!TIP] Debido a que cada sidecar es solo una URL, varios gateways pueden compartir un STT/TTS instancia. Centralice los servicios de voz más pesados en lugar de ejecutar una copia por anfitrión.
Ajustando la ruta de audio
Los controles de calidad de voz viven en el Medios · Voz grupo de configuraciones y se pueden configurar desde la interfaz de administración web, sin necesidad de redeploy. Cubren la ruta de audio en tiempo real:
| Perilla | Lo que controla |
|---|---|
| Dúplex | Dúplex completo (escuchar mientras se habla) vs semidúplex |
| AEC | Cancelación de eco acústico |
| Supresión de ruido | Filtra el ruido de fondo antes de la STT |
| AGC | Control automático de ganancia (normalización de nivel) |
| umbral de VAD | Sensibilidad de detección de actividad de voz |
| Interrumpir | Permite que el llamante interrumpa al agente a mitad de la respuesta |
GET /v1/voice/config devuelve la configuración efectiva para que un cliente pueda descubrir los motores activos y estas configuraciones.
Respuestas de voz automáticas
Tres ajustes del grupo «Media · Voice» (interfaz web → Gestión → Ajustes) deciden cuándo se lee en voz alta una respuesta terminada:
| Ajuste | Clave | Valores |
|---|---|---|
| Respuestas de voz automáticas | AIHUMMER_TTS_AUTO_REPLY |
off — nunca; always — siempre; inbound (por defecto) — solo en respuesta a audio entrante; tagged — cuando el agente marca explícitamente la respuesta para voz |
| Límite de caracteres de voz | AIHUMMER_TTS_MAX_CHARS |
0 (por defecto) — leer la respuesta completa; 100–10000 — límite del texto leído |
| Resumir respuestas de voz largas | AIHUMMER_TTS_SUMMARIZE |
activado por defecto: una respuesta larga la acorta el modelo hasta el límite; si el modelo no está disponible, se lee el comienzo del texto |
El texto completo de la respuesta permanece en el historial del diálogo en
cualquier modo. off desactiva solo la lectura automática: una solicitud
explícita de síntesis mediante la herramienta tts sigue funcionando.
Para un diálogo concreto el agente puede, a petición del interlocutor, anular
estos valores con las herramientas voice_preferences (leer los valores
vigentes) y set_voice_preferences (fijar auto, max_chars, summarize;
un objeto vacío restaura los valores por defecto de la instancia). Solo un
participante del diálogo puede escribir. La salida de voz recoge un proveedor
conectado después del arranque de la pasarela y respeta los ajustes del usuario
concreto.
¿A dónde vamos ahora?
- El modelo de transporte detrás de estos servicios: Sidecares.
- Traducción de discursos y comprensión de videos: Traducción de habla y video.
- Voz en una línea telefónica: Telefonía SIP.