All research
Field Note 16ServingExperiment · 13 Oct 2026

Can a CPU keep up with a conversation?

Kokoro speech on a larger Azure CPU in South Africa: first-audio latency, concurrent callers, long text and a tested AWS fallback.

Two sculptural compute towers linked by a copper speech waveform and a shielded fallback route.
0.45smedian first audio · Nairobi acknowledgement
Exploratory benchmark

First-party engineering evidence. Results apply to the tested configuration and sample; they are not an SLA or a general model ranking.

THE TAKEAWAY

A fast first sentence matters more than a crowded server.

The first sentence is the product

A short acknowledgement reached first audio in a 0.19-second median inside Azure and 0.45 seconds from the Nairobi client. That is fast enough for a conversational opening while the language model prepares the next complete sentence.

Long answers should still be broken at sentence boundaries. The 1,479-character test produced 88.85 seconds of audio and completed synthesis in 6.63 seconds on D32, but first audio took 2.11 seconds. Streaming improves perceived latency; it does not make a large first synthesis unit disappear.

More workers changed the service

Two workers were the best fit for one or two active conversations. Four workers handled four callers more evenly but raised individual latency. Eight workers completed the eight-caller sample, yet p95 first audio reached 4.73 seconds. That is useful batch throughput, not a responsive voice agent.

The production design therefore admits two active speech generations on one D32 and sends overflow to another warm target or the existing AWS service. A bigger queue is not a substitute for a quick response.

Failover worked, detection was the slow part

An injected Azure 503 fell back to AWS and returned a valid WAV with one billing receipt in 4.58 seconds. An unreachable port took 14.81 seconds because the experimental client waited ten seconds before declaring the primary unavailable. Production health and connection deadlines need to fail closed in roughly one to two seconds.

The direct Nairobi-to-VM path also produced intermittent transport timeouts that were absent from Azure-local tests. No production traffic moved in this experiment. The next step is a TLS-terminated canary on the real routing path, verified from multiple East African probes before traffic increases.

Why choose D32

D32 reduced streamed first-audio latency by roughly 27 to 32 percent over D16 across the three measured input sizes. Its recorded hourly rate was twice as high, so the reason to use it is responsiveness and two-call capacity rather than cheaper synthesis.

A conservative 1,500-character limit is supported for streamed narration or asynchronous jobs. For live agents, short complete sentences remain the better interface.

THE MEASUREMENTS

Results, in context.

Streamed English latency
Scroll sideways to compare all columns →
InputD16 first audioD32 first audioD32 complete
135 characters1.07 s0.72 s1.05 s
570 characters3.00 s2.18 s2.71 s
1,479 characters2.90 s2.11 s6.63 s

Medians from the warm direct synthesis harness. The long output was 88.85 seconds of audio.

Conversation-shaped first audio on D32
Scroll sideways to compare all columns →
TurnOne caller medianTwo callers p95Four callers p95
41-character acknowledgement0.19 s1.22 s1.79 s
79-character brief answer0.84 s0.96 s2.66 s
135-character short answer1.19 s2.63 s4.23 s

Azure-local test, five calls per turn size and caller at each concurrency level. The Nairobi single-caller acknowledgement median was 0.45 seconds.

Worker layouts under load
Scroll sideways to compare all columns →
LayoutTest loadCompletedp95 first audio
2 workers × 16 threads2 callers6 / 62.22 s
4 workers × 8 threads4 callers12 / 122.33 s
8 workers × 4 threads8 callers24 / 244.73 s

The separate load harness used a 135-character prompt. Higher completion capacity came with slower individual responses.

Failover path
Scroll sideways to compare all columns →
ScenarioSelected serviceResultTotal
Healthy primaryAzureValid WAV1.17 s
Injected HTTP 503AWSValid WAV · one receipt4.58 s
Unreachable port · 10 s timeoutAWSValid WAV · one receipt14.81 s

The ten-second connection timeout dominated recovery time and is intentionally not the production recommendation.

Recorded Azure list-price view
Scroll sideways to compare all columns →
VMUSD / hour730-hour month8 hours/day × 30
Standard D16s v5$1.016$741.68$243.84
Standard D32s v5$2.032$1,483.36$487.68

Dated Linux pay-as-you-go inputs from the Azure Retail Prices API. Storage, network and tax are excluded.

TEST SETUP

How we ran it.

  1. Azure South Africa North: Standard D16s v5 and D32s v5 tested sequentially with Kokoro 0.9.4, the same Kokoro 82M checkpoint, af_heart voice, PyTorch 2.8 CPU and synthetic English prompts. The selected D32 layout used two workers with sixteen threads each.
  2. Latency covered 135, 570 and 1,479 character inputs. Conversation-shaped tests used 41, 79 and 135 character turns with one, two and four concurrent callers. Separate load tests compared one, two, four and eight workers. Warm calls excluded model installation and VM provisioning.
  3. Failover used a temporary Embiro API key restricted to Kokoro and a small spending cap. Tests covered a healthy Azure response, an injected HTTP 503 and an unreachable port, then checked the returned WAV and billing receipts. The key and policy were revoked after the run.
WHAT THIS DOES NOT PROVE

The limits matter.

  • This was an isolated canary with synthetic English prompts, not a production SLA or a population listening study. Voice naturalness was not rescored in this run.
  • The direct test service used an operator-restricted endpoint rather than the production TLS and load-balancer path. Some Nairobi calls timed out; public-path reliability was therefore not established.
  • Samples were small and warm. Provisioning, cold starts, storage, network, idle time and taxes are excluded from the timing and cost view.
  • Recorded cloud list prices are dated inputs. Credits reduce pilot cash spend but do not change the opportunity cost of the compute.
OPEN FINDINGS

Evidence & sources.

The public extract contains the methods, selected results and caveats in this note. It is a curated summary, not the full raw run. Fingerprints identify the retained source artifacts; gated audio and private operational records are not included.

Download results extract
Source artifact fingerprints · SHA-256
README.md5c6810593ed80feffe180b58d14ee57047644a4486cf6b782b51e1a5ff9ee4ba
REPORT.md42191a65899d5a998b790bcc3dc8a9a5aae86b318ec6d247ba93a383ee3a58a8
results/summary.jsonfdcf4b120594209b3b681ccc8f72c311208dced05d0ab610865bc6cdef3b8052

Suggested citation: Embiro Labs Research. “Can a CPU keep up with a conversation?” Published 13 Oct 2026. embiro.ai/research/kokoro-conversation-canary

Report a correction