What Happens When Transcripts Are Missing and Whisper Is Disabled in claude-video
When transcripts are missing and Whisper is disabled, the tool prints a "no transcript available" notice and proceeds with frames-only extraction, bypassing transcription entirely while still processing video frames.
The claude-video repository provides a /watch skill for video analysis that normally relies on Whisper-based transcription when captions are unavailable. When users explicitly disable Whisper or the API is unavailable, the skill implements a graceful fallback mechanism that maintains core functionality while clearly communicating the limitation.
How the /watch Skill Handles Missing Transcripts
When you run the /watch skill against a video without embedded captions and Whisper is disabled, the execution follows a specific four-step fallback path.
Caption Fetch Failure
The process begins with fetch_captions, which attempts to retrieve subtitle files for the target video. When no captions are available, this function returns subtitle_path=None. Consequently, parse_vtt (located in transcribe.py) is never invoked, leaving the transcript_segments variable empty.
Whisper Fallback Bypass
In skills/watch/scripts/watch.py, the main logic checks transcription status with the condition:
if not transcript_segments and not args.no_whisper:
# Whisper transcription block
When you supply the --no-whisper flag (or Whisper is otherwise unavailable), this block is skipped entirely. The combination of empty transcript segments and disabled Whisper triggers the alternative execution path.
The No-Transcript Output Path
The final report generation reaches the else branch designed for missing transcripts. This branch outputs a specific console notice:
"No transcript available — proceed with frames only. Captions were missing and the Whisper fallback was unavailable (no API key set, or
--no-whisperwas used). Runpython3 skills/watch/scripts/setup.pyto enable Whisper, then re-run."
This message explicitly references skills/watch/scripts/setup.py, which provides the routine for configuring Whisper API credentials.
Frame Extraction Continues
Despite the missing transcript, the tool continues processing the video. Frame extraction proceeds normally unless you explicitly requested --detail transcript, which skips frame extraction entirely. The video (or audio-only stream if detail == "transcript" and no timestamps were supplied) is still downloaded and processed according to your specified parameters.
Key Source Files
Understanding the flow requires examining these specific implementation files:
-
skills/watch/scripts/watch.py– Contains the main entry point and conditional logic that checks for captions, invokes Whisper, and handles the "no transcript" case when Whisper is disabled. -
skills/watch/scripts/whisper.py– Implements the Whisper fallback transcription service; its absence in the execution chain explains why transcription is skipped when--no-whisperis set. -
skills/watch/scripts/transcribe.py– Handles WebVTT caption parsing viaparse_vtt; only executed when captions are successfully fetched. -
skills/watch/scripts/setup.py– Provides the configuration interface for storing Whisper API keys; referenced in user-facing error messages when transcription services are unavailable.
Practical Examples
The following commands demonstrate the behavior when transcripts are missing and Whisper is disabled:
# Process video with missing captions, Whisper disabled
watch https://example.com/video.mp4 --no-whisper
# Request frames only mode without transcription
watch https://example.com/video.mp4 --detail transcript --no-whisper
In both cases, the output contains a processed frames list (unless detail is set to transcript) and the console notice indicating that no transcript is available.
Summary
- Missing captions trigger
fetch_captionsto returnNone, preventingparse_vttfrom executing. - Disabled Whisper bypasses the transcription fallback block in
watch.pywhen--no-whisperis present. - Graceful degradation occurs via the else branch that prints a specific "no transcript available" message referencing
setup.py. - Continuous operation means frames are still extracted and processed unless the user explicitly requested transcript-only mode.
Frequently Asked Questions
Does the skill fail completely if no transcripts are found?
No, the skill does not fail. When transcript_segments remains empty and Whisper is disabled, the code executes the alternative branch that logs the missing transcript notice and continues with frame extraction. This ensures the video analysis completes with available visual data even without textual transcription.
Can I still extract frames without Whisper?
Yes. Frame extraction proceeds normally when transcripts are missing and Whisper is disabled, unless you specify --detail transcript. In that specific mode, the tool skips frame extraction entirely and attempts to work with audio-only content, but will still report the unavailability of transcripts.
How do I enable Whisper after seeing the error message?
Run the setup script referenced in the error output: python3 skills/watch/scripts/setup.py. This script configures the Whisper API credentials required for transcription. After completing the setup, re-run your original watch command without the --no-whisper flag to enable the transcription fallback.
What happens if I use --detail transcript with no Whisper?
When using --detail transcript with missing captions and disabled Whisper, the tool downloads the audio stream but cannot generate transcript segments. It outputs the standard "no transcript available" notice and produces minimal output since frame extraction was explicitly skipped by the detail parameter.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →