# optiummusic/whisper-real-time-transcription architecture

> Architecture diagram of the GitHub repository optiummusic/whisper-real-time-transcription, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/optiummusic/whisper-real-time-transcription
- Repository: https://github.com/optiummusic/whisper-real-time-transcription

## Overview

This workspace provides an offline real-time transcription and translation application, plus a lexical-database library and its CLI/editor. The documented main workflow captures and resamples audio, detects speech, transcribes it in fast and accurate passes, then presents live results and word-level translations. Source excerpts confirm the application’s task setup, Whisper workers, UI, and LXDB entry points; some intermediate wiring and save behavior are documented but not shown in sampled source.

Main entry points: [`transcriber/src/whisper/whisper.rs`](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/whisper/whisper.rs) (Fast transcription), [`transcriber/src/types.rs`](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/types.rs) (Transcript events), [`transcriber/src/config.rs`](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/config.rs) (Runtime settings), [`lxdb/src/builder.rs`](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/builder.rs) (Binary compiler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Transcription app"]
  node_audio_input(("Audio input"))
  node_main["App runtime<br/>[main.rs]"]
  node_config["Runtime settings<br/>[config.rs]"]
  node_transcript_events["Transcript events<br/>[types.rs]"]
end

subgraph group_pipeline["Speech pipeline"]
  node_audio["Capture and resample<br/>[audio.rs]"]
  node_vad["Speech detection<br/>[vad.rs]"]
  node_pass1["Fast transcription<br/>[whisper.rs]"]
  node_engine["Whisper inference<br/>[engine.rs]"]
  node_pass2["Accurate transcription<br/>[whisper.rs]"]
  node_models["Local models"]
end

subgraph group_presentation["Presentation and translation"]
  node_translator["Word translation"]
  node_dictionary["Replacement rules<br/>[rules.toml]"]
  node_ui["Live interface<br/>[ui.rs]"]
  node_display["Transcript display<br/>[display_task.rs]"]
  node_saved_transcripts["Saved transcripts"]
end

subgraph group_lexicon["LXDB tools"]
  node_lxdb_cli["LXDB CLI<br/>[main.rs]"]
  node_lxdb_editor["LXDB editor<br/>[editor.rs]"]
  node_toml_schema["Lexicon schema<br/>[toml_schema.rs]"]
  node_builder["Binary compiler<br/>[builder.rs]"]
  node_format["Binary format<br/>[format.rs]"]
  node_reader["Lexicon reader<br/>[reader.rs]"]
  node_lxdb_source["Lexicon TOML<br/>[main.lxdb.toml]"]
  node_lxdb_file["LXDB file<br/>[main.lxdb]"]
end

node_user(("User"))

node_user -->|"configures and views"| node_ui
node_audio_input -->|"supplies audio"| node_audio
node_main -->|"starts capture"| node_audio
node_audio -->|"resampled audio"| node_vad
node_vad -->|"speech chunks"| node_pass1
node_pass1 -->|"runs inference"| node_engine
node_pass2 -->|"runs inference"| node_engine
node_pass1 -->|"completed phrase audio"| node_pass2
node_models -->|"fast model"| node_pass1
node_models -->|"accurate model"| node_pass2
node_config -->|"audio settings"| node_audio
node_config -->|"VAD settings"| node_vad
node_config -->|"engine settings"| node_pass1
node_config -->|"engine settings"| node_pass2
node_main -->|"routes events"| node_transcript_events
node_pass1 -->|"emits preview"| node_transcript_events
node_pass2 -->|"emits final text"| node_transcript_events
node_transcript_events -->|"delivers transcript"| node_ui
node_transcript_events -->|"dispatches transcript"| node_translator
node_dictionary -->|"overrides words"| node_translator
node_translator -->|"translation results"| node_ui
node_ui -->|"renders transcript"| node_display
node_display -.->|"optional save"| node_saved_transcripts
node_user -->|"runs commands"| node_lxdb_cli
node_user -->|"edits lexicon"| node_lxdb_editor
node_lxdb_cli -->|"parses source"| node_toml_schema
node_lxdb_editor -->|"edits and saves"| node_lxdb_source
node_toml_schema -->|"compiled by"| node_builder
node_builder -->|"encodes bytes"| node_format
node_lxdb_cli -->|"loads and queries"| node_reader
node_reader -->|"reads layout"| node_format
node_lxdb_source -->|"compile input"| node_builder
node_builder -->|"writes database"| node_lxdb_file
node_lxdb_file -->|"loads database"| node_reader

click node_main "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/main.rs"
click node_audio "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/audio.rs"
click node_vad "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/vad.rs"
click node_pass1 "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/whisper/whisper.rs"
click node_engine "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/whisper/engine.rs"
click node_pass2 "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/whisper/whisper.rs"
click node_models "https://github.com/optiummusic/whisper-real-time-transcription/tree/main/models"
click node_config "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/config.rs"
click node_transcript_events "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/types.rs"
click node_translator "https://github.com/optiummusic/whisper-real-time-transcription/tree/main/transcriber/src/translation"
click node_dictionary "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/dictionary/rules.toml"
click node_ui "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/ui.rs"
click node_display "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/display_task.rs"
click node_lxdb_cli "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/main.rs"
click node_lxdb_editor "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/bin/editor.rs"
click node_toml_schema "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/toml_schema.rs"
click node_builder "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/builder.rs"
click node_format "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/format.rs"
click node_reader "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/reader.rs"
click node_lxdb_source "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/dictionary/main.lxdb.toml"
click node_lxdb_file "https://github.com/optiummusic/whisper-real-time-transcription/blob/main/dictionary/main.lxdb"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_audio_input,node_main,node_config,node_transcript_events,node_user toneBlue
class node_audio,node_vad,node_pass1,node_engine,node_pass2,node_models toneAmber
class node_translator,node_dictionary,node_ui,node_display,node_saved_transcripts toneMint
class node_lxdb_cli,node_lxdb_editor,node_toml_schema,node_builder,node_format,node_reader,node_lxdb_source,node_lxdb_file toneRose
```

## Components

### Transcription app

- **Audio input**
- [App runtime](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/main.rs): `transcriber/src/main.rs`
- [Runtime settings](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/config.rs): `transcriber/src/config.rs`
- [Transcript events](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/types.rs): `transcriber/src/types.rs`

### Speech pipeline

- [Capture and resample](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/audio.rs): `transcriber/src/audio.rs`
- [Speech detection](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/vad.rs): `transcriber/src/vad.rs`
- [Fast transcription](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/whisper/whisper.rs): `transcriber/src/whisper/whisper.rs`
- [Whisper inference](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/whisper/engine.rs): `transcriber/src/whisper/engine.rs`
- [Accurate transcription](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/whisper/whisper.rs): `transcriber/src/whisper/whisper.rs`
- [Local models](https://github.com/optiummusic/whisper-real-time-transcription/tree/main/models): `models`

### Presentation and translation

- [Word translation](https://github.com/optiummusic/whisper-real-time-transcription/tree/main/transcriber/src/translation): `transcriber/src/translation`
- [Replacement rules](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/dictionary/rules.toml): `dictionary/rules.toml`
- [Live interface](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/ui.rs): `transcriber/src/ui.rs`
- [Transcript display](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/transcriber/src/display_task.rs): `transcriber/src/display_task.rs`
- **Saved transcripts**

### LXDB tools

- [LXDB CLI](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/main.rs): `lxdb/src/main.rs`
- [LXDB editor](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/bin/editor.rs): `lxdb/src/bin/editor.rs`
- [Lexicon schema](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/toml_schema.rs): `lxdb/src/toml_schema.rs`
- [Binary compiler](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/builder.rs): `lxdb/src/builder.rs`
- [Binary format](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/format.rs): `lxdb/src/format.rs`
- [Lexicon reader](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/lxdb/src/reader.rs): `lxdb/src/reader.rs`
- [Lexicon TOML](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/dictionary/main.lxdb.toml): `dictionary/main.lxdb.toml`
- [LXDB file](https://github.com/optiummusic/whisper-real-time-transcription/blob/main/dictionary/main.lxdb): `dictionary/main.lxdb`

### Other components

- **User**

## Connections

- User → Live interface: configures and views
- Audio input → Capture and resample: supplies audio
- App runtime → Capture and resample: starts capture
- Capture and resample → Speech detection: resampled audio
- Speech detection → Fast transcription: speech chunks
- Fast transcription → Whisper inference: runs inference
- Accurate transcription → Whisper inference: runs inference
- Fast transcription → Accurate transcription: completed phrase audio
- Local models → Fast transcription: fast model
- Local models → Accurate transcription: accurate model
- Runtime settings → Capture and resample: audio settings
- Runtime settings → Speech detection: VAD settings
- Runtime settings → Fast transcription: engine settings
- Runtime settings → Accurate transcription: engine settings
- App runtime → Transcript events: routes events
- Fast transcription → Transcript events: emits preview
- Accurate transcription → Transcript events: emits final text
- Transcript events → Live interface: delivers transcript
- Transcript events → Word translation: dispatches transcript
- Replacement rules → Word translation: overrides words
- Word translation → Live interface: translation results
- Live interface → Transcript display: renders transcript
- Transcript display → Saved transcripts: optional save
- User → LXDB CLI: runs commands
- User → LXDB editor: edits lexicon
- LXDB CLI → Lexicon schema: parses source
- LXDB editor → Lexicon TOML: edits and saves
- Lexicon schema → Binary compiler: compiled by
- Binary compiler → Binary format: encodes bytes
- LXDB CLI → Lexicon reader: loads and queries
- Lexicon reader → Binary format: reads layout
- Lexicon TOML → Binary compiler: compile input
- Binary compiler → LXDB file: writes database
- LXDB file → Lexicon reader: loads database
