Standalone transcription PWA with Web Speech API and local Whisper AI
Go to file
Jeff Emmett 1a8774aa97 Initial commit: Standalone transcription PWA
Extracted from canvas-website with:
- Web Speech API transcription (Chrome/Edge, fast)
- Local Whisper AI model (offline capable, ~75MB)
- PWA support with service worker
- Docker + Runtipi deployment configs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 10:37:07 +01:00
public/icons Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
runtipi Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
src Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
.gitignore Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
Dockerfile Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
README.md Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
docker-compose.yml Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
index.html Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
nginx.conf Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
package-lock.json Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
package.json Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
tsconfig.json Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
tsconfig.node.json Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00
vite.config.ts Initial commit: Standalone transcription PWA 2026-01-02 10:37:07 +01:00

README.md

Transcribe

A standalone Progressive Web App (PWA) for voice transcription, extracted from canvas-website.

Features

  • Two Transcription Modes:

    • Web Speech API - Fast, real-time transcription using browser's built-in speech recognition (Chrome/Edge)
    • Local Whisper - Offline-capable transcription using Whisper AI model running entirely in the browser
  • PWA Support - Install on any device, works offline

  • Simple UI - Start/stop recording, copy/download transcripts

  • No Server Required - All processing happens in the browser

Quick Start

# Install dependencies
npm install

# Run development server
npm run dev

# Build for production
npm run build

Docker Deployment

# Build and run with Docker
docker compose up -d --build

# Or build manually
docker build -t transcribe-app .
docker run -p 3000:80 transcribe-app

Runtipi Deployment

Copy the contents of the runtipi/ folder to your Runtipi apps directory:

cp -r runtipi/* /path/to/runtipi/user-config/transcribe/

Or use the pre-built Docker image from GitHub Container Registry.

Browser Compatibility

Browser Web Speech API Whisper (Local)
Chrome Full Full
Edge Full Full
Safari Partial Full
Firefox No Full

Tech Stack

  • React 18 + TypeScript
  • Vite with PWA plugin
  • @xenova/transformers for local Whisper inference
  • Web Speech API for browser-native transcription

License

MIT