Synthetic speech is not itself evidence of harm or deception. The model cannot distinguish someone using an accessibility tool to communicate from someone using voice cloning to defraud. Interpret results against the use case.
Deepfake Detection (batch)
Returnsapplication/json. Every field is always present.
confidence is confidence in the verdict given, not the probability that the audio is synthetic. A frame with verdict: "non-synthetic" and confidence: 0.97 means the model is 97% confident the speech is natural. It does not mean a 3% chance of being synthetic.
Try it
Response
Response
What you can configure
Audio formats
Accepted extensions:.3gp, .3gpp, .aac, .aiff, .amr, .au, .flac, .m4a, .mov, .mp3, .mp4, .ogg, .opus, .wav, .webm, .wma.
Maximum file size is 100 MB. Empty files are rejected with 400.
Behavior and constraints
Audio under 0.5 seconds is rejected with422. Audio shorter than one 4-second window is accepted and padded before inference.
Each batch frame covers a 4-second window, and the file is windowed from start to finish.
Leading and trailing silence is trimmed before windowing. Frame timestamps still refer to positions in the original file, so start_time_ms and end_time_ms line up against the source audio with no offset arithmetic.
no-content frames are classified before inference rather than by the model, so silence produces an explicit verdict instead of an arbitrary synthetic or non-synthetic guess. Filter them out when aggregating a clip-level verdict.
Recommended clip length is 4 to 60 seconds.
Deepfake Detection (streaming)
Frames arrive as JSON text messages while audio streams in. A closingdone message reports total duration and frame count.
Send audio as binary WebSocket frames of any size; the server buffers and windows internally. Send an empty text frame (
"") to end the stream. The server then flushes remaining audio, delivers final frames, sends done, and closes.
Try it
Messages received
Messages received
What you can configure
Audio formats
Container formats.wav, mp3, ogg, flac, webm, aac, aiff, au, wma, opus, amr, mp4, m4a, 3gp, 3gpp. The stream carries sample rate and channel count, so sample_rate and num_channels must be omitted.
The MP4-family values (mp4, m4a, 3gp, 3gpp) must be sent in a streamable layout. Anything else ends the connection with an audio-processing error.
Raw formats. s8, s16le, s16be, s24le, s24be, s32le, s32be, u8, u16le, u16be, u24le, u24be, u32le, u32be, f32le, f32be, f64le, f64be, mulaw, alaw. These are headerless, so sample_rate and num_channels are both required.
sample_rate accepts 8000, 11025, 16000, 22050, 32000, 44100, 48000, 96000.
Common raw configurations:
s16le at 16 kHz mono is passed through without conversion. Every other format is decoded and resampled to 16 kHz mono first. Output is identical either way, so this only affects latency. Capture at s16le 16 kHz mono where the pipeline allows it.
To convert a file:
Behavior and constraints
The first prediction is emitted once the minimum audio duration has arrived. Each subsequent prediction follows one second later, with the window growing from time zero. Once the window reaches full length it slides forward, holding a constant size. Verdicts therefore arrive incrementally rather than at end of stream. Format parameters are validated twice: at connection time, which closes with1003, and again while decoding audio, which closes with 4002. The second catches both undecodable audio and a mismatch between the declared audio_format and the bytes actually sent.
Frame-level detection compared with the transcription signal
Multilingual Transcription acceptsdeepfake_signal=true, which adds a deepfake_score to each utterance. That is one score per utterance, available only when transcribing, and null for utterances under 0.5 seconds.
The endpoints on this page score every frame across the file, return explicit no-content verdicts for silence, and work on live audio without producing a transcript. Use deepfake_signal when detection is a secondary signal alongside a transcript. Use these endpoints when detection is the goal.