Skip to main content

Validating video clips

There are two validation paths for recorded clips, and which one you get depends on one project flag.

Default: the review stream​

Out of the box a sign-collection project validates like any other: a reviewer opens the review stream, plays the clip, and accepts, rejects, or fixes. Rejections can be disputed by the signer. Nothing automated runs, and the Listen tab does not appear.

With the QC pipeline on: clip QC + Listen​

The speech track's machinery is media-agnostic where it can be. If the project's QC pipeline (audio_qc_enabled) is on, a submitted clip rides the same dispatcher as a recorded audio clip.

Machine checks that exist​

Waveform DSP does not apply to a muxed video container, so the dispatcher runs lightweight, dependency-free container checks instead:

CheckPasses whenOn failure
video_presentThe file exists in storage and is non-emptySoft fail β€” flagged
video_mimetypeThe stored file's type is video/*Warning
video_durationContainer duration could be read (MP4/MOV only; WebM returns nothing)Informational β€” the value is stored on the annotation as duration_seconds

Results are written exactly like audio QC results β€” a QC prediction plus a summary on the task (meta.qc with flags), and a review-queue item when a flag is raised and the project's action-on-fail is route-to-review or require-rerecord (Audio QC).

What does not exist yet: resolution / frame-rate thresholds, black-frame or freeze detection, face or hands-in-frame checks, and a minimum duration. The code leaves an explicit hook for frame-decoder-based checks; a missing decoder must skip, never reject.

Listen with a video player​

When the QC flag is on, the Listen loop serves recorded video clips alongside audio: an annotation is eligible as soon as it carries a <VideoRecord> URL. The page swaps the audio player for a video player and keeps everything else β€” Space to replay, the speed toggle, Y / N / S / R shortcuts, structured reports, never-your-own and never-twice rotation, hard-flagged clips skipped, N-vote resolution, escalation of rejections and reports to the review queue, and ledger credit to the signer at validation (and to every voter).

Two things to know:

  • The criteria sheet is the project's audio profile β€” worded for speech (every word audible, matches the prompt, one main speaker…). There is no sign-specific profile; brief validators on what "Yes" means for signing (prompt signed fully, signer framed, hands visible) through the project's labeling instructions.
  • Who may vote, and the vote thresholds, come from the same Corpus purpose & validation settings as speech (reviewers / crowd / hybrid). The Listen tab is shown when the mode is crowd or hybrid, and to managers whenever the QC flag is on.

The speaker-profile and one-prompt rules follow the flag​

With the QC flag on, a video project also gets the speech project's gates: the speaker-profile step is required before a submission or draft is accepted (server-enforced, every field optional), and a signer cannot record the same prompt twice. Switch the flag on only if you want those.

Switching it on for a video-only project​

audio_qc_enabled auto-enables whenever the labeling config contains a recording control β€” <AudioRecord> or <VideoRecord> β€” and the Audio QC settings tab appears for both. A video-only project therefore gets the same controls as a speech project: pipeline on/off, validation mode (reviewers, crowd, hybrid), vote thresholds and action-on-fail (customising the config). Once the validation mode is crowd or hybrid, new submissions are QC-checked and the Listen tab appears.

The project API sets the same fields if you prefer scripting it:

curl -X PATCH "{{platformURL}}/api/projects/<id>" \
-H "Authorization: Bearer YOUR_PAT" \
-H "Content-Type: application/json" \
-d '{"audio_qc_enabled": true,
"audio_qc_config": {"validation": {"mode": "crowd"}}}'

Per-project consent is enforced at submit for every project type, before any QC or validation runs (Consent).