Skip to content

feat(pipeline): stage Speechify Simba 3.2 (transport verified live)#5

Open
shauntrennery wants to merge 1 commit into
VapiAI:mainfrom
shauntrennery:add-speechify-simba-3-2
Open

feat(pipeline): stage Speechify Simba 3.2 (transport verified live)#5
shauntrennery wants to merge 1 commit into
VapiAI:mainfrom
shauntrennery:add-speechify-simba-3-2

Conversation

@shauntrennery

Copy link
Copy Markdown

Stages Speechify Simba 3.2 support up to the contributor line drawn by docs/ADDING_A_MODEL.md and CONTRIBUTING.md: the transport and pipeline wiring land here; the catalog registry entry is intentionally not included (clips must be hosted and verified before a registry change lands, and that requires the maintainers' licensed source voices). Proposal issue: #4.

What's here

  • src/pipeline/transports/speechify.ts — full ProviderTransport:
    • synthesize: POST /v1/audio/speech, base64 audio_data decoded to mp3.
    • createClone: multipart POST /v1/voices with the consent declaration (SPEECHIFY_CONSENT_FULL_NAME / SPEECHIFY_CONSENT_EMAIL, added to .env.example).
    • ttfbPlanFor: chunked HTTP POST /v1/audio/stream via httpStreamTrial, ready for the 50-trial bench.
  • src/pipeline/models.ts — pre-registration row speechify-simba-3-2 (proposed frozen ids: slug speechify-simba-3-2, arenaApiId: simba-3-2 following the dotless Inworld convention, vendor id simba-3.2).
  • src/pipeline/voices.ts — empty speechify clone slot for humanness:clone / voices.local.json.
  • src/pipeline/RUNBOOK.md — status-table row + provider quirks (strict model validation, 429 pacing, base64 response shape, bench-voice note).

Live verification (2026-07-17)

Every transport surface was exercised against api.speechify.ai with a real key (kept in the gitignored pipeline/.env):

  • Synthesis with simba-3.2 x stock voice harper_32: HTTP 200, valid mp3.
  • Model-field integrity: a bogus model id 400s with the valid list (simba-english, simba-multilingual, simba-3.0, simba-3.2) — no shared-pool risk.
  • Clone round-trip through the transport code: created a clearly-labeled throwaway clone, confirmed its models list, deleted it (204). No state left on the account.
  • TTFB trial: first audio chunk at ~809 ms over /v1/audio/stream (single observation, not a bench; latency stays measured-only per house rules).

Why registration is blocked (and staged anyway)

Cloned voices currently list only simba-english / simba-multilingual; clone x simba-3.2 synthesis returns 400. Simba 3.2 works only with eight stock *_32 shared voices today, so the same-voice methodology cannot run. The RUNBOOK row documents the re-probe (create a clone, check whether models includes simba-3.2); when Speechify lifts the gate, registration is the standard maintainer steps 1-5 with zero extra wiring.

Checklist (CONTRIBUTING.md)

  • bun run check-types clean
  • bun test green (109/109)
  • bun run build succeeds
  • No registry counts touched (no catalog changes in this PR)
  • No em dashes in doc prose; no vendor latency estimates added

🤖 Generated with Claude Code

…egistration blocked on clone-model support)

Stages everything a contributor can per docs/ADDING_A_MODEL.md and
CONTRIBUTING.md; the catalog entry is intentionally NOT added (clips must
be hosted and verified before a registry change lands, maintainers only).

- transports/speechify.ts: synthesis (POST /v1/audio/speech, base64
  audio_data -> mp3), cloning (multipart POST /v1/voices with consent
  declaration), TTFB plan (chunked HTTP /v1/audio/stream). All three
  surfaces verified against the live API on 2026-07-17, including a clone
  create + synth + delete round-trip on a throwaway voice.
- models.ts: pre-registration row speechify-simba-3-2 (proposed frozen
  arenaApiId simba-3-2, vendor id simba-3.2).
- voices.ts: empty speechify clone-slot; .env.example: SPEECHIFY_API_KEY
  plus the clone consent vars.
- RUNBOOK: status-table row + provider quirks (strict model validation,
  429 pacing, base64 response shape).

Blocker for registration: cloned voices list only simba-english /
simba-multilingual today; simba-3.2 is limited to eight stock *_32 shared
voices, so the same-voice arena methodology cannot run until Speechify
enables clones for it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 17, 2026

Copy link
Copy Markdown

@shauntrennery is attempting to deploy a commit to the Vapi Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant