Nigerian Telephony for Voice AI: +234 Numbers, Latency, and What Actually Works
David Shemang · 23 June 2026
Why Nigerian telephony is different
When you build a voice AI product in the US, you inherit decades of reliable PSTN infrastructure, millisecond-latency routes between AWS regions and Twilio's PoPs, and a regulatory environment your lawyers already understand.
Nigeria is different in almost every dimension.
This post covers what we've learned building Magana — specifically for the Nigerian market. It's not theoretical. These are the actual problems we hit, and how we solved them.
The latency problem
Human conversation has a natural rhythm. Response latency above 700ms starts to feel like a satellite phone call. Above 1,200ms, it feels broken.
Our target for Magana is sub-400ms response start time — measured from when the caller stops talking to when the agent starts speaking.
That 400ms budget breaks down roughly like this: - STT (speech-to-text): ~120ms (Deepgram Nova-3, first partial) - LLM first token: ~150ms (Claude Haiku 4.5 with prompt caching) - TTS first byte: ~80ms (Deepgram Aura-2 persistent session) - Network + media transport: ~50ms remaining budget
The enemy of this budget is distance. When a caller in Lagos speaks, the audio travels to the telephony provider, then to our servers, then to Deepgram (US), then to Anthropic (US), then to Deepgram TTS (US), then back. Each transatlantic hop adds roughly 100–150ms RTT.
What we did about it:
We can't move the providers to Nigeria yet. What we can do is minimise the number of hops and pre-warm everything we can:
1. Persistent TTS sessions. Deepgram Aura-2 supports a persistent WebSocket session per call. Instead of establishing a new connection for each sentence (which adds 300ms of TLS handshake time), we keep one connection open for the call's duration. First sentence of each response is dramatically faster.
2. Prompt caching. The agent's system prompt is thousands of tokens. Anthropic's cache means subsequent turns in a conversation only process the new user message — not the full prompt. This cuts LLM time by ~40% after the first turn.
3. Pipeline parallelism. We start the LLM response while the STT is still processing. And we start TTS while the LLM is still streaming. No waiting for complete steps before starting the next one.
+234 number provisioning
Getting Nigerian phone numbers for voice applications is harder than it should be.
The main options we evaluated:
Twilio: Available, but Twilio's Nigerian number pricing is significantly higher than their US pricing. More importantly, numbers provisioned through Twilio appear to callers as international numbers — which affects answer rates. Nigerian consumers are (correctly) suspicious of calls from +1 area codes.
Termii: Nigeria's leading CPaaS provider. Their SMS capability is excellent. However, their programmable bidirectional voice streaming API (the equivalent of Twilio Media Streams) is limited. You can't send and receive real-time audio streams over WebSocket in the way you need for a voice AI pipeline.
Africa's Talking: A strong candidate for bidirectional media. Their voice API supports real-time audio streaming for Kenyan, Ghanaian, and Nigerian numbers. We're running latency and reliability tests on this path.
The current state: Magana runs on Twilio for voice reliability, with Termii integration planned for +234 local number presentation. The telephony provider layer is abstracted in our codebase so we can swap backends without changing the voice pipeline.
Audio quality considerations
Nigerian PSTN audio is G.711 μ-law at 8kHz — the same codec the telephone network has used since the 1960s. This is fine for human speech but creates challenges for AI pipelines:
1. Deepgram handles it well. Nova-3 is trained on telephone-quality audio and performs well on 8kHz μ-law. We don't transcode unnecessarily.
2. Nigerian accents are underrepresented in training data. Deepgram performs better on British-accented Nigerian English than on heavier regional accents. We compensate partly with STT confidence thresholds and partly by using the agent's knowledge of context to disambiguate unclear words.
3. Background noise is real. Generator noise, market sounds, traffic. We use Deepgram's VAD (voice activity detection) endpointing rather than silence-based endpointing — the former is far more robust in noisy environments.
NCC compliance basics
The Nigerian Communications Commission has specific requirements for automated voice calls:
- Consent: You need prior consent before making outbound marketing calls. Opt-out mechanisms must work. - Identification: The AI agent must identify itself as automated if asked directly. Magana agents do this by default. - Recording disclosure: For recorded calls, disclosure is required at call start. We include this in the agent's greeting. - Do-not-call list: For enterprise customers, Magana can integrate with your DNC list to suppress numbers before dialling.
We are not lawyers and this is not legal advice. Enterprise customers should review NCC guidelines with their compliance team.
What we'd do differently
If we were starting Magana's telephony layer from scratch today, we would:
1. Start with LiveKit SIP from day one — LiveKit's SIP trunk support gives you a clean abstraction over telephony while keeping the media pipeline in WebRTC quality (higher than PSTN).
2. Build the Nigerian number relationship earlier — The process of registering for local Nigerian numbers with appropriate regulatory documentation takes 3–8 weeks. Start it before you need it.
3. Instrument latency from the start — We added per-call, per-turn latency measurement later in the project. Having it from the beginning would have caught issues faster.
The road ahead
We're running a structured bake-off comparing Twilio direct, LiveKit SIP, and a local Nigerian SIP route — using our latency ledger to measure response-start time on each path under real call conditions. The winner becomes the default Nigerian telephony path for all Magana customers.
We'll publish the results when we have clean data. Subscribe to the blog to get notified.
*Building on Magana? [Check the docs →](/docs) or [book a call with us →](/book-demo)*