Skip to content

Instantly share code, notes, and snippets.

@YurkoHoshko
Created April 9, 2026 07:15
Show Gist options
  • Select an option

  • Save YurkoHoshko/c1befaaed6e8c982ade04d8ffe009cdc to your computer and use it in GitHub Desktop.

Select an option

Save YurkoHoshko/c1befaaed6e8c982ade04d8ffe009cdc to your computer and use it in GitHub Desktop.
[tools]
python = "3.12"
uv = "latest"
[tasks.setup]
description = "Validate uv is available"
run = "uv --version"
[tasks.stt]
description = "Show stt script help"
run = "./scripts/stt.sh --help"
name parakeet-stt
description Transcribe audio files to text locally using Parakeet via onnx-asr.

Parakeet STT

Purpose

Transcribe local audio files to text using Parakeet STT models through onnx-asr.

Requirements

  • uv in PATH
  • ffmpeg for non-WAV input conversion

Tooling Files (skill directory)

  • ~/.pi/agent/skills/parakeet-stt/mise.toml pins [email protected] and uv.
  • ~/.pi/agent/skills/parakeet-stt/scripts/stt.py is a uv --script entrypoint.
  • ~/.pi/agent/skills/parakeet-stt/scripts/stt.sh is the redistributable wrapper.
  • ~/.pi/agent/skills/parakeet-stt/scripts/stt.py.lock locks script deps.

Setup

cd ~/.pi/agent/skills/parakeet-stt
mise install
mise trust

Usage

# transcribe wav/mp3/ogg/oga/opus
~/.pi/agent/skills/parakeet-stt/scripts/stt.sh /path/to/audio.wav

# choose model explicitly
~/.pi/agent/skills/parakeet-stt/scripts/stt.sh /path/to/audio.wav --model nemo-parakeet-tdt-0.6b-v2

Notes

  • CPU-only runtime: onnxruntime (not onnxruntime-gpu).
  • First run downloads model weights/cache.
  • Default model: nemo-parakeet-tdt-0.6b-v2.
#!/usr/bin/env -S uv run --script
# /// script
# requires-python = ">=3.12"
# dependencies = [
# "onnx-asr>=0.6.2",
# "onnxruntime>=1.22",
# "huggingface-hub>=0.34",
# ]
# ///
import argparse
import sys
import onnx_asr
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Transcribe audio with Parakeet STT.")
parser.add_argument("audio_file", help="Path to WAV audio file")
parser.add_argument(
"--model",
default="nemo-parakeet-tdt-0.6b-v2",
help="onnx-asr model id",
)
return parser.parse_args()
def main() -> int:
args = parse_args()
model = onnx_asr.load_model(args.model)
result = model.recognize(args.audio_file)
print(result)
return 0
if __name__ == "__main__":
raise SystemExit(main())
#!/usr/bin/env bash
# Parakeet STT local wrapper
# Usage: ./stt.sh <audio_file>
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if ! command -v uv >/dev/null 2>&1; then
echo "error: uv is required in PATH. Install via mise (recommended) or https://docs.astral.sh/uv/" >&2
exit 127
fi
export UV_SKIP_WHEEL_FILENAME_CHECK=1
exec uv run --python 3.12 --script "$SCRIPT_DIR/stt.py" "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment