# her-os -- Voice Call Infrastructure Research

**Date:** 2026-02-21
**Status:** Research & Reflection (pre-architecture)
**Scope:** LLM-driven phone calls -- placing calls on the user's behalf to negotiate, book, coordinate, and check in with real humans over PSTN.

---

## Table of Contents

1. [AI Voice Call Platforms (Dedicated)](#1-ai-voice-call-platforms-dedicated)
2. [Traditional Telephony (Programmable Voice)](#2-traditional-telephony-programmable-voice)
3. [Open-Source / Self-Hosted Options](#3-open-source--self-hosted-options)
4. [The Real-Time Architecture](#4-the-real-time-architecture)
5. [TTS (Text-to-Speech) Options](#5-tts-text-to-speech-options)
6. [STT (Speech-to-Text) Options](#6-stt-speech-to-text-options)
7. [Google Duplex-Style Architecture](#7-google-duplex-style-architecture)
8. [Legal Requirements](#8-legal-requirements)
9. [Cost Analysis](#9-cost-analysis)
10. [Recommendation for her-os](#10-recommendation-for-her-os)

---

## 1. AI Voice Call Platforms (Dedicated)

These are turnkey platforms specifically built for AI-to-human phone calls. They bundle telephony, STT, TTS, and LLM orchestration into a single product.

### Bland AI

- **URL:** [bland.ai](https://bland.ai) | [Docs](https://docs.bland.ai/platform/billing)
- **Model:** Proprietary, cloud-only
- **Pricing:** $0.09/min connected (Build plan $299/mo, Scale plan $499/mo, Enterprise custom). Minimum charge of $0.015 for failed/short calls. SMS at $0.02/msg. Scale plan raised to $0.11/min as of late 2025.
- **Features:** Programmable call flows (Pathways), voice cloning, real-time scripting, webhook-based responses, SIP integration, outbound/inbound.
- **Self-hostable:** No
- **TTS/STT:** Bundled (proprietary)
- **LLM:** Supports external LLMs via webhooks
- **Strengths:** Natural-sounding voice, good for high-volume outbound (sales, appointment reminders)
- **Weaknesses:** Not self-hostable, pricing can add up, proprietary lock-in
- **Sources:** [Bland AI Pricing](https://docs.bland.ai/platform/billing), [Bland AI Review 2026](https://www.lindy.ai/blog/bland-ai-review), [Pricing Breakdown](https://blog.dograh.com/decoding-bland-ai-pricing-and-plans-in-2025/)

### Vapi

- **URL:** [vapi.ai](https://vapi.ai) | [Pricing](https://vapi.ai/pricing)
- **Model:** Proprietary platform, cloud-only
- **Pricing:** $0.05/min platform fee + separate STT/TTS/LLM/telephony charges. Real-world total: $0.13-$0.31/min depending on providers chosen. Plans start at $500/mo.
- **Features:** Developer-first API, sub-251ms response time, Flow Studio (visual builder), thousands of configurations. Supports ElevenLabs, Azure, Play.ht for voices. Supports GPT-4, Claude, etc.
- **Self-hostable:** No
- **TTS/STT:** Pluggable (ElevenLabs, Deepgram, Azure, etc.)
- **LLM:** Pluggable (OpenAI, Anthropic, etc.)
- **Strengths:** Maximum flexibility, developer control, large ecosystem
- **Weaknesses:** Complex pricing (4-6 vendor invoices), steep learning curve for non-developers, cloud-only
- **Sources:** [Vapi Pricing](https://vapi.ai/pricing), [Vapi Review 2026](https://www.lindy.ai/blog/vapi-ai), [Pricing Breakdown](https://blog.dograh.com/vapi-pricing-breakdown-2025-plans-hidden-costs-what-to-expect/)

### Retell AI

- **URL:** [retellai.com](https://retellai.com) | [Pricing](https://www.retellai.com/pricing)
- **Model:** Proprietary, cloud-only
- **Pricing:** $0.07+/min base (pay-as-you-go, no platform fee). Real-world total: $0.25-$0.33/min with LLM + STT + TTS + telephony. Enterprise volume discounts to $0.05/min.
- **Features:** 31+ languages, CRM integrations, SOC 2 Type 1 & 2, HIPAA, GDPR compliant. Good onboarding experience.
- **Self-hostable:** No
- **TTS/STT:** Pluggable (ElevenLabs, OpenAI, Deepgram)
- **LLM:** Pluggable (up to $0.06/min for Claude 3.5)
- **Strengths:** Compliance-ready, good language support, reasonable pricing
- **Weaknesses:** Cloud-only, per-minute costs add up
- **Sources:** [Retell Pricing](https://www.retellai.com/pricing), [Platform Comparison](https://www.retellai.com/resources/voice-ai-platform-pricing-comparison-2025)

### Vocode

- **URL:** [vocode.dev](https://docs.vocode.dev/welcome) | [GitHub](https://github.com/vocodedev/vocode-core)
- **Model:** Open-source core + hosted service
- **Pricing:** Open-source is free. Hosted service has separate pricing.
- **Features:** Modular Python toolkit, phone calls via Twilio, Zoom meetings, personal assistants. Low-level control over each component.
- **Self-hostable:** Yes (open-source core)
- **TTS/STT:** Pluggable
- **LLM:** Pluggable
- **Strengths:** Open-source, modular, good for custom voice agent architectures
- **Weaknesses:** Smaller community than LiveKit/Pipecat, less active development in 2025
- **Sources:** [Vocode GitHub](https://github.com/vocodedev/vocode-core), [Vocode Docs](https://docs.vocode.dev/welcome)

### LiveKit (Agents)

- **URL:** [livekit.io](https://livekit.io) | [GitHub](https://github.com/livekit/agents)
- **Model:** Open-source server + Agents framework + optional LiveKit Cloud
- **Pricing:** Open-source is free. LiveKit Cloud has usage-based pricing.
- **Features:** Full WebRTC media server (open-source), Python and Node.js SDKs, 40+ AI provider plugins, built-in SIP/telephony (inbound + outbound), Agent Builder (no-code). 500+ paying cloud customers, 100K+ developers.
- **Self-hostable:** Yes (entire stack including media server)
- **TTS/STT:** Pluggable via plugins (Deepgram, ElevenLabs, AssemblyAI, OpenAI, etc.)
- **LLM:** Pluggable via plugins
- **Telephony:** Native SIP trunk integration for both inbound and outbound calls. Same trunk can serve both directions. Outbound via `CreateSIPParticipant` API.
- **Strengths:** Fully open-source, production-ready, active community (5K+ stars), backed by $45M Series B. Powers OpenAI's voice mode.
- **Weaknesses:** Self-hosting requires infrastructure knowledge, cloud pricing can be complex
- **Sources:** [LiveKit Agents GitHub](https://github.com/livekit/agents), [LiveKit Docs](https://docs.livekit.io/agents/), [Telephony Docs](https://docs.livekit.io/telephony/), [TechCrunch Coverage](https://techcrunch.com/2025/04/10/livekits-tools-help-power-real-time-communications/)

### Bolna

- **URL:** [bolna.ai](https://www.bolna.ai) | [GitHub](https://github.com/bolna-ai/bolna)
- **Model:** Was open-source, now mostly proprietary/closed platform
- **Pricing:** Commercial plans (pricing not publicly listed)
- **Features:** Telephony via Twilio/Plivo/Exotel, multilingual (English, Hindi, Hinglish), STT via Deepgram/Azure, LLMs via OpenAI/DeepSeek/Llama/Cohere/Mistral
- **Self-hostable:** No longer (was open-source, now closed)
- **Strengths:** Good multilingual Indian language support
- **Weaknesses:** Closed-source pivot, less trust for long-term dependency
- **Sources:** [Bolna GitHub](https://github.com/bolna-ai/bolna), [Bolna Pricing](https://blog.dograh.com/bolna-ai-pricing-breakdown-and-how-open-source-saves-70/)

### Pipecat (by Daily.co)

- **URL:** [pipecat.ai](https://www.pipecat.ai/) | [GitHub](https://github.com/pipecat-ai/pipecat)
- **Model:** Fully open-source (BSD license) + optional Pipecat Cloud
- **Pricing:** Open-source is free. Pipecat Cloud has managed hosting pricing.
- **Features:** Python framework for voice and multimodal AI, 40+ AI service plugins, SDKs for Python/JS/React/iOS/Android/C++, vendor-neutral, transport-neutral. Ultra-low latency. 5K+ GitHub stars, 600+ forks.
- **Self-hostable:** Yes (fully)
- **TTS/STT:** Pluggable (all major providers + local models like Piper)
- **LLM:** Pluggable
- **Telephony:** Via Daily + Twilio SIP (documented integration for both inbound and outbound calls)
- **Strengths:** Truly vendor-neutral, active community, NVIDIA partnership (NIM blueprint), excellent documentation
- **Weaknesses:** Telephony requires Daily as transport (unless self-hosting), newer than LiveKit
- **Sources:** [Pipecat GitHub](https://github.com/pipecat-ai/pipecat), [Pipecat Docs](https://docs.pipecat.ai/getting-started/introduction), [NVIDIA NIM Blueprint](https://build.nvidia.com/pipecat/voice-agent-framework-for-conversational-ai), [Telephony Guide](https://docs.pipecat.ai/guides/telephony/overview)

### Summary Comparison

| Platform | Open Source | Self-Hostable | Cost/min (approx) | Telephony | Best For |
|----------|-----------|---------------|-------------------|-----------|----------|
| Bland AI | No | No | $0.09-0.11 | Built-in | High-volume outbound |
| Vapi | No | No | $0.13-0.31 | Built-in | Developer flexibility |
| Retell AI | No | No | $0.25-0.33 | Built-in | Compliance-heavy |
| Vocode | Partial | Yes (core) | Free + providers | Via Twilio | Custom architectures |
| **LiveKit** | **Yes** | **Yes (full)** | **Free + providers** | **Native SIP** | **Self-hosted agents** |
| Bolna | No (was) | No | Commercial | Via Twilio | Indian languages |
| **Pipecat** | **Yes** | **Yes (full)** | **Free + providers** | **Via Daily+SIP** | **NVIDIA GPU stacks** |

---

## 2. Traditional Telephony (Programmable Voice)

These providers connect your application to the actual phone network (PSTN). They do not include AI -- they are the "phone line" that your AI connects through.

### How PSTN Connection Works

```
Your App --> SIP Protocol --> Telephony Provider --> PSTN Gateway --> Phone Network --> Recipient's Phone
```

The telephony provider maintains SIP trunks (virtual phone lines) connected to PSTN gateways. You get a phone number, send SIP INVITE packets, and the provider routes the call to the destination over the public switched telephone network.

### Twilio Programmable Voice

- **URL:** [twilio.com/voice](https://www.twilio.com/en-us/voice)
- **Pricing:** $0.014/min outbound (US local), $0.013-$0.030/min depending on destination. Phone numbers ~$1/mo. Recording storage $0.0005/min.
- **AI Integration:** ConversationRelay (GA 2025) -- orchestrates STT + TTS + LLM via WebSocket. Supports bring-your-own-LLM (OpenAI, Anthropic, DeepSeek via LiteLLM). Integrates ElevenLabs, Deepgram for STT/TTS.
- **Features:** Global coverage, STIR/SHAKEN attestation, call recording, transcription ($0.05/min), SIP domain registration
- **Strengths:** Most mature platform, best documentation, largest ecosystem
- **Weaknesses:** Higher per-minute cost than alternatives, complex pricing
- **Sources:** [Twilio Voice Pricing](https://www.twilio.com/en-us/voice/pricing/us), [ConversationRelay](https://www.twilio.com/en-us/products/conversational-ai/conversationrelay), [ConversationRelay + LiteLLM Tutorial](https://www.twilio.com/en-us/blog/developers/tutorials/product/voice-ai-assistant-conversationrelay-litellm-python)

### Telnyx

- **URL:** [telnyx.com](https://telnyx.com)
- **Pricing:** ~$0.007/min outbound (US), $0.0045/min inbound. SIP trunks: $12/mo first 10 channels, scaling down to $8/mo at 250+ channels. Competitive with Twilio.
- **Features:** Private global network, SIP trunking, elastic SIP, STIR/SHAKEN, T.38 fax, E911. AI Agent integration.
- **Strengths:** Lower pricing than Twilio, good SIP trunk support for self-hosted PBX
- **Sources:** [Telnyx SIP Pricing](https://telnyx.com/pricing/elastic-sip), [Telnyx Products](https://telnyx.com/products/sip-trunks)

### SignalWire

- **URL:** [signalwire.com](https://signalwire.com)
- **Pricing:** SIP: $0.003/min. AI Agent Runtime: $0.16/min (includes STT + LLM + orchestration + standard TTS). Total with SIP: ~$0.163-0.168/min.
- **Features:** Built by the FreeSWITCH team. Full AI telecom voice stack (launched 2025). Dynamic voice interactions with ~500ms average response time.
- **Strengths:** Deep FreeSWITCH heritage, integrated AI stack
- **Weaknesses:** Newer platform, smaller ecosystem
- **Sources:** [SignalWire Voice Pricing](https://signalwire.com/pricing/voice), [SignalWire AI Agent](https://signalwire.com/products/ai-agent), [AI Telecom Stack Launch](https://signalwire.com/blogs/press/ai-telecom-voice-stack)

### Plivo

- **URL:** [plivo.com](https://www.plivo.com)
- **Pricing:** Pay-as-you-go, generally lower than Twilio in most regions. US voice pricing comparable.
- **Features:** Programmable voice, SMS, SIP trunking. Simpler API than Twilio.
- **Strengths:** Cost-effective, straightforward API
- **Sources:** [Plivo Voice Pricing](https://www.plivo.com/voice/pricing/us/), [Plivo Pricing](https://www.plivo.com/pricing/)

### Vonage (formerly Nexmo)

- **URL:** [vonage.com](https://www.vonage.com)
- **Pricing:** Pay-per-use, billed to the second. US voice pricing comparable to Twilio.
- **Features:** Voice API, SIP trunking, video API, messaging
- **Strengths:** Enterprise-grade, good international coverage
- **Sources:** [Vonage Voice API Pricing](https://www.vonage.com/communications-apis/voice/pricing/)

### Telephony Provider Summary

| Provider | Outbound $/min (US) | SIP Trunk | AI Integration | Best For |
|----------|-------------------|-----------|----------------|----------|
| Twilio | $0.014 | Yes | ConversationRelay | Ecosystem, docs |
| **Telnyx** | **$0.007** | **Yes** | AI Agent | **Cost + self-hosted PBX** |
| SignalWire | $0.003 (SIP) | Yes | Full AI stack | FreeSWITCH users |
| Plivo | ~$0.01 | Yes | Basic | Budget |
| Vonage | ~$0.01 | Yes | Basic | Enterprise |

---

## 3. Open-Source / Self-Hosted Options

### The Fully Self-Hosted Stack

A completely self-hosted AI voice call system consists of these layers:

```
Layer 1: SIP Server (Asterisk/FreeSWITCH)
    |
Layer 2: SIP Trunk Provider (Telnyx/voip.ms -- only external dependency)
    |
Layer 3: Audio Bridge (RTP <-> WebSocket/Python)
    |
Layer 4: STT (faster-whisper / Whisper / NVIDIA Riva)
    |
Layer 5: LLM (local Llama/Qwen via llama.cpp or vLLM)
    |
Layer 6: TTS (Kokoro / Piper / Kyutai)
    |
Layer 7: Orchestration (Pipecat / LiveKit Agents / jambonz)
```

**The only external dependency is the SIP trunk provider** (Layer 2), which is necessary to reach the PSTN phone network. Everything else can run locally.

### Asterisk

- **URL:** [asterisk.org](https://www.asterisk.org) | [GitHub](https://github.com/asterisk/asterisk)
- **What:** Open-source PBX/SIP server. The most widely deployed telephony platform in the world.
- **AI Integration:** ExternalMedia channel streams RTP audio to external processes. Asterisk-AI-Voice-Agent (AVA) project provides a full local pipeline: Asterisk -> AudioSocket/RTP -> Python -> Vosk/Sherpa (STT) -> llama.cpp (LLM) -> Piper/Kokoro (TTS) -> back to Asterisk.
- **Self-hosted:** Fully
- **Strengths:** Battle-tested, massive community, handles DTMF/IVR natively, supports any SIP trunk
- **Weaknesses:** Complex configuration, telephony expertise needed
- **Sources:** [Asterisk-AI-Voice-Agent](https://github.com/hkjarral/Asterisk-AI-Voice-Agent), [SIP-to-AI Bridge](https://github.com/aicc2025/sip-to-ai), [Asterisk + OpenAI Tutorial](https://towardsai.net/p/machine-learning/how-to-build-an-ai-voice-agent-with-openai-realtime-api-asterisk-sip-2025-using-python-with-github-repo)

### FreeSWITCH

- **URL:** [signalwire.com/freeswitch](https://signalwire.com/freeswitch)
- **What:** Open-source soft-switch/SIP server. Created by the SignalWire team.
- **AI Integration:** Can bridge RTP audio to external processes. VOSK integration available.
- **Self-hosted:** Fully
- **Strengths:** Better for high-volume call routing than Asterisk, codec support (Opus, PCMU/PCMA)
- **Weaknesses:** Steeper learning curve, SignalWire increasingly pushing commercial offerings
- **Sources:** [FreeSWITCH 2025 Year in Review](https://signalwire.com/blogs/freeswitch/2025-year-in-review), [VOSK Integration](https://alphacephei.com/vosk/integrations)

### jambonz

- **URL:** [jambonz.org](https://www.jambonz.org/) | [Docs](https://docs.jambonz.org/)
- **What:** Open-source voice/AI orchestration platform. Acts as a voice gateway between SIP trunks and AI services.
- **Features:** Connects to any SIP trunk, pluggable STT/TTS/LLM, JSON-based call flow scripting, five-9's reliability target, one-click deployment
- **Self-hosted:** Fully (100% open source, free for self-hosted)
- **Pricing:** Self-hosted is free. Cloud: per-session licensing.
- **Strengths:** Built by telecom veterans, bridges the gap between SIP and AI, no per-minute charges when self-hosted
- **Weaknesses:** Smaller community than LiveKit/Pipecat
- **Sources:** [jambonz About](https://www.jambonz.org/about), [jambonz Docs](https://docs.jambonz.org/), [Installation Options](https://www.jambonz.org/open-source/install/options/)

### LiveKit (Self-Hosted)

- Full WebRTC media server is open-source
- Native SIP support for both inbound and outbound calls
- Agents framework handles the AI pipeline
- Can be deployed on-premises with local models
- **Sources:** [LiveKit Telephony](https://docs.livekit.io/telephony/), [SIP Outbound Trunk](https://docs.livekit.io/telephony/making-calls/outbound-trunk/)

### Pipecat (Self-Hosted)

- Fully open-source Python framework
- NVIDIA NIM blueprint available for GPU-accelerated deployment
- Transport-agnostic (can use Daily, LiveKit, or raw WebSocket)
- Supports local models (Piper TTS plugin documented)
- **Sources:** [Pipecat GitHub](https://github.com/pipecat-ai/pipecat), [Piper Plugin](https://docs.pipecat.ai/server/services/tts/piper)

### Can You Build a Fully Self-Hosted Voice Call AI?

**Yes, with one caveat: you still need a SIP trunk provider for PSTN connectivity.**

The proven self-hosted architecture (from AVA project and community implementations):

```
Asterisk (SIP server, self-hosted)
  --> SIP trunk (Telnyx @ $0.007/min -- only recurring cost)
  --> AudioSocket/RTP bridge (Python, self-hosted)
    --> faster-whisper (STT, local GPU, ~3GB VRAM)
    --> llama.cpp or vLLM (LLM, local GPU)
    --> Kokoro-82M or Piper (TTS, local, <1GB)
```

**Total external cost: ~$0.007/min for the phone line only.** Everything else runs on local hardware.

---

## 4. The Real-Time Architecture

### The Pipeline

An LLM-driven phone call follows this pipeline:

```
Phone Audio In (PSTN/SIP)
  --> Codec decode (G.711 mu-law @ 8kHz or Opus)
  --> VAD (Voice Activity Detection -- detect when human stops speaking)
  --> STT (Speech-to-Text, streaming)
  --> LLM reasoning (generate response text)
  --> TTS (Text-to-Speech, streaming)
  --> Codec encode
  --> Phone Audio Out (PSTN/SIP)
```

### Two Architecture Approaches (2025-2026)

#### 1. Cascaded Pipeline (STT -> LLM -> TTS)

Each component runs independently, connected via streaming:

```
                    ~150ms        ~300-500ms       ~40-100ms
Audio --> STT (streaming) --> LLM (streaming) --> TTS (streaming) --> Audio
              |                    |                    |
         Deepgram Nova-3     Claude/GPT-4o        Cartesia/Kokoro
         faster-whisper      local Llama           Piper
```

- **Total end-to-end latency:** 500-1200ms (with streaming optimization)
- **Pros:** Each component independently upgradeable, can use best-in-class for each stage, works with any LLM
- **Cons:** Cumulative latency from three stages, barge-in alignment is complex

#### 2. Speech-to-Speech (End-to-End)

Single model processes audio directly:

```
                    ~200ms
Audio In --> S2S Model --> Audio Out
                |
         OpenAI gpt-realtime
         Moshi (open-source, Kyutai)
```

- **Total end-to-end latency:** 160-300ms
- **Pros:** Lowest latency, captures non-verbal cues (laughs, tone), natural interruption handling
- **Cons:** Model lock-in, less control over reasoning, harder to inject custom logic

### Latency Targets

| Metric | Target | Source |
|--------|--------|--------|
| Human conversational gap | ~200ms | Cross-cultural linguistics research |
| Neurological stress threshold | 300ms | AssemblyAI research |
| Good UX | <500ms | Industry consensus |
| Acceptable UX | 500-1000ms | Production systems |
| Degraded experience | 1000-1500ms | User testing |
| Conversation breakdown | >1500ms | Consistent across studies |

**Key insight:** Jitter (variation in latency) is more disruptive than absolute latency. Consistent 800ms feels more natural than 400ms-1200ms variation.

**Sources:** [AssemblyAI: 300ms Rule](https://www.assemblyai.com/blog/low-latency-voice-ai), [Hamming AI: Latency Guide](https://hamming.ai/resources/voice-ai-latency-whats-fast-whats-slow-how-to-fix-it), [Twilio: Core Latency](https://www.twilio.com/en-us/blog/developers/best-practices/guide-core-latency-ai-voice-agents), [SignalWire: Latency Truth](https://signalwire.com/blogs/industry/ai-providers-lying-about-latency)

### Latency Budget Breakdown (Cascaded Pipeline)

| Component | Typical Latency | Notes |
|-----------|----------------|-------|
| Audio transport (PSTN -> SIP -> app) | 40-70ms | Network + codec |
| VAD (end-of-speech detection) | 200-500ms | Configurable silence threshold |
| STT (streaming, first final) | 150-350ms | Deepgram Nova-3: ~150ms, faster-whisper: ~200-400ms |
| LLM (time to first token) | 200-500ms | Claude/GPT-4o: ~300ms, local Llama: ~200-600ms |
| TTS (time to first audio) | 40-250ms | Cartesia: 40ms, Kokoro: 97ms, ElevenLabs Flash: 75ms |
| Audio transport (app -> SIP -> PSTN) | 40-70ms | Network + codec |
| **Total** | **670-1740ms** | Streaming optimizations critical |

**With aggressive streaming and overlap:** Target 600-900ms achievable.

### Barge-In (Interruption Handling)

When the user interrupts the AI mid-speech:

1. VAD detects user speech during agent output
2. TTS playback must stop immediately
3. STT must discard the agent's own audio (echo cancellation)
4. LLM context must be updated to reflect what the user actually heard (requires word-level timestamps from TTS)
5. Pipeline restarts from STT

**Critical requirement:** TTS must provide word-level timestamps. Without them, you cannot determine what the user heard before interrupting, causing context misalignment.

**Sources:** [Softcery: Voice Agent Architecture](https://softcery.com/lab/ai-voice-agents-real-time-vs-turn-based-tts-stt-architecture), [Daily: Advice on Building Voice AI](https://www.daily.co/blog/advice-on-building-voice-ai-in-june-2025/), [Latency Optimization](https://rnikhil.com/2025/05/18/how-to-reduce-latency-voice-agents)

### Handling IVR Menus, DTMF, and Hold

When the AI calls a business, it may encounter:

- **IVR menus ("Press 1 for appointments..."):** The agent must detect IVR prompts via STT, reason about the correct option, and send DTMF tones. Both LiveKit and Pipecat support programmatic DTMF generation. Ultravox has documented IVR flow handling.
- **Being put on hold:** The agent must detect hold music/silence and wait patiently without timing out. This requires a "patience mode" that suppresses normal conversational logic.
- **DTMF input:** Standard support in all telephony frameworks. DTMF tones are generated as dual-frequency audio signals.

**Sources:** [Ultravox: IVR Flows](https://docs.ultravox.ai/telephony/ivr-flows), [LiveKit: IVR Navigator Recipe](https://docs.livekit.io/recipes/ivr-navigator/), [Telnyx: DTMF for AI](https://telnyx.com/release-notes/send-dtmf-ai-assistant)

### WebRTC vs SIP vs PSTN

```
PSTN (Public Switched Telephone Network)
  = Physical phone lines, cell towers, landlines
  = Protocol: SS7 signaling, G.711 codec (8kHz, 64kbps)
  = You need a "trunk" (connection point) to reach it

SIP (Session Initiation Protocol)
  = VoIP signaling protocol
  = Manages call setup/teardown over IP networks
  = Codecs: G.711, Opus, G.722
  = SIP trunks connect your server to PSTN gateways

WebRTC (Web Real-Time Communication)
  = Browser/app-native real-time media
  = Uses ICE/STUN/TURN for NAT traversal
  = Codec: Opus (preferred), VP8/VP9 for video
  = Needs a gateway to reach SIP/PSTN
```

**How they connect for AI phone calls:**

```
[User's Phone] <--PSTN--> [Carrier] <--SIP--> [Telnyx/Twilio] <--SIP--> [Your SIP Server] <--WebRTC/WS--> [AI Agent]
```

The SIP trunk provider (Telnyx, Twilio) bridges PSTN and SIP. Your server (LiveKit, Asterisk) bridges SIP and your AI agent's WebRTC/WebSocket transport.

**Sources:** [Bridging SIP and WebRTC](https://medium.com/@reveorai/bridging-sip-twilio-telnyx-voip-and-webrtc-for-voice-ai-complete-code-guide-5ac9bc729486), [WebRTC Tech Stack Guide](https://webrtc.ventures/2026/01/webrtc-tech-stack-guide-architecture-for-scalable-real-time-applications/)

---

## 5. TTS (Text-to-Speech) Options

### Cloud TTS Providers

| Provider | Model | Latency (TTFB) | Price | Quality | Languages | Streaming |
|----------|-------|-----------------|-------|---------|-----------|-----------|
| **Cartesia** | Sonic 3 | **40-90ms** | ~$0.03/min | High (laughter, emotion) | 15+ | WebSocket |
| **ElevenLabs** | Flash v2.5 | 75ms | $0.12-0.30/1K chars | Highest quality | 29+ | WebSocket |
| ElevenLabs | Turbo v2.5 | 250-300ms | Same | Very high | 29+ | WebSocket |
| **OpenAI** | gpt-4o-mini-tts | ~200ms | $0.015/min | High | 12+ | Yes |
| **Deepgram** | Aura-2 | 90-200ms | $0.03/1K chars | Good | 7 | Yes |

### Open-Source / Local TTS Models

| Model | Size | Latency | Quality (ELO) | License | GPU Memory | Notes |
|-------|------|---------|---------------|---------|------------|-------|
| **Kokoro-82M** | 82M params | **97ms TTFB, sub-0.3s** | 1059 (highest OSS on AA) | Apache 2.0 | <1GB | Best speed/quality ratio. $0.70/1M chars cloud. |
| **Piper** | Varies | Sub-second | Good (not top) | MIT | CPU-capable | ONNX, runs on Raspberry Pi. Proven in LiveKit+Piper setups. |
| **Kyutai TTS** | 1.6B | Low (streaming) | High | Open | ~6GB | From Moshi team. Starts audio before full text available. |
| Kyutai Pocket TTS | 100M | Real-time | Moderate | Open | CPU-capable | Tiny model, CPU real-time (Jan 2026). |
| Fish Speech S1 | 4B | Variable (high) | 1339 ELO | Open | ~15GB | Best quality but extremely high latency (102s in some benchmarks). |
| Fish Speech S1-mini | 0.5B | Better | Good | Open | ~2GB | Distilled version, practical for real-time. |
| Coqui XTTS-v2 | Medium | Moderate | Moderate | Open (MPL) | ~4GB | Company shut down Dec 2025. Community-maintained. 17 languages. |

**Recommendation for DGX Spark:** Kokoro-82M is the clear winner for local TTS -- 97ms TTFB, Apache 2.0, <1GB memory, highest-ranked open-source model. Piper as fallback for CPU-only scenarios. Kyutai Pocket TTS (100M) is interesting as a CPU-only alternative.

**Sources:** [Open-Source TTS Comparison (Inferless)](https://www.inferless.com/learn/comparing-different-text-to-speech---tts--models-part-2), [Open-Source TTS 2026 (BentoML)](https://www.bentoml.com/blog/exploring-the-world-of-open-source-text-to-speech-models), [Kokoro-82M HuggingFace](https://huggingface.co/hexgrad/Kokoro-82M), [Piper GitHub](https://github.com/rhasspy/piper), [Kyutai TTS](https://kyutai.org/tts), [Fish Speech GitHub](https://github.com/fishaudio/fish-speech), [LiveKit + Piper](https://medium.com/@mail2chasif/livekit-piper-tts-building-a-low-latency-local-voice-agent-with-real-time-latency-tracking-92a1008416e4)

---

## 6. STT (Speech-to-Text) Options

### Cloud STT Providers

| Provider | Model | Streaming Latency | Price/min | WER | Languages | Notes |
|----------|-------|-------------------|-----------|-----|-----------|-------|
| **Deepgram** | Nova-3 | ~150ms (US) | $0.0077 | 18.3% | 10+ (code-switching) | Industry standard for voice AI. 54% lower streaming WER vs competitors. |
| **Groq** | Whisper Large v3 | Ultra-fast (299x RT) | $0.00185 | 10.3% | 50+ | Fastest cloud Whisper. 10min file in 3.7s. Not streaming (batch). |
| **AssemblyAI** | Universal-Streaming | 300ms (P50) | $0.0025 | Low | 6+ | 2x faster P99 than Deepgram. Intelligent endpointing. |
| OpenAI | Whisper API | Moderate | $0.006 | ~10% | 50+ | Batch only, not optimized for streaming. |

### Open-Source / Local STT Models

| Model | Size | Speed | VRAM | Quality | Streaming | Notes |
|-------|------|-------|------|---------|-----------|-------|
| **faster-whisper (large-v3)** | ~3GB | 4x faster than OG Whisper | 4.7GB (FP16), 3.1GB (INT8) | Best accuracy | Via WhisperLive/WhisperStreaming | Recommended for local. CTranslate2 backend. |
| **Whisper Large v3 Turbo** | 809M params | 6x faster than Large v3 | ~3GB | Within 1-2% of large-v3 | Via adapters | Best speed/accuracy tradeoff. |
| whisper.cpp | Varies | 2-3x faster than PyTorch | CPU-capable | Same as Whisper | Streaming mode available | C++ implementation, no Python dependency. |
| **NVIDIA Riva ASR** | Custom | Ultra-fast (GPU-native) | Varies | SOTA (Nemotron/Parakeet) | Yes (native) | Part of AI Enterprise. **Compatibility issues on DGX Spark aarch64.** |

**DGX Spark Compatibility Note:** NVIDIA Riva ASR has documented compatibility issues on the DGX Spark/GB10's aarch64 architecture. The deployment containers may not work out of the box. faster-whisper is the safer local choice.

**Recommendation for DGX Spark:** faster-whisper with Whisper Large v3 Turbo (INT8 quantization) -- ~3GB VRAM, 6x realtime speed, streaming via WhisperLive. Alternatively, Whisper Large v3 (INT8) at ~3.1GB for best accuracy.

**Sources:** [Deepgram Nova-3](https://deepgram.com/learn/introducing-nova-3-speech-to-text-api), [Groq Whisper](https://groq.com/blog/groq-runs-whisper-large-v3-at-a-164x-speed-factor-according-to-new-artificial-analysis-benchmark), [AssemblyAI Universal-Streaming](https://www.assemblyai.com/universal-streaming), [faster-whisper GitHub](https://github.com/SYSTRAN/faster-whisper), [NVIDIA Riva](https://www.nvidia.com/en-us/ai-data-science/products/riva/), [DGX Spark Compatibility Issues](https://forums.developer.nvidia.com/t/architecture-and-library-compatibility-on-aarch64/350389)

---

## 7. Google Duplex-Style Architecture

### How Google Duplex Worked (2018)

Google Duplex was the first system to make convincing AI-to-human phone calls (booking restaurant reservations, hair appointments). Its architecture:

1. **RNN backbone** (trained on anonymized phone conversation data using TensorFlow Extended)
2. **Input features:** ASR output + raw audio features + conversation history + task parameters (desired service, time constraints)
3. **Output:** Text response -> TTS (Tacotron concatenative + WaveNet synthesis)
4. **Key tricks:**
   - **Fillers:** Added "umm," "hmm" to mimic human thinking pauses
   - **Variable latency:** Simple responses had <100ms delay; complex responses had deliberate longer pauses
   - **Domain constraint:** Only worked in narrow, well-trained domains (restaurant booking, hair salons)
   - **Fallback:** Handed off to human operator when confidence dropped

**Source:** [Google Research Blog: Duplex](https://research.google/blog/google-duplex-an-ai-system-for-accomplishing-real-world-tasks-over-the-phone/)

### 2025-2026 Equivalent Architecture

The modern equivalent far surpasses Duplex thanks to foundation models:

#### Approach 1: OpenAI Realtime API (gpt-realtime)

- **Architecture:** Speech-to-speech model with native audio understanding
- **Transport:** WebSocket or WebRTC for web; SIP for phone calls (via `OpenAIRealtimeSIPModel`)
- **Features:** Captures non-verbal cues (laughs), mid-sentence language switching, adaptive tone, tool calling during conversation
- **Latency:** Competitive with human response times
- **Cost:** Token-based pricing (expensive for long calls)
- **Source:** [OpenAI Voice Agents Guide](https://platform.openai.com/docs/guides/voice-agents), [Realtime API](https://platform.openai.com/docs/guides/realtime), [gpt-realtime Launch](https://openai.com/index/introducing-gpt-realtime/)

#### Approach 2: Moshi (Open-Source Speech-to-Speech)

- **Architecture:** First open-source full-duplex spoken dialogue model. RNN-like streaming with parallel user/agent audio streams.
- **Key innovation:** "Inner Monologue" -- predicts text tokens as prefix to audio tokens, improving linguistic quality while maintaining real-time generation
- **Latency:** 160ms theoretical, 200ms practical
- **Full-duplex:** No concept of speaker turns; handles overlap, interruptions, interjections natively
- **Related releases:** Kyutai TTS 1.6B (July 2025), Kyutai Pocket TTS 100M (Jan 2026), MoshiVis (vision + speech)
- **Source:** [Moshi GitHub](https://github.com/kyutai-labs/moshi), [Moshi Paper](https://arxiv.org/abs/2410.00037), [Kyutai TTS](https://kyutai.org/tts)

#### Approach 3: Cascaded Pipeline (Current Industry Standard)

- **Architecture:** STT -> LLM -> TTS with streaming throughout
- **Most voice AI platforms use this** (Bland, Vapi, Retell, LiveKit, Pipecat)
- **Advantage:** Can use Claude or any reasoning-capable LLM for the intelligence layer
- **Disadvantage:** Higher latency than speech-to-speech approaches

#### Claude Voice Status

- Anthropic launched voice mode on mobile (May 2025), with five voice options
- Streaming responses with barge-in support at SDK level
- Built on Claude 3.5 Sonnet
- **No telephony/SIP API** -- designed for app-based conversation, not phone calls
- Offline voice packs planned for Q1 2026
- **Source:** [Anthropic Voice Mode (TechCrunch)](https://techcrunch.com/2025/05/27/anthropic-launches-a-voice-mode-for-claude/), [Voice Features Explained](https://www.datastudios.org/post/claude-voice-features-explained-current-status-and-upcoming-real-time-updates)

---

## 8. Legal Requirements

### Federal Rules (FTC/FCC)

**AI-generated robocalls are illegal without prior express written consent** under the Telephone Consumer Protection Act (TCPA).

- **FCC Ruling (Feb 2024):** AI-generated voices in robocalls are "artificial" under TCPA, making them subject to all existing robocall regulations
- **FCC Proposed Rules (Aug 2024):** Would require:
  - Definition of "AI-generated call" covering any voice produced by computational technology (including LLMs)
  - Clear upfront disclosure that AI technology is being used
  - Explicit mention of AI in consent language
  - Exemption for AI assisting people with speech/hearing disabilities
- **FTC "Operation AI Comply" (Sep 2024):** Coordinated enforcement sweep against deceptive AI practices
- **Penalties:** $500-$1,500 per violation

**Sources:** [FCC AI Robocall Proposals](https://ftcattorney.com/fcc-proposes-tcpa-disclosure-rules-ai-artificial-intelligence-robocalls-robotexts/), [AI Robocalls Guide 2025](https://www.kixie.com/sales-blog/ai-powered-robocalls-in-2025-a-guide-to-the-new-rules/), [FTC Press Release](https://www.ftc.gov/news-events/news/press-releases/2024/03/ftc-implements-new-protections-businesses-against-telemarketing-fraud-affirms-protections-against-ai)

### Key Distinction: Personal-Use vs Commercial

The robocall regulations primarily target **commercial/telemarketing** calls. The her-os use case (calling on behalf of the user for personal tasks) is different:

- **Not telemarketing:** Booking a doctor appointment is not a sales call
- **Not unsolicited:** You are calling businesses that expect customer calls
- **User-initiated:** The AI is acting as the user's agent, not cold-calling
- **However:** The AI should still disclose it is AI to the person on the other end, both as best practice and because some state laws require it

### State-by-State Requirements

#### Two-Party Consent States (All-Party Consent for Recording)

The following 11 states require **all parties** to consent to recording:

California, Connecticut, Florida, Illinois, Maryland, Massachusetts, Montana, New Hampshire, Pennsylvania, Washington, Vermont

**Practical impact:** If you are in one of these states OR calling someone in one of these states, you must:
1. Disclose the AI nature of the call
2. Get explicit consent before recording
3. In California: mere continuation of the call may not constitute consent

#### California AB 2905 (Effective Jan 1, 2025)

- **$500 fine per undisclosed AI call** -- applies to ALL AI voice interactions regardless of duration or purpose
- Mandatory upfront disclosure of AI involvement
- No exceptions
- California Invasion of Privacy Act (CIPA) also applies to VoIP and AI interactions
- Violations: up to $5,000 per violation without proving actual damage

**Sources:** [California AI Call Disclosure](https://hostie.ai/resources/two-party-consent-cipa-2025-legal-checklist-recording-restaurant-calls-ai-phone-bots-california), [State-by-State Compliance](https://hostie.ai/resources/state-by-state-call-recording-compliance-ai-virtual-hosts-2025), [AI Call Legal Tips](https://commlawgroup.com/2025/using-ai-in-customer-service-and-telemarketing-top-7-legal-tips/)

### GDPR (EU Calls)

If calling EU numbers:

- Voice is classified as **personally identifiable information (PII)** under GDPR
- Must obtain verified, logged consent
- Must disclose AI identity at call start
- Must have data processing basis (legitimate interest or consent)
- Non-compliance: fines up to 20M EUR or 4% of global revenue
- The EU AI Act (2025) adds additional transparency requirements for AI systems

**Source:** [AI Calling Legal Guide](https://botpenguin.com/blogs/is-ai-calling-legal)

### Practical Compliance Strategy for her-os

1. **Always disclose:** "Hi, I'm calling on behalf of [User's Name]. I'm an AI assistant. Is that okay to proceed?"
2. **Never record without consent:** In two-party states, ask explicitly
3. **Log consent:** Store timestamp and consent status for each call
4. **Offer human handoff:** "Would you prefer to speak with [User's Name] directly?"
5. **Don't impersonate:** Never claim to be human

---

## 9. Cost Analysis

### Scenario: 10-Minute Outbound Call to a Business

#### Option A: Fully Managed Platform (Vapi/Retell)

| Component | Cost |
|-----------|------|
| Platform fee | $0.50-$1.00 (Vapi: $0.05/min x 10) |
| STT (Deepgram Nova-3) | $0.077 |
| LLM (Claude 3.5 Sonnet) | ~$0.30-$0.60 |
| TTS (ElevenLabs) | ~$0.36 |
| Telephony (Twilio) | $0.14 |
| **Total** | **$1.38-$2.18** |

#### Option B: Self-Assembled Cloud Pipeline

| Component | Cost |
|-----------|------|
| Telephony (Telnyx SIP) | $0.07 |
| STT (Deepgram Nova-3) | $0.077 |
| LLM (Claude API) | ~$0.30-$0.60 |
| TTS (Cartesia Sonic) | $0.30 |
| Orchestration (LiveKit Cloud or Pipecat Cloud) | ~$0.10-$0.50 |
| **Total** | **$0.85-$1.55** |

#### Option C: Mostly Self-Hosted (DGX Spark)

| Component | Cost | Notes |
|-----------|------|-------|
| Telephony (Telnyx SIP) | $0.07 | Only recurring external cost |
| STT (faster-whisper, local) | $0.00 | Runs on DGX Spark |
| LLM (Claude API) | ~$0.30-$0.60 | Cloud API for quality |
| TTS (Kokoro-82M, local) | $0.00 | Runs on DGX Spark |
| Orchestration (Pipecat/LiveKit, self-hosted) | $0.00 | Self-hosted |
| **Total** | **$0.37-$0.67** |

#### Option D: Fully Self-Hosted (DGX Spark)

| Component | Cost | Notes |
|-----------|------|-------|
| Telephony (Telnyx SIP) | $0.07 | Only external cost |
| STT (faster-whisper, local) | $0.00 | ~3GB VRAM |
| LLM (Qwen3-32B or Llama, local) | $0.00 | ~20-40GB VRAM |
| TTS (Kokoro-82M, local) | $0.00 | <1GB VRAM |
| Orchestration (Pipecat, self-hosted) | $0.00 | Self-hosted |
| Asterisk (SIP server, self-hosted) | $0.00 | Self-hosted |
| **Total** | **$0.07** |

### DGX Spark Memory Budget (Fully Local)

| Component | VRAM (approx) |
|-----------|---------------|
| faster-whisper large-v3 (INT8) | 3.1 GB |
| Kokoro-82M TTS | <1 GB |
| Qwen3-32B (Q4 quantized) | ~20 GB |
| Orchestration overhead | ~1 GB |
| **Total** | **~25 GB of 128 GB** |

Leaves ~103 GB free for the context engine (Qwen3-Embedding-8B, knowledge graph, etc.). Both workloads can coexist on a single DGX Spark.

### Monthly Cost Projections (Personal Use: ~30 calls/month, avg 5 min each)

| Option | Monthly Cost | Quality |
|--------|-------------|---------|
| Managed (Vapi) | $20-$33 | Best (cloud LLM + ElevenLabs) |
| Cloud pipeline | $13-$23 | Very good |
| Hybrid (local STT/TTS, cloud LLM) | $5.50-$10 | Very good (Claude reasoning) |
| Fully local | **$1.05** | Good (local LLM may be less capable) |

**Sources:** [Voice AI Cost Calculator (Softcery)](https://softcery.com/ai-voice-agents-calculator), [Platform Pricing Comparison (Retell)](https://www.retellai.com/resources/voice-ai-platform-pricing-comparison-2025), [Compare Voice AI](https://comparevoiceai.com/)

---

## 10. Recommendation for her-os

### Given Constraints

- **Single user, personal use** (not commercial/telemarketing)
- **Two DGX Sparks** (128GB unified memory each, NVIDIA GB10 Blackwell)
- **Privacy-first** (ADR-004: no third-party cloud storage)
- **Must reach PSTN** (regular phone numbers)
- **Use cases:** Hotel negotiation, doctor appointments, family check-ins, restaurant booking

### Recommended Architecture

```
                    Titan (DGX Spark #1 -- always-on context engine)
                    ===============================================

User triggers       Pipecat (orchestration framework)
call via web UI --> ├── faster-whisper large-v3-turbo (STT, ~3GB)
    |               ├── Kokoro-82M (TTS, <1GB)
    |               ├── Claude API* (LLM reasoning)
    v               └── LiveKit or Asterisk (SIP handling)
                           |
                           v
                    Telnyx SIP Trunk ($0.007/min)
                           |
                           v
                    PSTN --> Recipient's Phone
```

*Claude API is the one cloud dependency for reasoning quality. For fully private calls, substitute a local Qwen3-32B or Llama model.

### Why This Architecture

| Decision | Rationale |
|----------|-----------|
| **Pipecat** for orchestration | Open-source, NVIDIA NIM blueprint, vendor-neutral, supports local models. Piper/Kokoro plugins exist. |
| **faster-whisper** for STT | 4x faster than OG Whisper, 3.1GB INT8, proven streaming, no Riva compatibility issues on aarch64 |
| **Kokoro-82M** for TTS | 97ms TTFB, highest-ranked open-source, Apache 2.0, <1GB, perfect for real-time |
| **Claude API** for LLM | Best reasoning for complex negotiations (hotel rates, appointment juggling). $0.03-0.06/min cost is acceptable for personal use. |
| **Telnyx** for SIP | Cheapest reliable SIP trunk ($0.007/min), good Asterisk/SIP compatibility |
| **Titan** as host | Always-on, dedicated context engine (per existing architecture decision). Voice pipeline uses ~25GB of 128GB. |

### Build Order (MVP Path)

#### Phase 1: Proof of Concept (1-2 weeks)

1. Set up Pipecat on Titan with a simple pipeline
2. Use cloud providers for everything first (Deepgram STT + Cartesia TTS + Claude LLM)
3. Connect via Twilio (easiest to start) for PSTN
4. Make one successful outbound call (e.g., call a test number, have a conversation)
5. Implement basic disclosure: "Hi, I'm an AI assistant calling on behalf of Rajesh."

#### Phase 2: Local STT + TTS (1-2 weeks)

1. Replace Deepgram with faster-whisper (local on Titan)
2. Replace Cartesia with Kokoro-82M (local on Titan)
3. Measure end-to-end latency, tune VAD thresholds
4. Keep Claude API for LLM (quality matters for negotiation)

#### Phase 3: SIP Self-Hosting (1 week)

1. Replace Twilio with Telnyx SIP trunk (cost reduction: $0.014 -> $0.007/min)
2. Optionally deploy Asterisk or use LiveKit's native SIP for tighter control
3. Test inbound calls (family can call the AI to leave messages)

#### Phase 4: Advanced Features (ongoing)

1. DTMF generation for IVR navigation
2. Hold detection (music/silence classifier)
3. Call recording with consent management
4. Context injection from knowledge graph (Graphiti) -- "This is Dr. Smith's office, last visit was January for annual checkup"
5. Post-call summarization and memory storage
6. Emotional awareness (Dimension 6) -- detect frustration, adjust tone

### Open Questions

1. **Moshi vs Cascaded Pipeline:** Should we evaluate Moshi (200ms latency, open-source, full-duplex) as an alternative to the cascaded STT->LLM->TTS pipeline? Tradeoff: latency vs reasoning quality.

2. **Local LLM Fallback:** For privacy-sensitive calls (medical, financial), should we run a local Qwen3-32B instead of Claude API? ~20GB VRAM, still fits alongside STT+TTS.

3. **jambonz vs Asterisk vs LiveKit SIP:** Which SIP layer provides the best DX for a single-user self-hosted setup? jambonz is purpose-built for voice AI orchestration, but Asterisk has the deepest telephony feature set.

4. **Voice Cloning:** Should her-os speak in the user's voice? Kokoro supports voice cloning from short reference audio. Legal and ethical implications?

5. **Concurrent Pipeline on Titan:** Can STT + LLM inference + TTS + context engine all run simultaneously on one DGX Spark without latency spikes? Needs benchmarking.

6. **India-Specific Compliance:** What are the TRAI rules for AI-initiated calls in India? (Relevant if calling Indian numbers.)

---

## Appendix A: Key URLs and References

### Platforms
- [Bland AI](https://bland.ai) | [Vapi](https://vapi.ai) | [Retell AI](https://retellai.com)
- [LiveKit](https://livekit.io) | [LiveKit Agents](https://github.com/livekit/agents) | [LiveKit Telephony Docs](https://docs.livekit.io/telephony/)
- [Pipecat](https://www.pipecat.ai/) | [Pipecat GitHub](https://github.com/pipecat-ai/pipecat) | [Pipecat + NVIDIA NIM](https://build.nvidia.com/pipecat/voice-agent-framework-for-conversational-ai)
- [Vocode](https://docs.vocode.dev/welcome) | [Vocode GitHub](https://github.com/vocodedev/vocode-core)
- [jambonz](https://www.jambonz.org/) | [jambonz Docs](https://docs.jambonz.org/)

### Telephony
- [Twilio Voice](https://www.twilio.com/en-us/voice) | [Twilio ConversationRelay](https://www.twilio.com/en-us/products/conversational-ai/conversationrelay)
- [Telnyx SIP](https://telnyx.com/products/sip-trunks) | [Telnyx Pricing](https://telnyx.com/pricing/elastic-sip)
- [SignalWire](https://signalwire.com) | [SignalWire AI](https://ai.signalwire.com/)

### STT
- [Deepgram Nova-3](https://deepgram.com/learn/introducing-nova-3-speech-to-text-api) | [Deepgram Pricing](https://deepgram.com/pricing)
- [faster-whisper](https://github.com/SYSTRAN/faster-whisper)
- [Groq Whisper](https://groq.com/pricing) | [AssemblyAI](https://www.assemblyai.com/pricing)
- [NVIDIA Riva](https://www.nvidia.com/en-us/ai-data-science/products/riva/)

### TTS
- [Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M) | [Piper](https://github.com/rhasspy/piper)
- [Cartesia Sonic](https://cartesia.ai/) | [ElevenLabs](https://elevenlabs.io/)
- [OpenAI TTS](https://platform.openai.com/docs/pricing) | [Deepgram Aura](https://deepgram.com/product/text-to-speech)
- [Kyutai TTS](https://kyutai.org/tts) | [Fish Speech](https://github.com/fishaudio/fish-speech)
- [Moshi](https://github.com/kyutai-labs/moshi)

### SIP/PBX
- [Asterisk](https://www.asterisk.org) | [Asterisk-AI-Voice-Agent](https://github.com/hkjarral/Asterisk-AI-Voice-Agent)
- [FreeSWITCH](https://signalwire.com/freeswitch) | [SIP-to-AI Bridge](https://github.com/aicc2025/sip-to-ai)

### Legal
- [FCC AI Robocall Rules](https://ftcattorney.com/fcc-proposes-tcpa-disclosure-rules-ai-artificial-intelligence-robocalls-robotexts/)
- [California AB 2905](https://hostie.ai/resources/two-party-consent-cipa-2025-legal-checklist-recording-restaurant-calls-ai-phone-bots-california)
- [State-by-State Compliance](https://hostie.ai/resources/state-by-state-call-recording-compliance-ai-virtual-hosts-2025)
- [AI Calling Legal Guide (Global)](https://botpenguin.com/blogs/is-ai-calling-legal)
- [TCPA Compliance](https://www.myaifrontdesk.com/blogs/ai-calls-and-tcpa-compliance-key-rules)

### Architecture
- [Voice AI Stack 2025 (AssemblyAI)](https://www.assemblyai.com/blog/the-voice-ai-stack-for-building-agents)
- [Real-Time vs Turn-Based Architecture (Softcery)](https://softcery.com/lab/ai-voice-agents-real-time-vs-turn-based-tts-stt-architecture)
- [300ms Latency Rule (AssemblyAI)](https://www.assemblyai.com/blog/low-latency-voice-ai)
- [Fully Local Voice Assistant Guide](https://towardsai.net/p/machine-learning/building-a-fully-local-llm-voice-assistant-a-practical-architecture-guide)
- [Adding Voice to Self-Hosted AI (Brainsteam)](https://brainsteam.co.uk/2025/4/6/adding-voice-to-selfhosted-ai/)
- [Google Duplex Architecture](https://research.google/blog/google-duplex-an-ai-system-for-accomplishing-real-world-tasks-over-the-phone/)
- [OpenAI Voice Agents Guide](https://platform.openai.com/docs/guides/voice-agents)
