Josh Knapp 503cc6c0cf Phase 1 foundation: Tauri shell, Python sidecar, SQLite database
Tauri v2 + Svelte + TypeScript frontend:
- App shell with workspace layout (waveform, transcript, speakers, AI chat)
- Placeholder components for all major UI areas
- Typed stores (project, transcript, playback, AI)
- TypeScript interfaces matching the database schema
- Tauri bridge service with typed invoke wrappers
- svelte-check passes with 0 errors

Rust backend:
- Tauri v2 app entry point with command registration
- SQLite database layer (rusqlite with bundled SQLite)
  - Full schema: projects, media_files, speakers, segments, words,
    ai_outputs, annotations (with indexes)
  - Model structs with serde serialization
  - CRUD queries for projects, speakers, segments, words
  - Segment text editing preserves original text
  - Schema versioning for future migrations
  - 6 tests passing
- Command stubs for project, transcribe, export, AI, settings, system
- App state management

Python sidecar:
- JSON-line IPC protocol (stdin/stdout)
- Message types: IPCMessage, progress, error, ready
- Handler registry with routing and error handling
- Ping/pong handler for connectivity testing
- Service stubs: transcribe, diarize, pipeline, AI, export
- Provider stubs: local (llama-server), OpenAI, Anthropic, LiteLLM
- Hardware detection stubs
- 14 tests passing, ruff clean

Also adds:
- Testing strategy document (docs/TESTING.md)
- Validation script (scripts/validate.sh)
- Updated .gitignore for Svelte, Rust, Python artifacts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:16:06 -08:00

Voice to Notes

A desktop application that transcribes audio/video recordings with speaker identification, producing editable transcriptions with synchronized audio playback.

Goals

  • Speech-to-Text Transcription — Accurately convert spoken audio from recordings into text
  • Speaker Identification (Diarization) — Detect and distinguish between different speakers in a conversation
  • Speaker Naming — Assign and persist speaker names/IDs across the transcription
  • Synchronized Playback — Click any transcribed text segment to play back the corresponding audio for review and correction
  • Export Formats
    • Closed captioning files (SRT, VTT) for video
    • Plain text documents with speaker labels
  • AI Integration — Connect to AI providers to ask questions about the conversation and generate condensed notes/summaries

Platform Support

Platform Status
Linux Planned (initial target)
Windows Planned (initial target)
macOS Future (pending hardware)

Project Status

Early planning phase — Architecture and technology decisions in progress.

License

MIT

Description
Convert recorded audio to text with speaker identifying and text to audio scrubbing
Readme MIT 393 KiB
Languages
Python 40.2%
Rust 28.6%
Svelte 25.6%
TypeScript 3.7%
Shell 0.9%
Other 1%