Add Fish Audio s2.1-pro transport (WS, latency=balanced)#3
Open
cshape wants to merge 1 commit into
Open
Conversation
Plumbing only. Maintainer still has to clone the four source voices on Fish, generate + upload the 80 clips, and add the catalog entry; this commit gives them a working transport to do it with. - transports/fish.ts: synthesis + TTFB share wss://api.fish.audio/v1/tts/live (start/text/flush/stop msgpack frames, audio/finish back). Clone creation hits the documented multipart POST /model with train_mode=fast. - latency=balanced beat latency=low by ~18 ms median in a local 20-trial bench, so the entry uses balanced. - Pre-registration row in pipeline/models.ts with frozen arenaApiId s2-1-pro. - @msgpack/msgpack added as a devDep (transport-only; never imported by the production Next.js bundle).
|
@cshape is attempting to deploy a commit to the Vapi Team on Vercel. A member of the Team first needs to authorize it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plumbing for Issue #2.
What's here
src/pipeline/transports/fish.ts: new transport.synthesizeand TTFB share the realtime WebSocketwss://api.fish.audio/v1/tts/livewith msgpack framing (start/text/flush/stop out, audio/finish back).createClonehits the documented multipartPOST https://api.fish.audio/model(instant cloning,train_mode: "fast", private model).src/pipeline/transports/index.ts: registerfishinTRANSPORTS.src/pipeline/models.ts: pre-registration row with frozenarenaApiId: "s2-1-pro",vendorModelId: "s2.1-pro". Once the maintainer hashes clips, that id is permanent.@msgpack/msgpackadded as a devDep. Transport-only; the production Next.js bundle never imports pipeline/transports.What's NOT here (maintainer follow-up, per docs/ADDING_A_MODEL.md)
humanness:clone fish <source-clips-dir>).humanness:clips fish-s21-pro --upload).src/catalog/{providers,models}.ts(Fish provider, s2.1-pro model, sourced stats: $15 per 1M chars, 80+ languages, s2-pro released March 2026, s2.1-pro launching July 2026 but available now via API; sample fallbackClip pinned from the uploaded hashes; bump pinned counts incatalog.test.ts).humanness:ttfb fish-s21-proand record the median aspipelineTtfb(<n>)./models/fish-s2-1-pro.Verification
bun run check-typesbun test(109 pass)bun run buildTest plan