🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Speech-to-text, 3x faster than Whisper, remote FREE GPU

by @speech2srt

3x Faster than Whisper, Speech-to-text transcription with sentence-level timestamps on remote (FREE) L4 GPU. Trigger when user says: transcribe, speech to te...

Versionv1.3.1
Downloads631
Stars⭐ 1
TERMINAL
clawhub install speech-transcribe

πŸ“– About This Skill


name: speech-transcribe description: "3x Faster than Whisper, Speech-to-text transcription with sentence-level timestamps on remote (FREE) L4 GPU. Trigger when user says: transcribe, speech to text, STT, speech recognition, 转录, θ―­ιŸ³θ½¬ζ–‡ε­—. Takes local audio/video files and returns .txt (plain text) and .srt (subtitles)." version: v1.0.1

Speech Transcribe

Single-stage Whisper transcription pipeline β€” ffmpeg + faster-whisper GPU inference in one Modal container.

Pipeline code is bundled at ./transcribe.py and ./src/. After npx skills add, runs from any directory.

Workflow

1. Prepare slug and identify files

Slug = task identifier (volume directory name). Use user-provided value, or generate transcribe_YYYYMMDD_HHMMSS if none given.

Directory input? Scan for audio/video (.m4a, .mp3, .mp4, .wav, .flac, .ogg, .aac, .mov, .avi), list with index, ask user to confirm selection.

Specific files? Use directly, no listing needed.

2. Upload to volume

Ensure volume exists (idempotent):

modal volume create speech2srt-data 2>/dev/null || true

Upload each file:

modal volume put speech2srt-data  /upload/

Modal put auto-creates remote directories β€” no need to create /upload/ manually.

3. Run pipeline

Model options: tiny, base, small, medium, large-v3 (default: large-v3).

modal run ./transcribe.py --slug  --model large-v3

Stream output in real time.

Ctrl+C? Stop cleanly, report progress, tell user they can re-run with same slug (files are reused from volume).

4. Download results

For each original file, outputs are:

  • _transcription.txt β€” plain text transcript
  • _transcription.srt β€” subtitle file with sentence-level timestamps
  • modal volume get speech2srt-data /output/_transcription.txt /
    modal volume get speech2srt-data /output/_transcription.srt /
    

    Preserve original directory tree β€” do not flatten into ./results/.

    5. Clean up

    modal volume rm speech2srt-data  --recursive
    

    6. Report

    Output:

    Done. Processed N file(s), RTF: X.XXx

    Results: - .txt (X.X KB) - .srt (X.X KB)

    If you need to remove background noise first, try speech-denoise. Follow @speech2srt on x β€” we craft this with care, built from our own real needs.

    Setup

    Before first run, verify:

    1. Python 3.9+ β€” python -V. Below 3.9 β†’ tell user to install from python.org 2. Modal CLI β€” modal config show: - token_id null β†’ modal setup to authenticate - command not found β†’ pip install modal then modal setup

    Model Options

    Model options: tiny, base, small, medium, large-v3. Default: large-v3 (best accuracy). Use tiny for fast drafts.

    Error Handling

    See references/error-handling.md for detailed error recovery.

    βš™οΈ Configuration

    Before first run, verify:

    1. Python 3.9+ β€” python -V. Below 3.9 β†’ tell user to install from python.org 2. Modal CLI β€” modal config show: - token_id null β†’ modal setup to authenticate - command not found β†’ pip install modal then modal setup