tyvra_flow Test UI

Loading config…

🚗 AutoVYN Data

The mock CRM the bot reads at call start (greet by name + car, service due, lead). Edit a phone number here so it matches the number your campaign will dial, then place the call. Changes are live immediately (in-memory — reset when mock_autovyn restarts).

Customers

IDFirstLastPhone Vehicle modelReg. noCampaign reason
+ Add customer

Leads

IDNamePhoneModel interest Status
+ Add lead

📞 Make a call

Initiates an outbound SIP call via the aidialer + dialer_adapter stack. Brain handles STT/LLM/TTS. Audio plays on the customer's phone, not in your browser. Watch the dialer_adapter logs for dialer_start_call_sent / call_started / call_connected.

Number format: this dialer instance (sip-client-212.ngrok.app) wants the international 00<cc><number> form (e.g. 00918527545450 for an Indian number). Other formats (E.164 +91…, raw 91…) get rejected with not_found or failed. Even with the correct format, the dev trunk currently terminates with NormalClearing — the SIP call attempt reaches the trunk but the trunk doesn't ring the destination (likely needs real outbound credits / route on the dialer team's side).

idle

    
Live transcript (STT → bot TTS)
Dial a call — each turn shows what STT heard and what the bot (TTS) said, live.

TyvraDuplex (v2) — validation harness

Record one utterance with your mic. We send the audio to the new UDP TyvraDuplex server (Architecture v2 §3), it transcribes via Chirp, runs the LLM, synthesizes the reply, streams audio back as SERVER_AUDIO frames. The result plays here. This is NOT the full v2 client (that lives over WebTransport) — it's a test harness so you can validate the protocol stack with your own voice before the browser-side client lands.

idle

HTTP harness = record-then-upload, server-side runs the same CLI client.
Live (WS) = the real browser TyvraDuplex client: this page encodes 40-byte frames in JavaScript, streams CLIENT_AUDIO over WebSocket → server bridges to UDP — full-duplex, hypotheses + bot audio arrive frame-by-frame. WebTransport upgrade is transport-only (same wire format).

⚙ Bot Settings

Change how the bot listens, thinks and speaks for a tenant. Plain switches — no code. Changes go live within ~1 minute, no restart. Hover the ⓘ for what each does.

Pick a tenant…

Coach Assessments

Sampled post-call reviews from Qwen 2.5 across 7 personas (compliance, sales, empathy, cultural, language, resolution, efficiency). The realtime call path is unaffected — Coach reads tyvra:events:call_completed off Redis Streams and writes to coach_assessments. Use Force assess to bypass the sampler for supervisor review of a specific call.

Pick a tenant and click Reload.

Detail

Click a row in the list.

Force assess

Synchronously runs Qwen on the named call regardless of sample rate. Blocks until the model finishes (~5–30 s).

Tenants

Tenant defaults drive every call that does not explicitly override language, dialect, domain, or voice. Coach + feature flags here are hot-editable; the brain re-reads on next call (Redis cache TTL 60 s).

Loading…

Edit / create

Defaults

Compliance / residency

Coach

Feature flags (JSON, merged with existing on save)

Domains

Per-tenant LLM system prompts + escalation/resolution keywords + RAG hookup. Hot-editable; brain picks up changes within 60 s (Redis cache). Every save creates a versioned snapshot in domain_history.

Loading…

Edit / create

Voice Samples

XTTS-v2 zero-shot voice clones from these reference WAVs. Drop or record a 5–15 s conversational clip per language/dialect bucket; after upload, restart the host TTS service (the command appears below every save) and the bot speaks with that voice.

Existing samples

Loading…

Add a sample

Option A — upload an existing WAV

Option B — record a sample directly

idle

Test a voice

Synthesise sample text with one of the saved voices. After restarting the TTS host service this will use the newest embeddings.


IndicF5 Reference Voices

IndicF5 clones a voice from a reference WAV — one 10–30 s clip per persona. Each dialect can map to a different reference voice. Bootstrap instantly from GCP Neural2, upload your own recording, or record directly here. Changes take effect on the next call (no restart needed).

Existing reference voices

Loading…

Add a reference voice

Option A — Bootstrap from GCP Neural2 (instant, no recording needed)

Picks a Neural2 voice for the selected dialect/gender, synthesises a reference clip from GCP and registers it. Bot calls after this will use that voice character.

Option B — Upload a WAV file

Option C — Record directly

idle

Conversation

Click Start, then speak naturally. The system detects when you stop talking (~0.8 s of silence) and runs the full pipeline, then plays the response. Listening auto-resumes after the bot finishes speaking. Click Stop to end.

idle

Live mic on EC2: run on your laptop bash tools/deploy/local_mic_tunnel.sh <EC2-IP> then open http://127.0.0.1:7860 (not the EC2 IP).

Speech-to-Text

Record with mic, or upload a WAV (works on http://EC2-IP without mic permission).

idle
No transcript yet.

LLM

Sends prompt directly to the LLM server using the tenant's configured AI model from Bot Settings.


  

TTS

Language hi needs Devanagari text (e.g. आप कैसे हैं). English text → use en.

Full Pipeline

Record or upload WAV → STT → LLM → TTS. ~45–90 s end-to-end on the dev stack.

idle