Vorbe în și din afară (STT / TTS)
Mânere AiHummer discurs în și discurs din cutie — nu este necesar un API de vorbire plătit. Un fragment audio primit este transcris (STT), textul conduce o rundă normală a agentului, iar răspunsul este redat vorbit (TTS). Ambele motoare sunt gratuit și local și rulează ca motoscaune: faster-whisper pentru transcriere și edge-tts pentru sinteză.
Cum funcționează un turn de voce
O schimbare de voce este o schimbare normală a agentului cu audio activ la ambele capete:
- Poarta trimite audio-ul de intrare către Sidecar STT (
:8001, faster-whisper) și primește înapoi text. - Acest text declanșează runda obișnuită de apelare a funcțiilor — același router, același orchestrator, unelte și memorie ca un mesaj text.
- Textul de răspuns este trimis către TTS partener (
:8002, edge-tts) și audio-ul vorbit este returnat apelantului.
Acesta este expus ca un singur punct final, POST /v1/voice/turn, astfel încât un canal sau client să poată transfera audio și să primească audio fără a orchestrat pașii singur.
Punctele finale
| Metodă | Punct final | Scop |
|---|---|---|
POST |
/v1/voice/turn |
Intrare audio → tură agent → ieșire audio |
GET |
/v1/voice/config |
Configurația curentă a vocii (motoare, butoane de reglare) |
POST /v1/voice/turn HTTP/1.1
Host: localhost:8780
Content-Type: application/json
{
"audio": "<base64-encoded clip>",
"format": "wav"
}
[!NOTE] Caracteristicile vorbirii fac parte din miez — ele nu sunt legate de pluginul SIP. Canalul SIP folosește aceste aceleași motoare STT/TTS pentru acesta
localmotor, dar voce în/înafara funcționează pentru orice client care apelează/v1/voice/turn.
Sidecarurile vocale
| Port | Atelaj lateral | Motor | Rol | Conectat cu cablu |
|---|---|---|---|---|
| 8001 | STT | șoaptă-mai-repede | discurs → text | AIHUMMER_STT_URL |
| 8002 | TTS | edge-tts | text → voce | AIHUMMER_TTS_URL |
Ambele motoare sunt gratuite și locale: nimic nu este trimis unui furnizor de vorbire plătit. Ca în cazul fiecărui sidecar, gateway-ul ajunge la ele prin URL, astfel încât să le puteți rula lângă gateway sau să indicați către o instanță partajată.
Încărcare cabluri
Instalatorul nativ al gazdei setează pentru tine URL-urile STT și TTS. Ele sunt setările catalogului — schimbă-le din interfața de administrare (Management → Setări) sau cu aihummer settings set; gateway.env este doar bootstrap și este ignorat pentru acestea:
# 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] Pentru că fiecare sidecar este doar un URL, mai multe gateway-uri pot împărți un singur STT/TTS instanță. Centralizați serviciile de vorbire mai grele în loc să rulați o copie pentru fiecare gazdă.
Ajustarea căii audio
Butonii pentru calitatea vocii se află în “Media · Voce” grup de setări și sunt configurabile din interfața web de administrare — nu este necesară o redeployare. Acestea acoperă traseul audio în timp real:
| Buton | Ce controlează |
|---|---|
| Dublu | Full-duplex (ascultă în timp ce vorbești) vs half-duplex |
| AEC | Anularea ecoului acustic |
| Suprimarea zgomotului | Filtrează zgomotul de fundal înainte de STT |
| AGC | Control automat al câștigului (normalizarea nivelului) |
| Prag VAD | Sensibilitatea detectării activității vocale |
| A întrerupe brusc | Permiteți apelantului să întrerupă agentul în timpul răspunsului |
GET /v1/voice/config returnează configurația efectivă astfel încât un client să poată descoperi motoarele active și aceste setări.
Răspunsuri vocale automate
Când este rostit un răspuns gata decid trei setări din grupul „Media · Voice” (interfața web → Administrare → Setări):
| Setare | Cheie | Valori |
|---|---|---|
| Răspunsuri vocale automate | AIHUMMER_TTS_AUTO_REPLY |
off — niciodată; always — întotdeauna; inbound (implicit) — doar ca răspuns la audio primit; tagged — la marcarea vocală explicită a agentului |
| Limită de caractere pentru voce | AIHUMMER_TTS_MAX_CHARS |
0 (implicit) — rostește răspunsul complet; 100–10000 — limita textului rostit |
| Rezumarea răspunsurilor vocale lungi | AIHUMMER_TTS_SUMMARIZE |
activată implicit: un răspuns lung este scurtat de model până la limită; dacă modelul nu este disponibil, se rostește începutul textului |
Textul complet al răspunsului rămâne în istoricul dialogului în orice mod.
off dezactivează doar rostirea automată — o cerere explicită de sinteză prin
instrumentul tts funcționează în continuare.
Pentru un dialog anume, agentul poate suprascrie aceste valori la cererea
interlocutorului cu instrumentele voice_preferences (citește valorile în
vigoare) și set_voice_preferences (setează auto, max_chars, summarize;
un obiect gol restaurează valorile implicite ale instanței). Scrierea este
disponibilă doar unui participant la dialog. Ieșirea vocală preia un furnizor
conectat după pornirea gateway-ului și ține cont de setările utilizatorului
respectiv.
Unde următor?
- Modelul de transport din spatele acestor servicii: Atelaje laterale.
- Traducerea vorbirii și înțelegerea videoclipurilor: Traducere vorbită și video.
- Vocile pe o linie telefonică: Telefonie SIP.