# yebisu0529-ship-it/talk-style-live-translation architecture

> Architecture diagram of the GitHub repository yebisu0529-ship-it/talk-style-live-translation, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yebisu0529-ship-it/talk-style-live-translation
- Repository: https://github.com/yebisu0529-ship-it/talk-style-live-translation

## Overview

Talk風Live翻訳 is a Windows desktop app that translates PC audio into Japanese in a chat-style transcript, with local translation and speech recognition. The principal workflow is: the user starts listening, the app obtains audio or another selected input, speech is recognized, text is translated, and results appear in the chat and history. Separate branches provide text, document, screen/OCR, subtitle, and read-aloud features, alongside model setup. The graph reflects README-described capabilities and sampled wiring; several implementation paths are unsampled, so uncertain connections are omitted.

Main entry points: [`src/main.rs`](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/main.rs) (App orchestration), [`src/chat.rs`](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/chat.rs) (Chat transcript), [`src/setup_chain.rs`](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/setup_chain.rs) (Setup sequence), [`src/setup.rs`](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/setup.rs) (First-run setup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop app"]
  node_ui["App UI<br/>[ui.rs]"]
  node_appcore["App orchestration<br/>[main.rs]"]
  node_chat["Chat transcript<br/>[chat.rs]"]
  node_history[("Talk history<br/>[journal.rs]")]
end

subgraph group_live["Live translation"]
  node_audio["PC audio input<br/>[platform.rs]"]
  node_screenfeed["Screen feed<br/>[screen_feed.rs]"]
  node_captions["YouTube captions<br/>[background.js]"]
  node_asr["Speech recognition<br/>[nemotron.rs]"]
  node_asrserver["ASR service<br/>[asr_server.py]"]
  node_translator["Translation client<br/>[engine.rs]"]
  node_localmodel["Local translation runtime"]
end

subgraph group_features["Translation features"]
  node_simple["Simple translation<br/>[simple.rs]"]
  node_documents["Document translation<br/>[document.rs]"]
  node_screenocr["Screen and image OCR<br/>[screen_ocr.rs]"]
  node_subtitles["Subtitle tools<br/>[subtitles.rs]"]
  node_readout["Read aloud<br/>[readout.rs]"]
end

subgraph group_setup["Models and setup"]
  node_models["Model selection<br/>[model_catalog.rs]"]
  node_hardware["Hardware assessment<br/>[hardware.rs]"]
  node_setupui["First-run setup<br/>[setup.rs]"]
  node_setupchain["Setup sequence<br/>[setup_chain.rs]"]
  node_installer["Model installer<br/>[installer.rs]"]
  node_speechsetup["Speech preparation<br/>[speech_setup.rs]"]
end

subgraph group_speech["Speech and display"]
  node_subtitlewindow["Subtitle window<br/>[subtitle_window.rs]"]
  node_theme["Theme and styling<br/>[theme.rs]"]
  node_voiceprofile["Voice profiles<br/>[voice_profile.rs]"]
end

node_user(("User"))

node_user -->|"uses"| node_ui
node_ui -->|"controls"| node_appcore
node_appcore -->|"captures audio"| node_audio
node_appcore -->|"starts screen feed"| node_screenfeed
node_appcore -.->|"accepts captions"| node_captions
node_appcore -->|"starts recognition"| node_asr
node_asr -.->|"sends audio"| node_asrserver
node_appcore -->|"requests translation"| node_translator
node_translator -->|"calls local API"| node_localmodel
node_appcore -->|"updates transcript"| node_chat
node_chat -.->|"records talks"| node_history
node_appcore -->|"opens feature"| node_simple
node_appcore -->|"opens feature"| node_documents
node_appcore -->|"opens feature"| node_screenocr
node_appcore -.->|"opens feature"| node_subtitles
node_appcore -->|"polls readout"| node_readout
node_appcore -->|"updates window"| node_subtitlewindow
node_setupui -.->|"selects model"| node_models
node_models -->|"checks fit"| node_hardware
node_setupui -->|"plans preparation"| node_setupchain
node_setupchain -.->|"installs components"| node_installer
node_setupchain -.->|"prepares speech"| node_speechsetup
node_appcore -->|"runs setup"| node_setupui
node_subtitlewindow -->|"renders messages"| node_chat
node_chat -.->|"uses styling"| node_theme
node_readout -.->|"uses voice settings"| node_voiceprofile

click node_ui "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/ui.rs"
click node_appcore "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/main.rs"
click node_chat "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/chat.rs"
click node_history "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/journal.rs"
click node_audio "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/platform.rs"
click node_screenfeed "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/screen_feed.rs"
click node_captions "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/extension/background.js"
click node_asr "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/nemotron.rs"
click node_asrserver "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/scripts/asr_server.py"
click node_translator "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/engine.rs"
click node_simple "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/simple.rs"
click node_documents "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/document.rs"
click node_screenocr "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/screen_ocr.rs"
click node_subtitles "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/subtitles.rs"
click node_readout "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/readout.rs"
click node_models "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/model_catalog.rs"
click node_hardware "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/hardware.rs"
click node_setupui "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/setup.rs"
click node_setupchain "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/setup_chain.rs"
click node_installer "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/installer.rs"
click node_speechsetup "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/speech_setup.rs"
click node_subtitlewindow "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/subtitle_window.rs"
click node_theme "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/theme.rs"
click node_voiceprofile "https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/voice_profile.rs"

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_ui,node_appcore,node_chat,node_history,node_user toneBlue
class node_audio,node_screenfeed,node_captions,node_asr,node_asrserver,node_translator,node_localmodel toneAmber
class node_simple,node_documents,node_screenocr,node_subtitles,node_readout toneMint
class node_models,node_hardware,node_setupui,node_setupchain,node_installer,node_speechsetup toneRose
class node_subtitlewindow,node_theme,node_voiceprofile toneIndigo
```

## Components

### Desktop app

- [App UI](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/ui.rs): `src/ui.rs`
- [App orchestration](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/main.rs): `src/main.rs`
- [Chat transcript](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/chat.rs): `src/chat.rs`
- [Talk history](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/journal.rs): `src/journal.rs`

### Live translation

- [PC audio input](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/platform.rs): `src/platform.rs`
- [Screen feed](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/screen_feed.rs): `src/screen_feed.rs`
- [YouTube captions](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/extension/background.js): `extension/background.js`
- [Speech recognition](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/nemotron.rs): `src/nemotron.rs`
- [ASR service](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/scripts/asr_server.py): `scripts/asr_server.py`
- [Translation client](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/engine.rs): `src/engine.rs`
- **Local translation runtime**

### Translation features

- [Simple translation](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/simple.rs): `src/simple.rs`
- [Document translation](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/document.rs): `src/document.rs`
- [Screen and image OCR](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/screen_ocr.rs): `src/screen_ocr.rs`
- [Subtitle tools](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/subtitles.rs): `src/subtitles.rs`
- [Read aloud](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/readout.rs): `src/readout.rs`

### Models and setup

- [Model selection](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/model_catalog.rs): `src/model_catalog.rs`
- [Hardware assessment](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/hardware.rs): `src/hardware.rs`
- [First-run setup](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/setup.rs): `src/setup.rs`
- [Setup sequence](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/setup_chain.rs): `src/setup_chain.rs`
- [Model installer](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/installer.rs): `src/installer.rs`
- [Speech preparation](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/speech_setup.rs): `src/speech_setup.rs`

### Speech and display

- [Subtitle window](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/subtitle_window.rs): `src/subtitle_window.rs`
- [Theme and styling](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/theme.rs): `src/theme.rs`
- [Voice profiles](https://github.com/yebisu0529-ship-it/talk-style-live-translation/blob/main/src/voice_profile.rs): `src/voice_profile.rs`

### Other components

- **User**

## Connections

- User → App UI: uses (evidence: `README.md`)
- App UI → App orchestration: controls (evidence: `src/main.rs`)
- App orchestration → PC audio input: captures audio (evidence: `src/main.rs`)
- App orchestration → Screen feed: starts screen feed (evidence: `src/main.rs`)
- App orchestration → YouTube captions: accepts captions
- App orchestration → Speech recognition: starts recognition (evidence: `src/main.rs`)
- Speech recognition → ASR service: sends audio
- App orchestration → Translation client: requests translation (evidence: `src/main.rs`)
- Translation client → Local translation runtime: calls local API (evidence: `src/engine.rs`)
- App orchestration → Chat transcript: updates transcript (evidence: `src/main.rs`)
- Chat transcript → Talk history: records talks
- App orchestration → Simple translation: opens feature (evidence: `src/main.rs`)
- App orchestration → Document translation: opens feature (evidence: `src/main.rs`)
- App orchestration → Screen and image OCR: opens feature (evidence: `src/main.rs`)
- App orchestration → Subtitle tools: opens feature
- App orchestration → Read aloud: polls readout (evidence: `src/main.rs`)
- App orchestration → Subtitle window: updates window (evidence: `src/main.rs`)
- First-run setup → Model selection: selects model
- Model selection → Hardware assessment: checks fit (evidence: `src/model_catalog.rs`)
- First-run setup → Setup sequence: plans preparation (evidence: `src/setup.rs`)
- Setup sequence → Model installer: installs components
- Setup sequence → Speech preparation: prepares speech
- App orchestration → First-run setup: runs setup (evidence: `src/main.rs`)
- Subtitle window → Chat transcript: renders messages (evidence: `src/subtitle_window.rs`)
- Chat transcript → Theme and styling: uses styling (evidence: `src/chat.rs`)
- Read aloud → Voice profiles: uses voice settings
