Privacy-first audio toolkit
Use tool.py for local Whisper transcription and deterministic audio utilities. Input and output paths must resolve inside the current workspace; symlinks that escape it are rejected. Local actions do not make network requests.
Hero workflow: transcription
python tool.py transcribe --file_path meeting.m4a --model turbo
python tool.py transcribe --file_path meeting.m4a --model base
The command returns JSON with transcript text and timestamped segments. Whisper models are local after their initial model download. Use smaller models for speed and larger models for accuracy.
Actions
transcribe: local Whisper transcription withtiny,base,small,medium,large, orturbo.tts: Google TTS only with explicit--allow-network; text is sent to Google. Set--langfor a language code and never pass secrets or confidential transcripts.extract_features: duration, sample rate, mean MFCCs, and mean RMS.vad_segments: FFmpeg silence-based speech segments;--aggressivenessis 0–3.transform: JSON operationstrim,resample, andnormalize.
Remote TTS consent
Remote TTS is fail-closed. Invoke it only after confirming the text may leave the workspace:
python tool.py tts --text "Hello" --output_path hello.mp3 --lang en --allow-network
FFmpeg uses an argument list without a shell, bounded execution time, and stripped output metadata. The package must contain only intentional source files; never publish __pycache__, .pyc, .pyo, or .pyd artifacts.
Source and support
Source: https://github.com/iyeque/openclaw-skills/tree/main/skills/audio-processing
Report bugs and security concerns through the repository issue guidance.
