Chrome extension + local Python backend that captures guitar audio from browser tabs and converts it to Guitar Pro tablature (.gp5 files).
Chrome Extension (MV3) Local Python Backend (FastAPI)
┌─────────────────────┐ ┌──────────────────────────────┐
│ Popup UI │ │ POST /transcribe/url │
│ - URL mode button │───────→│ yt-dlp download + transcribe│
│ - Record mode btn │ │ │
│ │ │ POST /transcribe/audio │
├─────────────────────┤ │ WebM upload + transcribe │
│ Service Worker │ │ │
│ - tab info │ │ GET /health │
│ - stream ID mgmt │ ├──────────────────────────────┤
├─────────────────────┤ │ Transcription Engines: │
│ Offscreen Document │ │ 1. Klangio API (primary) │
│ - MediaRecorder │ │ 2. Basic Pitch + PyGuitarPro│
│ - audio capture │ │ (open-source fallback) │
└─────────────────────┘ └──────────────────────────────┘
- Python 3.10+
- uv (or pip)
- ffmpeg (system install)
- Chrome browser
cd backend
uv sync # or: pip install .
uvicorn main:app --port 8765Create backend/.env or set environment variables:
| Variable | Default | Description |
|---|---|---|
KLANGIO_API_KEY |
(empty) | API key for Klangio engine |
DEFAULT_ENGINE |
klangio |
klangio or opensource |
PORT |
8765 |
Backend server port |
- Open
chrome://extensions/ - Enable Developer mode
- Click Load unpacked → select the
extension/directory
- Start the backend server
- Navigate to a tab with guitar audio (e.g. a YouTube guitar video)
- Click the Tabber extension icon
- Choose an engine and either:
- Transcribe from URL — sends the page URL to the backend (works with YouTube, etc.)
- Record Tab Audio — captures live audio from the tab, then transcribes when stopped
- A
.gp5file downloads automatically, named after the tab title
Klangio — Commercial API with high accuracy. Requires an API key from klang.io.
Open-source — Uses Basic Pitch for audio-to-MIDI detection, custom fret assignment, and PyGuitarPro for GP5 generation. No API key needed.