#Interim results/partial transcript for STT

1 messages · Page 1 of 1 (latest)

thorny tusk
#

Hi Cartesia team, you guys have the best speech to text API in the market, its the fastest and most reliable yet i cannot use it due to the fact that my application needs partial transcript not just the full transcript returned when endpointing marks done or flush is called. Without partial transcript/interim result my application cannot do voice interruption. Can you guys please add that to your api an option to not only receive final transcript but also ones not final ? Thank you

#

Right now i have to use deepgram which is not accurate enough for me and slower than Cartesia and unreliable in speed. Tons of issues, but they have interim results so i have no choice

dire tangleBOT
#

Hi Trung,
Thanks for reaching out to Cartesia Support and for the kind words!
Our streaming STT WebSocket does provide interim / partial transcripts. As you stream audio, the server sends messages of type transcript with is_final: false for interim results, and is_final: true for final ones. You can use these interim results to implement barge-in/voice interruption.
Details are in the docs here: Streaming STT WebSocket

thorny tusk
#

Hey man unfortunately the reality is i did try that and i only ever receive is_final: true

#

I really does not receive any is_final: false at all

#

I dont know why

#

Im using Pipecat - the most popular framework and what they did when dealing with Cartesia is correct

#

Yet i have printed it out all cartesia messages and its only ever is_final: True happening when flushing happens

#

Could you check with the tech team on this>

dire tangleBOT
#

Thanks for the follow-up!
Our WebSocket API does emit is_final: false interim transcripts, so something in the pipeline is likely causing you to only see finals. A few likely causes:

  • Pipecat's VAD flushing: Pipecat’s Cartesia STT sends a "finalize" command immediately upon VADUserStoppedSpeakingFrame, which forces finalization. If VAD triggers too aggressively, it may flush before interim results are sent. Check your VAD sensitivity and silence thresholds.
  • Endpointing settings: A very low max_silence_duration_secs causes quick endpointing, reducing interim result windows. Try increasing it (e.g., 1.0–2.0s).
  • Audio chunk size: Sending large audio chunks instead of small increments (~20–200ms) can cause early finalization before interims.
    I would recommend testing by connecting directly to our WebSocket with small real-time audio chunks to confirm receipt of is_final: false messages. This will help isolate if the issue is API or integration related.
thorny tusk
#

Ok im pretty sure its not the first one since i am logging all over the place and i can speak 5s continuously not letting pipecat send finalize and i wont receive interim only boom - a finalize at the end. I will check the other two points you mentioned hopefully that might be it

thorny tusk
#

Yeah mate it is definitely not it. This is 100% a technical issue in Cartesia side mate im sure of it. The problem is i will be speaking for 10 seconds nonstop lol and not a single transcript will be produced and when i end my speech it calls flush from pipecat and boom the final transcript comes, that’s what it is - not that the final transcript comes early due to endpointing, etc.
So if the agent is speaking i will be speaking on top of her for 10 seconds straight and cartesia won’t produce a single interim is_final=false transcript and also no final transcript, only after 10s of nonstop speech when i stop speaking that VAD detects and calls flush that Cartesia releases the full transcript.
Cartesia STT websocket currently is unable to produce interim transcript. I have read pipecat code to the core, it’s 100% a Cartesia issue so can you please talk to the tech team ?

thorny tusk
#

Can u help me w this

dire tangleBOT
#

Hello @thorny tusk, thank you for your patience! We are investigating this and will get back to you.

dire tangleBOT
#

Thank you for your patience!
After investigation, the STT API includes the is_final parameter, but currently it always returns True. Partial or interim transcripts with is_final: False are not yet supported. We plan to add this feature in future model updates, though no timeline is available at this moment.

thorny tusk
#

Wow this is an important feature thou man :(. No serious system determines the turn start of a speech by pure VAD anymore, this renders Cartesia STT not usable for us. And i believe many others too. Really hope you guys can give a high priority and discuss ab it.

dire tangleBOT
#

We’ve flagged this internally as a feature request for real-time interruption use cases. While we don’t have an ETA yet, your feedback is directly helping to prioritize this development!