587 lines
16 KiB
Markdown
587 lines
16 KiB
Markdown
# CLI Command Reference
|
|
|
|
Complete reference for all Trax CLI commands with examples and options.
|
|
|
|
## Command Structure
|
|
|
|
Trax provides two CLI interfaces:
|
|
|
|
### Standard CLI
|
|
```bash
|
|
uv run python -m src.cli.main <command> [options] [arguments]
|
|
```
|
|
|
|
### Enhanced CLI (Recommended)
|
|
```bash
|
|
uv run python -m src.cli.enhanced_cli <command> [options] [arguments]
|
|
```
|
|
|
|
The enhanced CLI provides:
|
|
- **Real-time progress reporting** with Rich progress bars
|
|
- **Performance monitoring** (CPU, memory, temperature)
|
|
- **Intelligent batch processing** with concurrent execution
|
|
- **Enhanced error handling** with user-friendly guidance
|
|
- **Multiple export formats** (JSON, TXT, SRT, VTT)
|
|
- **Advanced features** (speaker diarization, domain adaptation)
|
|
|
|
## Enhanced CLI Commands
|
|
|
|
### Enhanced CLI Overview
|
|
|
|
The enhanced CLI (`src.cli.enhanced_cli`) provides a modern, feature-rich interface with real-time progress reporting and advanced capabilities.
|
|
|
|
**Key Features:**
|
|
- **Rich Progress Bars**: Real-time transcription progress with time estimates
|
|
- **Performance Monitoring**: Live CPU, memory, and temperature tracking
|
|
- **Intelligent Queuing**: Batch processing with size-based prioritization
|
|
- **Advanced Export**: Multiple formats including SRT and VTT subtitles
|
|
- **Error Guidance**: Helpful suggestions for common issues
|
|
- **Optional Features**: Speaker diarization and domain adaptation
|
|
|
|
### `transcribe <input>`
|
|
Enhanced single file transcription with progress reporting.
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python -m src.cli.enhanced_cli transcribe input.wav
|
|
```
|
|
|
|
**Options:**
|
|
- `-o, --output PATH` - Output directory (default: current directory)
|
|
- `-f, --format [json|txt|srt|vtt]` - Output format (default: json)
|
|
- `-m, --model [tiny|base|small|medium|large]` - Model size (default: base)
|
|
- `-d, --device [cpu|cuda]` - Processing device (default: cpu)
|
|
- `--domain [general|technical|medical|academic]` - Domain adaptation
|
|
- `--diarize` - Enable speaker diarization
|
|
- `--speakers INTEGER` - Number of speakers (for diarization)
|
|
|
|
**Examples:**
|
|
```bash
|
|
# Basic transcription with progress bar
|
|
uv run python -m src.cli.enhanced_cli transcribe lecture.mp3
|
|
|
|
# Enhanced transcription with domain adaptation
|
|
uv run python -m src.cli.enhanced_cli transcribe medical_audio.wav --domain medical
|
|
|
|
# Speaker diarization with SRT output
|
|
uv run python -m src.cli.enhanced_cli transcribe interview.mp4 --diarize --speakers 2 -f srt
|
|
|
|
# High-quality transcription with large model
|
|
uv run python -m src.cli.enhanced_cli transcribe podcast.mp3 -m large -f vtt
|
|
```
|
|
|
|
### `batch <input>`
|
|
Enhanced batch processing with intelligent queuing and concurrent execution.
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python -m src.cli.enhanced_cli batch /path/to/audio/files
|
|
```
|
|
|
|
**Options:**
|
|
- `-o, --output PATH` - Output directory (default: current directory)
|
|
- `-c, --concurrency INTEGER` - Number of concurrent processes (default: 4)
|
|
- `-f, --format [json|txt|srt|vtt]` - Output format (default: json)
|
|
- `-m, --model [tiny|base|small|medium|large]` - Model size (default: base)
|
|
- `-d, --device [cpu|cuda]` - Processing device (default: cpu)
|
|
- `--domain [general|technical|medical|academic]` - Domain adaptation
|
|
- `--diarize` - Enable speaker diarization
|
|
- `--speakers INTEGER` - Number of speakers (for diarization)
|
|
|
|
**Examples:**
|
|
```bash
|
|
# Batch process with 8 concurrent workers
|
|
uv run python -m src.cli.enhanced_cli batch ~/Podcasts -c 8
|
|
|
|
# Process with domain adaptation and speaker diarization
|
|
uv run python -m src.cli.enhanced_cli batch ~/Lectures --domain academic --diarize
|
|
|
|
# Conservative processing for memory-constrained systems
|
|
uv run python -m src.cli.enhanced_cli batch ~/Audio -c 2 -m small
|
|
|
|
# High-quality batch processing
|
|
uv run python -m src.cli.enhanced_cli batch ~/Interviews -m large -f srt --diarize --speakers 3
|
|
```
|
|
|
|
**Intelligent Queuing:**
|
|
The enhanced batch processor automatically:
|
|
- Sorts files by size (smaller files first for faster feedback)
|
|
- Monitors system resources in real-time
|
|
- Provides detailed progress for each file
|
|
- Handles errors gracefully without stopping the batch
|
|
|
|
## Enhanced Progress Tracking Features
|
|
|
|
### Multi-Pass Pipeline Progress Visualization
|
|
|
|
When using the `--multi-pass` option, the CLI provides detailed progress tracking for each stage of the multi-pass transcription pipeline:
|
|
|
|
**Stage 1: Fast Transcription Pass**
|
|
- Real-time progress with confidence scoring
|
|
- Segment generation and quality assessment
|
|
- Low-confidence segment identification
|
|
|
|
**Stage 2: Refinement Pass**
|
|
- Progress tracking for low-confidence segments
|
|
- Audio slicing and re-transcription
|
|
- Quality improvement monitoring
|
|
|
|
**Stage 3: Enhancement Pass**
|
|
- Domain-specific enhancement progress
|
|
- Content optimization tracking
|
|
- Final quality validation
|
|
|
|
**Stage 4: Speaker Diarization (if enabled)**
|
|
- Parallel speaker identification
|
|
- Speaker count and segmentation progress
|
|
- Integration with transcription results
|
|
|
|
### System Resource Monitoring
|
|
|
|
The enhanced CLI includes real-time system resource monitoring:
|
|
|
|
**CPU Usage Monitoring**
|
|
- Current and peak CPU utilization
|
|
- Performance warnings at 80%+ and 95%+ thresholds
|
|
- Processing optimization recommendations
|
|
|
|
**Memory Usage Tracking**
|
|
- Real-time memory consumption
|
|
- Peak memory usage during processing
|
|
- Memory optimization suggestions
|
|
|
|
**Disk and Network I/O**
|
|
- Storage usage monitoring
|
|
- Network activity tracking
|
|
- Performance bottleneck identification
|
|
|
|
**Temperature Monitoring**
|
|
- CPU temperature tracking (when available)
|
|
- Thermal throttling warnings
|
|
- Performance impact assessment
|
|
|
|
### Error Recovery and Export Progress
|
|
|
|
**Error Recovery Tracking**
|
|
- Automatic error detection and classification
|
|
- Recovery attempt progress monitoring
|
|
- Success/failure rate reporting
|
|
- User guidance for common issues
|
|
|
|
**Multi-Format Export Progress**
|
|
- Concurrent export to multiple formats
|
|
- Individual format progress tracking
|
|
- Export success rate monitoring
|
|
- Output file path reporting
|
|
|
|
### Progress Display Features
|
|
|
|
**Rich Visual Interface**
|
|
- Beautiful progress bars with Rich library
|
|
- Real-time stage and sub-stage updates
|
|
- Time remaining estimates
|
|
- Spinner animations for active operations
|
|
|
|
**Status Indicators**
|
|
- 🟢 Healthy resource usage
|
|
- 🟡 Moderate resource usage (warning)
|
|
- 🔴 High resource usage (critical)
|
|
- ✅ Completed operations
|
|
- ⚠️ Warnings and issues
|
|
- ❌ Errors and failures
|
|
|
|
**Progress Callbacks**
|
|
- Stage transition notifications
|
|
- Quality metric updates
|
|
- Performance benchmark reporting
|
|
- User guidance and tips
|
|
|
|
## Standard CLI Commands
|
|
|
|
### `youtube <url>`
|
|
Extract metadata from YouTube URLs without requiring API access.
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python -m src.cli.main youtube https://youtube.com/watch?v=VIDEO_ID
|
|
```
|
|
|
|
**Options:**
|
|
- `--download` - Download media after metadata extraction
|
|
- `--queue` - Add to batch queue for processing
|
|
- `--json` - Output as JSON (default)
|
|
- `--txt` - Output as plain text
|
|
|
|
**Examples:**
|
|
```bash
|
|
# Extract metadata only
|
|
uv run python -m src.cli.main youtube https://youtube.com/watch?v=dQw4w9WgXcQ
|
|
|
|
# Extract and download immediately ✅ WORKING
|
|
uv run python -m src.cli.main youtube https://youtube.com/watch?v=dQw4w9WgXcQ --download
|
|
|
|
# Plain text output
|
|
uv run python -m src.cli.main youtube https://youtube.com/watch?v=dQw4w9WgXcQ --txt
|
|
```
|
|
|
|
**Download Pipeline Status:** ✅ **FULLY FUNCTIONAL**
|
|
- Media download with progress tracking
|
|
- Automatic file format detection
|
|
- Downloaded files saved to `data/media/downloads/`
|
|
- File hash generation for integrity verification
|
|
|
|
**Supported URL Formats:**
|
|
- `https://www.youtube.com/watch?v=VIDEO_ID`
|
|
- `https://youtu.be/VIDEO_ID`
|
|
- `https://www.youtube.com/watch?v=VIDEO_ID&t=123s`
|
|
|
|
### `batch-urls <file>`
|
|
Process multiple YouTube URLs from a text file.
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python -m src.cli.main batch-urls urls.txt
|
|
```
|
|
|
|
**File Format:**
|
|
```
|
|
https://youtube.com/watch?v=video1
|
|
https://youtube.com/watch?v=video2
|
|
https://youtu.be/video3
|
|
```
|
|
|
|
**Options:**
|
|
- `--download` - Download all media after metadata extraction
|
|
- `--queue` - Add all to batch processing queue
|
|
- `--workers <n>` - Number of parallel workers (default: 4)
|
|
|
|
**Examples:**
|
|
```bash
|
|
# Process URLs file
|
|
uv run python -m src.cli.main batch-urls my_videos.txt
|
|
|
|
# Process and download with parallel processing ✅ WORKING
|
|
uv run python -m src.cli.main batch-urls my_videos.txt --download
|
|
|
|
# Download with text output format
|
|
uv run python -m src.cli.main batch-urls my_videos.txt --download --txt
|
|
```
|
|
|
|
**Batch Download Status:** ✅ **FULLY FUNCTIONAL**
|
|
- Parallel processing of multiple URLs
|
|
- Progress tracking for each download
|
|
- Comprehensive success/failure reporting
|
|
- Automatic error handling and retry logic
|
|
|
|
### `transcribe <file>`
|
|
Transcribe a single audio or video file.
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python -m src.cli.main transcribe path/to/audio.mp3
|
|
```
|
|
|
|
**Options:**
|
|
- `--v1` - Use v1 pipeline (Whisper only, default)
|
|
- `--v2` - Use v2 pipeline (Whisper + DeepSeek enhancement)
|
|
- `--json` - Output as JSON (default)
|
|
- `--txt` - Output as plain text
|
|
- `--min-accuracy <percent>` - Minimum accuracy threshold (default: 80%)
|
|
|
|
**Supported Formats:**
|
|
- Audio: MP3, WAV, M4A, FLAC, OGG
|
|
- Video: MP4, AVI, MOV, MKV, WEBM
|
|
|
|
**Examples:**
|
|
```bash
|
|
# Basic transcription (v1 pipeline)
|
|
uv run python -m src.cli.main transcribe lecture.mp3
|
|
|
|
# Enhanced transcription (v2 pipeline)
|
|
uv run python -m src.cli.main transcribe podcast.mp4 --v2
|
|
|
|
# Plain text output with accuracy threshold
|
|
uv run python -m src.cli.main transcribe audio.wav --txt --min-accuracy 90
|
|
```
|
|
|
|
### `batch <folder>`
|
|
Batch process multiple audio/video files in a directory.
|
|
|
|
**Usage:**
|
|
```bash
|
|
uv run python -m src.cli.main batch /path/to/audio/files
|
|
```
|
|
|
|
**Options:**
|
|
- `--v1` - Use v1 pipeline (default)
|
|
- `--v2` - Use v2 pipeline with enhancement
|
|
- `--workers <n>` - Number of parallel workers (default: 8)
|
|
- `--min-accuracy <percent>` - Minimum accuracy threshold (default: 80%)
|
|
- `--recursive` - Process subdirectories recursively
|
|
- `--pattern <glob>` - File pattern to match (e.g., "*.mp3")
|
|
|
|
**Examples:**
|
|
```bash
|
|
# Process all audio files with 8 workers
|
|
uv run python -m src.cli.main batch /Users/me/podcasts
|
|
|
|
# Enhanced processing with custom settings
|
|
uv run python -m src.cli.main batch /Users/me/lectures --v2 --workers 4 --min-accuracy 95
|
|
|
|
# Process only MP3 files recursively
|
|
uv run python -m src.cli.main batch /Users/me/audio --recursive --pattern "*.mp3"
|
|
```
|
|
|
|
## Enhanced CLI Features
|
|
|
|
### Real-Time Performance Monitoring
|
|
|
|
The enhanced CLI provides live system monitoring during processing:
|
|
|
|
```bash
|
|
# Performance stats are displayed automatically
|
|
CPU: 45.2% | Memory: 2.1GB/8GB (26%) | Temp: 65°C
|
|
```
|
|
|
|
**Monitored Metrics:**
|
|
- **CPU Usage**: Real-time CPU utilization percentage
|
|
- **Memory Usage**: Current and total memory with percentage
|
|
- **Temperature**: CPU temperature monitoring (when available)
|
|
- **Processing Speed**: Time estimates and completion percentages
|
|
|
|
### Enhanced Error Handling
|
|
|
|
The enhanced CLI provides intelligent error guidance:
|
|
|
|
```bash
|
|
# Memory error with helpful suggestions
|
|
❌ Memory error. Try using a smaller model with --model small or reduce concurrency.
|
|
|
|
# File not found with guidance
|
|
❌ File not found: lecture.mp3
|
|
💡 Check that the input file path is correct and the file exists.
|
|
|
|
# GPU error with alternatives
|
|
❌ CUDA out of memory
|
|
💡 GPU-related error. Try using --device cpu instead.
|
|
```
|
|
|
|
**Error Categories:**
|
|
- **File Errors**: Path validation and existence checks
|
|
- **Memory Errors**: Model size and concurrency suggestions
|
|
- **GPU Errors**: Device fallback recommendations
|
|
- **Permission Errors**: File access guidance
|
|
- **Generic Errors**: General troubleshooting tips
|
|
|
|
## Performance Guidelines
|
|
|
|
### Enhanced CLI Optimization
|
|
- **Default Concurrency:** 4 (balanced for most systems)
|
|
- **Memory Usage:** <2GB per pipeline
|
|
- **Processing Speed:** <30s for 5-minute audio (v1)
|
|
- **Real-time Factor:** <0.1 (much faster than real-time)
|
|
- **Progress Updates:** Every 2-5 seconds
|
|
|
|
### M3 MacBook Optimization
|
|
- **Default Workers:** 8 (optimal for M3 chip)
|
|
- **Memory Usage:** <2GB per pipeline
|
|
- **Processing Speed:** <30s for 5-minute audio (v1)
|
|
- **Real-time Factor:** <0.1 (much faster than real-time)
|
|
|
|
### Worker Configuration
|
|
```bash
|
|
# Conservative (low memory)
|
|
--workers 4
|
|
|
|
# Balanced (default)
|
|
--workers 8
|
|
|
|
# Aggressive (high-end M3)
|
|
--workers 12
|
|
```
|
|
|
|
## Output Formats
|
|
|
|
### Enhanced CLI Formats
|
|
|
|
The enhanced CLI supports multiple output formats:
|
|
|
|
#### JSON Output (Default)
|
|
```json
|
|
{
|
|
"text_content": "Never gonna give you up...",
|
|
"segments": [
|
|
{
|
|
"start": 0.0,
|
|
"end": 2.5,
|
|
"text": "Never gonna give you up"
|
|
}
|
|
],
|
|
"confidence": 0.95,
|
|
"processing_time": 5.2
|
|
}
|
|
```
|
|
|
|
#### Text Output
|
|
```
|
|
Never gonna give you up
|
|
Never gonna let you down
|
|
Never gonna run around and desert you
|
|
...
|
|
```
|
|
|
|
#### SRT Subtitles
|
|
```
|
|
1
|
|
00:00:00,000 --> 00:00:02,500
|
|
Never gonna give you up
|
|
|
|
2
|
|
00:00:02,500 --> 00:00:05,000
|
|
Never gonna let you down
|
|
```
|
|
|
|
#### VTT Subtitles
|
|
```
|
|
WEBVTT
|
|
|
|
00:00:00.000 --> 00:00:02.500
|
|
Never gonna give you up
|
|
|
|
00:00:02.500 --> 00:00:05.000
|
|
Never gonna let you down
|
|
```
|
|
|
|
### Standard CLI Formats
|
|
|
|
#### JSON Output (Default)
|
|
```json
|
|
{
|
|
"youtube_id": "dQw4w9WgXcQ",
|
|
"title": "Rick Astley - Never Gonna Give You Up",
|
|
"channel": "Rick Astley",
|
|
"duration_seconds": 212,
|
|
"transcript": {
|
|
"text": "Never gonna give you up...",
|
|
"segments": [...],
|
|
"confidence": 0.95
|
|
}
|
|
}
|
|
```
|
|
|
|
#### Text Output
|
|
```
|
|
Title: Rick Astley - Never Gonna Give You Up
|
|
Channel: Rick Astley
|
|
Duration: 3:32
|
|
|
|
Transcript:
|
|
Never gonna give you up
|
|
Never gonna let you down
|
|
...
|
|
```
|
|
|
|
## Common Workflows
|
|
|
|
### Enhanced CLI Workflows
|
|
|
|
#### Research Workflow (Enhanced)
|
|
```bash
|
|
# 1. Extract metadata from YouTube playlist
|
|
uv run python -m src.cli.main batch-urls research_videos.txt
|
|
|
|
# 2. Download selected videos
|
|
uv run python -m src.cli.main youtube https://youtube.com/watch?v=interesting --download
|
|
|
|
# 3. Enhanced transcription with progress monitoring
|
|
uv run python -m src.cli.enhanced_cli transcribe downloaded_video.mp4 -m large --domain academic
|
|
|
|
# 4. Batch process with intelligent queuing
|
|
uv run python -m src.cli.enhanced_cli batch ~/Downloads/research_audio -c 6 -f srt
|
|
```
|
|
|
|
#### Academic Lecture Processing
|
|
```bash
|
|
# Process academic lectures with domain adaptation
|
|
uv run python -m src.cli.enhanced_cli batch ~/Lectures \
|
|
--domain academic \
|
|
-m large \
|
|
-f srt \
|
|
-c 4 \
|
|
--diarize \
|
|
--speakers 1
|
|
```
|
|
|
|
#### Podcast Production
|
|
```bash
|
|
# High-quality podcast transcription with speaker diarization
|
|
uv run python -m src.cli.enhanced_cli batch ~/Podcasts \
|
|
-m large \
|
|
-f vtt \
|
|
--diarize \
|
|
--speakers 3 \
|
|
-c 2
|
|
```
|
|
|
|
### Standard CLI Workflows
|
|
|
|
#### Research Workflow ✅ FUNCTIONAL
|
|
```bash
|
|
# 1. Extract metadata from YouTube playlist
|
|
uv run python -m src.cli.main batch-urls research_videos.txt
|
|
|
|
# 2. Download selected videos ✅ WORKING
|
|
uv run python -m src.cli.main youtube https://youtube.com/watch?v=interesting --download
|
|
|
|
# 3. Transcribe downloaded media
|
|
uv run python -m src.cli.main transcribe data/media/downloads/video.m4a --v2
|
|
|
|
# 4. Batch process entire folder
|
|
uv run python -m src.cli.main batch data/media/downloads --v2
|
|
```
|
|
|
|
**Complete Pipeline Status:**
|
|
- ✅ **YouTube metadata extraction** - Working
|
|
- ✅ **Media download** - Working with progress tracking
|
|
- 🚧 **Transcription** - Ready for implementation
|
|
- 🚧 **Batch processing** - Ready for implementation
|
|
|
|
### Podcast Processing
|
|
```bash
|
|
# Process entire podcast folder with high accuracy
|
|
uv run python -m src.cli.main batch ~/Podcasts --v2 --min-accuracy 95 --workers 6
|
|
```
|
|
|
|
### Academic Lectures
|
|
```bash
|
|
# Conservative processing for complex academic content
|
|
uv run python -m src.cli.main batch ~/Lectures --v2 --workers 4 --min-accuracy 99
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
Commands automatically handle common errors:
|
|
- **Network timeouts** - Automatic retry with exponential backoff
|
|
- **File format issues** - Automatic conversion to supported formats
|
|
- **Memory limits** - Automatic chunking for large files
|
|
- **API rate limits** - Automatic throttling and retry
|
|
|
|
For troubleshooting specific errors, see [TROUBLESHOOTING.md](TROUBLESHOOTING.md).
|
|
|
|
## Integration with Taskmaster
|
|
|
|
All CLI operations can be tracked using Taskmaster:
|
|
|
|
```bash
|
|
# Create task for batch processing
|
|
./scripts/tm_master.sh add "Process podcast archive with v2 pipeline"
|
|
|
|
# Track progress
|
|
./scripts/tm_workflow.sh update 15 "Processed 50 files, 10 remaining"
|
|
|
|
# Mark complete
|
|
./scripts/tm_master.sh done 15
|
|
```
|
|
|
|
See [Taskmaster Helper Scripts](../scripts/README_taskmaster_helpers.md) for complete integration guide.
|