n4nAI

Benchmarking LLM latency for live earnings call analysis

A practitioner's analysis of LLM latency for live earnings call analysis, covering TTFT, streaming benchmarks, model tradeoffs, and routing with code.

n4n Team4 min read770 words

Audio narration

Coming soon — every post will get a voice note here.

Live earnings calls move faster than quarterly reports suggest. Effective llm latency earnings call analysis demands a streaming architecture where insights surface within a few seconds of spoken words, not minutes after a transcript dump. This post argues that most published LLM speed numbers are useless for that goal because they ignore time-to-first-token and real audio segmentation.

The latency budget of a live earnings call

A call runs 60–90 minutes. Audio streams at 16kHz, gets transcribed by a real-time ASR engine, and chunks of text hit your inference service every 2–5 seconds. If you wait for the full call, you have no edge. The product requirement is simple: flag a revenue miss or guidance cut while the CFO is still speaking.

Where the seconds go

The end-to-end delay is the sum of:

  • ASR transcription lag (typically 200–800ms behind live audio)
  • Network round trip to your LLM endpoint
  • Queue time under load
  • Time-to-first-token (TTFT)
  • Streaming completion time for the extracted span

For llm latency earnings call analysis, TTFT dominates perceived responsiveness. A user staring at a “analyzing…” spinner cares that the first word appears in <1s, not that the full paragraph finished at 3s vs 4s.

Why generic LLM benchmarks mislead

Open-source leaderboards measure tokens/sec on fixed prompts of 1k–8k context. They report aggregate throughput, not TTFT. They assume a warm model and no concurrency. None of that matches a live call.

Time-to-first-token is the metric that matters

A 70B model on A100s may generate 40 tokens/sec, but its TTFT can be 1.2s because of prefill cost on a 2k-token transcript segment. A 7B model on an L4 might prefill in 250ms and generate 20 tokens/sec. For a 30-token extraction (“Revenue: $3.2B, vs consensus $3.1B, beat”), the 7B model wins on wall-clock despite lower throughput.

Generic benchmarks also use batch sizes of 1 with no network. In production you have 10–50 concurrent streams from multiple calls. Queueing blows up TTFT unless you provision for peak or use a gateway with fallback.

Building a realistic benchmark

You must simulate the actual shape: short prompts, streaming responses, concurrent sessions. Write a harness that replays captured transcript segments and measures TTFT and inter-token latency.

Streaming from transcript segments

Capture a real call transcript. Split into 200–400 word rolling windows. Feed each window to the model with a strict system prompt: extract only the metric and verdict.

from openai import OpenAI
import time, asyncio

client = OpenAI(base_url="https://api.openai.com/v1", api_key="sk-test")

def measure_segment(prompt: str, model: str):
    start = time.perf_counter()
    ttft = None
    tok_count = 0
    stream = client.chat.completions.create(
        model=model,
        messages=[
            {"role": "system", "content": "Extract financial metrics and beat/miss verdict. Reply in JSON."},
            {"role": "user", "content": prompt}
        ],
        stream=True,
    )
    for chunk in stream:
        delta = chunk.choices[0].delta.content
        if delta:
            if ttft is None:
                ttft = time.perf_counter() - start
            tok_count += 1
    total = time.perf_counter() - start
    return {
        "ttft_ms": round(ttft*1000, 1),
        "total_ms": round(total*1000, 1),
        "tokens": tok_count,
        "itl_ms": round((total-ttft)*1000/max(tok_count-1,1), 1)
    }

Run this across models and concurrency levels. Plot TTFT at p50 and p95. That distribution is your real llm latency earnings call analysis profile.

Concurrency matters

A single-stream benchmark hides saturation. Use asyncio to fire 20 segments simultaneously. If TTFT p95 jumps from 400ms to 2s, the model is prefill-bound and unfit for multi-call coverage.

async def run_concurrent(segments, model, n=20):
    loop = asyncio.get_event_loop()
    tasks = [loop.run_in_executor(None, measure_segment, seg, model) for seg in segments[:n]]
    return await asyncio.gather(*tasks)

Model selection tradeoffs

You face a clear trade: a small fine-tuned finance model versus a frontier general model.

Small specialized vs large general

A 7B–14B model instruction-tuned on 10-Ks and earnings transcripts will outperform GPT-4-class models on extraction accuracy at 5x lower TTFT. It loses on nuance: detecting sarcasm in “strong growth” when units declined. For live flags, precision on numbers matters more than prose.

Quantization to INT4 drops TTFT another 20–30% on consumer GPUs with negligible accuracy loss for structured extraction. vLLM or TensorRT-LLM serving stacks cut prefill via paged attention.

When to use a big model

If the product needs a post-call narrative summary, run the small model live and the large model asynchronously on the full transcript. Don’t pay latency tax on the critical path. The live path should be deterministic and fast; the batch path can be slow and smart.

Routing and fallback under load

Production calls cluster: multiple companies report at 9:30 AM. Provider rate limits hit exactly then. Your benchmark must include degradation behavior.

An OpenAI-compatible gateway such as n4n.ai honors client routing directives and forwards provider cache-control hints, letting you benchmark fallback without writing custom retry logic. You send a routing header; it shifts to a secondary provider when the primary is throttled.

{
  "model": "finance-7b",
  "route": {
    "prefer": "groq",
    "fallback": ["together", "default"]
  },
  "cache_control": {"type": "ephemeral", "ttl": 60}
}

Measure TTFT with the primary forced down (iptables drop). If fallback adds <300ms, the architecture is sound. If it adds 2s because of cold model load, you need pre-warmed replicas.

Cache-control hints also matter: earnings call vocabulary repeats. Mark system prompts as cacheable to skip prefill on repeated segments.

Decisive takeaway

Benchmark llm latency earnings call analysis by streaming real transcript windows with concurrency, and optimize for p95 TTFT under degraded conditions, not vendor tokens/sec. Use a small quantized model on the live path, a large model offline, and a gateway that fails over silently. Ship the spinner only if the first token arrives before the next spoken sentence.

Tagsfinance-aiearnings-callslatency-benchmarkreal-time-ai

Written by

n4n Team

The team building n4n — a single OpenAI-compatible API in front of 240+ models, with automatic fallback, load balancing and pay-per-token metering.

More from n4n Team →

All financial services low-latency ai posts →