Compare Vonage NCCO Talk with custom audio streaming, then plan Fish Audio generation, real PCM delivery, barge-in and production latency tests.
Vonage text to speech can use the NCCO talk action for platform-synthesized speech or the NCCO stream action for audio delivered to a conversation. Use talk when the built-in voice fits; use Fish Audio behind a documented stream or WebSocket path when a custom voice is required.
Fish Audio is not an NCCO talk provider simply because both APIs accept text. The integration boundary is the audio transport and the current Vonage NCCO schema.
Vonage provides numbers, call control, conversations, NCCO actions, recording and WebSocket audio. Its NCCO reference lists:
talk to send synthesized speech to a conversation;stream to send audio files to a conversation;connect to route calls to phones or WebSocket endpoints;input to collect speech or digits.The Vonage NCCO reference is the authority for the exact action fields and current barge-in behavior.
Fish Audio generates custom speech outside Vonage. The application must deliver it through an approved file, WebSocket or media path.
Use talk for short, simple, platform-voice messages where no custom identity is required. It is the simplest operational path and needs no separate speech provider.
Use stream when the audio already exists as an approved file or when an application manages a live media stream. This is the practical path for branded or cloned Fish Audio speech.
Use a WebSocket endpoint when bidirectional call audio and dynamic turn handling are required. Vonage documents supported content types such as audio/l16;rate=8000 and audio/l16;rate=16000; match the current schema exactly.
For fixed prompts:
stream action;talk message.For dynamic agent replies:
Do not place provider keys in NCCO JSON. Keep them in the server-side secret store used by the media service.
Vonage's WebSocket content type distinguishes 8 kHz and 16 kHz L16 audio. The adapter must also produce the required endianness, channel count and frame structure.
Test the complete path:
| Layer | Failure to check |
|---|---|
| Fish Audio output | sample rate, format, incomplete final chunk |
| Adapter | resampling, byte order, framing |
| WebSocket | connection latency, dropped chunks |
| NCCO action | wrong action, invalid URL, barge-in behavior |
| Phone playback | volume, clipping, network jitter |
The telephony TTS API guide explains why a valid browser file can become noise on a phone path.
Test interruption while Fish Audio is generating, while the first chunk is buffering and while Vonage is already playing audio.
For each case, verify:
Use voice-agent TTS fallback for provider timeout, quota and invalid-voice cases.
Fish Audio packages speech generation as one-time character credits. Vonage prices call, number and voice-product usage separately.
Estimate generated characters, retries and interrupted speech. Then add Vonage call minutes, numbers, recording and streaming. Use TTS API pricing for the Fish Audio side.
Fixed prompts are easy to amortize: generate once, approve, cache and reuse. Dynamic agent speech has a higher operational cost because every unique reply and retry consumes generation.
Run NCCOs through the real Vonage phone path, not only the browser playground.
Include:
Track p95 first-audio latency, failed media chunks, generation errors, fallback rate and abandoned calls.
talk is platform synthesis; stream moves audio into the conversation.Vonage Voice API can play synthesized speech with NCCO talk or send hosted media with stream. Fish Audio is a separate provider behind a documented audio path.
talk uses Vonage synthesis. stream sends audio files or media to a conversation, which is the relevant path for custom Fish Audio output.
Follow the current NCCO and WebSocket documentation. Vonage documents L16 rates at 8 kHz and 16 kHz for relevant endpoints.
Use documented NCCO barge-in behavior and cancel upstream generation. Verify stale audio does not play after the caller interrupts.
Fish Audio uses prepaid character credits. Vonage numbers, calls, recording and voice features are separate charges.