{
  "formatVersion": 1,
  "scope": "Curated public research extract; not the full raw run.",
  "canonical": "https://embiro.ai/research/speech-pilot-readiness",
  "fieldNote": 8,
  "slug": "speech-pilot-readiness",
  "title": "From a voice sample to a usable API.",
  "description": "Local Kokoro integration checks covered queued jobs, idempotency and accounting before cloud speech rollout.",
  "category": "Serving",
  "art": "speech-wave",
  "thumbnail": {
    "src": "/research/thumbnails/speech-pilot-readiness.webp",
    "alt": "A microphone passing through a verification gate beside a shield and receipt."
  },
  "date": "2026-10-11",
  "published": "2026-10-12",
  "updated": "2026-10-12",
  "author": "Embiro Labs Research",
  "status": "Exploratory benchmark",
  "headline": "Inference is only one part of the service.",
  "metric": "2",
  "metricLabel": "local execution environments verified",
  "method": [
    "Local macOS CPU and a Linux arm64 CPU container, pinned Kokoro revision f3ff3571791e39611d31c381e3a41a3af07b4987, with a real Node gateway and PostgreSQL 17. These were development tests, not South African cloud latency measurements.",
    "American English af_heart and British English bf_emma each generated a 55-character prompt. A separate 35-character durable job exercised the worker, idempotent replay, character-unit accounting and independent CPU/GPU admission pools."
  ],
  "sections": [
    {
      "title": "What was actually verified",
      "paragraphs": [
        "The voice calls and durable job completed on both environments. Idempotent replay did not add another execution. Accounting and admission reservations were empty at the end. The wider local suite recorded 59 passing gateway tests and six passing PostgreSQL integration tests.",
        "These checks turn a model demo into something closer to an API: a request must survive its queue, carry the correct units and release its reservation. A valid WAV by itself verifies none of that."
      ]
    },
    {
      "title": "Keep the deployment boundary clear",
      "paragraphs": [
        "The local Linux container was arm64. This run did not verify an x86_64 production runtime or execute a cloud deployment. The later Cape Town media experiments and Azure CPU comparison provide separate cloud evidence.",
        "The few request times below are smoke-test observations with uncontrolled startup/cache effects. They cannot rank operating systems, voices or architectures."
      ]
    }
  ],
  "limitations": [
    "Single small prompt per voice/environment, no isolated speed comparison or voice-quality study. Local development and container timings do not predict public API latency.",
    "Synthetic character rates verified billing arithmetic, not a real customer charge. Passing tests do not establish production readiness on a different architecture."
  ],
  "tables": [
    {
      "title": "Recorded voice request times",
      "columns": [
        "Environment",
        "Voice",
        "Request (s)",
        "Audio (s)"
      ],
      "rows": [
        [
          "macOS CPU",
          "af_heart",
          "4.645",
          "4.3"
        ],
        [
          "macOS CPU",
          "bf_emma",
          "1.581",
          "4.4"
        ],
        [
          "Linux arm64 container",
          "af_heart",
          "3.657",
          "4.3"
        ],
        [
          "Linux arm64 container",
          "bf_emma",
          "2.311",
          "4.4"
        ]
      ],
      "note": "One request per row. Startup/cache differences were not controlled; this is functional validation rather than a speed ranking."
    }
  ],
  "references": [
    {
      "label": "Kokoro · model card",
      "url": "https://huggingface.co/hexgrad/Kokoro-82M"
    }
  ],
  "audio": [],
  "evidence": [
    {
      "file": "verification.json",
      "sha256": "37eb5dfa25258f002e57d4bf2ba72084bed916c68529e05e01859470c206f875"
    },
    {
      "file": "tts-verification.json",
      "sha256": "e2e792bfbfa4fe549cefba313293908f0222404dffe190442f8b4835cd0aaee7"
    },
    {
      "file": "linux-container/tts-verification.json",
      "sha256": "128f77b09fc5c9066e5cc6453bfa5adfd2e556e37614095a01827e56e7c42c46"
    }
  ]
}
