Entrée et sortie vocale (STT / TTS)
Poignées AiHummer discours entrant et discours sortant de la boîte — aucune API de synthèse vocale payante requise. Un extrait audio entrant est transcrit (STT), le texte pilote un tour d’agent normal, et la réponse est reproduite à l’oral (TTS). Les deux moteurs sont gratuit et local et exécuter en tant que side-cars: faster-whisper pour la transcription et edge-tts pour la synthèse.
Comment fonctionne un changement de voix
Un tour de voix est un tour normal d’agent avec l’audio activé aux deux extrémités :
- La passerelle envoie l’audio entrant vers le Sidecar STT (
:8001, faster-whisper) et récupère le texte. - Ce texte déclenche le tour habituel d’appel de fonction — même routeur, orchestrateur, outils et mémoire comme un message texte.
- Le texte de réponse est envoyé au Module complémentaire TTS (
:8002, edge-tts) et le L’audio parlé est renvoyé à l’appelant.
Ceci est exposé comme un point de terminaison unique, POST /v1/voice/turn, de sorte qu’un canal ou un client puisse transmettre de l’audio et recevoir de l’audio sans orchestrer lui-même les étapes.
Les points de terminaison
| Méthode | Point de terminaison | But |
|---|---|---|
POST |
/v1/voice/turn |
Audio entrant → tour de l’agent → audio sortant |
GET |
/v1/voice/config |
Configuration vocale actuelle (moteurs, boutons de réglage) |
POST /v1/voice/turn HTTP/1.1
Host: localhost:8780
Content-Type: application/json
{
"audio": "<base64-encoded clip>",
"format": "wav"
}
[!NOTE] Les caractéristiques de la parole font partie de noyau — ils ne sont pas liés au plugin SIP. Le Le canal SIP utilise ces mêmes moteurs STT/TTS pour son
localmoteur, mais voix entrant/sortant fonctionne pour tout client qui appelle/v1/voice/turn.
Les sidecars vocaux
| Port | Side-car | Moteur | Rôle | Câblé avec |
|---|---|---|---|---|
| 8001 | STT | chuchotement-plus-rapide | discours → texte | AIHUMMER_STT_URL |
| 8002 | TTS | edge-tts | texte → parole | AIHUMMER_TTS_URL |
Les deux moteurs sont gratuits et locaux : rien n’est envoyé à un fournisseur de voix payant. Comme pour chaque sidecar, la passerelle les atteint par URL, afin que vous puissiez les exécuter à côté de la passerelle ou les pointer vers une instance partagée.
Câblage
L’installateur hôte-natif configure pour vous les URLs STT et TTS. Elles sont paramètres du catalogue — changez-les depuis l’interface d’administration (Gestion → Paramètres) ou avec aihummer settings set; gateway.env est uniquement pour bootstrap et ignoré pour ceux-ci :
# 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] Parce que chaque sidecar n’est qu’une URL, plusieurs passerelles peuvent partager un STT/TTS instance. Centralisez les services de communication plus lourds au lieu d’exécuter une copie par hôte.
Réglage du chemin audio
Les boutons de qualité de voix vivent dans le Média · Voix groupe de paramètres et sont configurables depuis l’interface d’administration web — aucun redéploiement nécessaire. Ils couvrent le chemin audio en temps réel :
| Bouton | Ce que cela contrôle |
|---|---|
| Duplex | Duplex intégral (écouter tout en parlant) vs semi-duplex |
| AEC | Annulation de l’écho acoustique |
| Suppression du bruit | Filtre le bruit de fond avant la reconnaissance vocale |
| AGC | Commande automatique du gain (normalisation du niveau) |
| Seuil VAD | Sensibilité de la détection d’activité vocale |
| Interruption | Laissez l’appelant interrompre l’agent en plein réponse |
GET /v1/voice/config renvoie la configuration effective afin qu’un client puisse découvrir les moteurs actifs et ces paramètres.
Réponses vocales automatiques
Trois réglages du groupe « Media · Voice » (interface web → Gestion → Paramètres) décident quand une réponse terminée est lue à voix haute :
| Réglage | Clé | Valeurs |
|---|---|---|
| Réponses vocales automatiques | AIHUMMER_TTS_AUTO_REPLY |
off — jamais ; always — toujours ; inbound (par défaut) — seulement en réponse à un audio entrant ; tagged — quand l’agent marque explicitement la réponse pour la voix |
| Limite de caractères à lire | AIHUMMER_TTS_MAX_CHARS |
0 (par défaut) — lire la réponse entière ; 100–10000 — limite du texte lu |
| Résumer les longues réponses vocales | AIHUMMER_TTS_SUMMARIZE |
activé par défaut : une réponse longue est raccourcie par le modèle jusqu’à la limite ; si le modèle est indisponible, le début du texte est lu |
Le texte complet de la réponse reste dans l’historique du dialogue quel que
soit le mode. off ne désactive que la lecture automatique — une demande
explicite de synthèse via l’outil tts fonctionne toujours.
Pour un dialogue donné, l’agent peut, à la demande de l’interlocuteur,
surcharger ces valeurs avec les outils voice_preferences (lire les valeurs en
vigueur) et set_voice_preferences (définir auto, max_chars,
summarize ; un objet vide rétablit les valeurs par défaut de l’instance).
L’écriture n’est possible que pour un participant du dialogue. La sortie
vocale prend en compte un fournisseur connecté après le démarrage de la
passerelle et respecte les réglages de l’utilisateur concerné.
Où aller ensuite
- Le modèle de transport derrière ces services : Side-cars.
- Traduction de la parole et compréhension vidéo : Traduction de discours et vidéo.
- Voix sur une ligne téléphonique : Téléphonie SIP.