
Transcribe
- 206 installs
- 2.3k repo stars
- Updated June 6, 2026
- badlogic/pi-skills
Transcribe local audio or meeting recordings inside agent pipelines so notes, captions, and searchable text are produced without manual transcription tools.
About
transcribe from badlogic/pi-skills guides agents to convert audio files into text via integrated transcription tooling. It helps teams add captions, meeting notes, and searchable archives to content products and agent automations during build.
- Audio-to-text inside agent flows
- Supports content and accessibility features
- Automates meeting and podcast transcription
- Feeds downstream summarization steps
- Part of pi-skills media toolkit
Transcribe by the numbers
- 206 all-time installs (skills.sh)
- Ranked #613 of 1,335 Generative Media skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/badlogic/pi-skills --skill transcribeAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 206 |
|---|---|
| repo stars | ★ 2.3k |
| Last updated | June 6, 2026 |
| Repository | badlogic/pi-skills ↗ |
What it does
Transcribe local audio or meeting recordings inside agent pipelines so notes, captions, and searchable text are produced without manual transcription tools.
Files
Transcribe
Local speech-to-text using parakeet-cpp-transcribe on Apple Silicon macOS.
Usage
{baseDir}/transcribe.sh <audio-file>The first run downloads the macOS arm64 binary from the latest badlogic/pibot GitHub release into the extension's ignored bin directory:
{extensionDir}/bin/parakeet-cpp-transcribe({extensionDir} is the parent directory of this skill's {baseDir}.) The binary downloads its GGUF model automatically if missing.
Output
Plain text timestamped in 15 second chunks is written to stdout:
[00:00-00:15] transcript text
[00:15-00:30] more transcript textModel/GGML diagnostic logs are written to stderr. Redirect stderr to hide them:
{baseDir}/transcribe.sh <audio-file> 2>/dev/nullRequirements
- Apple Silicon macOS only
curlandtarffmpegfor non-WAV input:brew install ffmpeg
config
#!/usr/bin/env bash
set -euo pipefail
if [ "${1:-}" = "--help" ] || [ "${1:-}" = "-h" ] || [ $# -ne 1 ]; then
echo "Usage: transcribe.sh <audio-file>"
echo
echo "Outputs timestamped transcript lines: [MM:SS-MM:SS] text"
exit 0
fi
if [ "$(uname -s)" != "Darwin" ] || [ "$(uname -m)" != "arm64" ]; then
echo "Error: transcribe skill requires Apple Silicon macOS" >&2
exit 1
fi
INPUT="$1"
if [ ! -f "$INPUT" ]; then
echo "Error: file not found: $INPUT" >&2
exit 1
fi
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
EXTENSION_DIR="$(cd "$SCRIPT_DIR/.." && pwd -P)"
BIN_DIR="$EXTENSION_DIR/bin"
BIN="$BIN_DIR/parakeet-cpp-transcribe"
VERSION="parakeet-cpp-transcribe-v0.1.2"
ASSET="parakeet-cpp-transcribe-macos-arm64.tar.gz"
URL="https://github.com/badlogic/pibot/releases/download/$VERSION/$ASSET"
CLEANUP_PATHS=()
cleanup() {
for path in "${CLEANUP_PATHS[@]}"; do
rm -rf "$path"
done
}
trap cleanup EXIT
if [ ! -x "$BIN" ] || ! "$BIN" --help 2>/dev/null | grep -q -- "--text"; then
mkdir -p "$BIN_DIR"
TMP_DIR="$(mktemp -d)"
CLEANUP_PATHS+=("$TMP_DIR")
echo "Installing parakeet-cpp-transcribe into $BIN_DIR..." >&2
curl -fL "$URL" -o "$TMP_DIR/$ASSET"
rm -f "$BIN"
tar -xzf "$TMP_DIR/$ASSET" -C "$BIN_DIR"
chmod +x "$BIN"
fi
AUDIO="$INPUT"
LOWER="$(printf '%s' "$INPUT" | tr '[:upper:]' '[:lower:]')"
if [[ "$LOWER" != *.wav ]]; then
if ! command -v ffmpeg >/dev/null 2>&1; then
echo "Error: ffmpeg is required for non-WAV input. Install with: brew install ffmpeg" >&2
exit 1
fi
TMP_WAV="$(mktemp -t transcribe.XXXXXX).wav"
CLEANUP_PATHS+=("$TMP_WAV")
ffmpeg -y -loglevel error -i "$INPUT" -ac 1 -ar 16000 "$TMP_WAV"
AUDIO="$TMP_WAV"
fi
"$BIN" --text "$AUDIO"