# kushalkumar12/ai-voiceworker-desktop-application architecture

> Architecture diagram of the GitHub repository kushalkumar12/ai-voiceworker-desktop-application, 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/kushalkumar12/ai-voiceworker-desktop-application
- Repository: https://github.com/kushalkumar12/ai-voiceworker-desktop-application

## Overview

VoiceWorker is a JavaFX desktop voice assistant: the user speaks, speech recognition produces text, an AI parser turns it into an intent, and the application can search or perform desktop actions. The repository also contains a separate Spring command-parser API that parses text and may execute registered commands. The README documents capabilities such as silence detection, retry behavior, and API status indicators, but sampled source does not show their wiring; those relationships are omitted.

Main entry points: [`src/main/java/com/voiceworker/MainApp.java`](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/MainApp.java) (JavaFX app), [`command-parser-service/src/main/java/com/voiceworker/parser/service/impl/TextToCommandServiceImpl.java`](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/command-parser-service/src/main/java/com/voiceworker/parser/service/impl/TextToCommandServiceImpl.java) (Text command service), [`src/main/java/com/voiceworker/service/voice/SpeechRecognizer.java`](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/voice/SpeechRecognizer.java) (Speech recognition), [`src/main/java/com/voiceworker/service/voice/HuggingFaceSpeechRecognizer.java`](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/voice/HuggingFaceSpeechRecognizer.java) (Hugging Face ASR)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop assistant"]
  node_main["JavaFX app<br/>[MainApp.java]"]
  node_wave["Wave visualizer<br/>[WaveAnimation.java]"]
  node_locator["Service locator"]
end

subgraph group_ai["AI integrations"]
  node_speech["Speech recognition"]
  node_hf["Hugging Face ASR"]
  node_hf_api{{"Hugging Face API"}}
  node_parser["Gemini parser<br/>[GeminiClient.java]"]
  node_gemini_api{{"Gemini API"}}
end

subgraph group_actions["Command actions"]
  node_search["File and content search<br/>[SearchEngine.java]"]
  node_automation["OS automation"]
  node_search_result["Search result<br/>[SearchResult.java]"]
end

subgraph group_api["Parser API"]
  node_api_client["API client"]
  node_text_service["Text command service"]
  node_ai_adapter["AI adapter<br/>[AiAdapter.java]"]
  node_command_registry["Command registry"]
  node_executors["Command executors"]
  node_api_gemini{{"Gemini service"}}
end

node_user(("User"))

node_user -->|"speaks to"| node_main
node_main -->|"requests recognition"| node_speech
node_speech -->|"implemented by"| node_hf
node_hf -->|"sends audio"| node_hf_api
node_main -->|"submits text"| node_parser
node_parser -->|"requests intent"| node_gemini_api
node_main -->|"displays audio"| node_wave
node_main -->|"gets services"| node_locator
node_main -.->|"requests search"| node_search
node_search -->|"returns results"| node_search_result
node_main -.->|"requests OS action"| node_automation
node_user -->|"submits text"| node_api_client
node_api_client -->|"calls parse"| node_text_service
node_text_service -->|"parses text"| node_ai_adapter
node_ai_adapter -->|"requests intent"| node_api_gemini
node_text_service -->|"gets executor"| node_command_registry
node_text_service -->|"executes command"| node_executors

click node_main "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/MainApp.java"
click node_wave "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/ui/WaveAnimation.java"
click node_locator "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/di/ServiceLocator.java"
click node_speech "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/voice/SpeechRecognizer.java"
click node_hf "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/voice/HuggingFaceSpeechRecognizer.java"
click node_parser "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/parser/GeminiClient.java"
click node_search "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/search/SearchEngine.java"
click node_automation "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/automation/AutomationService.java"
click node_search_result "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/model/SearchResult.java"
click node_api_client "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/command-parser-service/src/main/java/com/voiceworker/parser/controller/CommandController.java"
click node_text_service "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/command-parser-service/src/main/java/com/voiceworker/parser/service/impl/TextToCommandServiceImpl.java"
click node_ai_adapter "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/command-parser-service/src/main/java/com/voiceworker/parser/client/AiAdapter.java"
click node_command_registry "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/command-parser-service/src/main/java/com/voiceworker/parser/parser/CommandRegistry.java"
click node_executors "https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/command-parser-service/src/main/java/com/voiceworker/parser/executor/CommandExecutor.java"

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_main,node_wave,node_locator,node_user toneBlue
class node_speech,node_hf,node_hf_api,node_parser,node_gemini_api toneAmber
class node_search,node_automation,node_search_result toneMint
class node_api_client,node_text_service,node_ai_adapter,node_command_registry,node_executors,node_api_gemini toneRose
```

## Components

### Desktop assistant

- [JavaFX app](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/MainApp.java): `src/main/java/com/voiceworker/MainApp.java`
- [Wave visualizer](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/ui/WaveAnimation.java): `src/main/java/com/voiceworker/ui/WaveAnimation.java`
- [Service locator](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/di/ServiceLocator.java): `src/main/java/com/voiceworker/di/ServiceLocator.java`

### AI integrations

- [Speech recognition](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/voice/SpeechRecognizer.java): `src/main/java/com/voiceworker/service/voice/SpeechRecognizer.java`
- [Hugging Face ASR](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/voice/HuggingFaceSpeechRecognizer.java): `src/main/java/com/voiceworker/service/voice/HuggingFaceSpeechRecognizer.java`
- **Hugging Face API**
- [Gemini parser](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/parser/GeminiClient.java): `src/main/java/com/voiceworker/service/parser/GeminiClient.java`
- **Gemini API**

### Command actions

- [File and content search](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/search/SearchEngine.java): `src/main/java/com/voiceworker/service/search/SearchEngine.java`
- [OS automation](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/service/automation/AutomationService.java): `src/main/java/com/voiceworker/service/automation/AutomationService.java`
- [Search result](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/src/main/java/com/voiceworker/model/SearchResult.java): `src/main/java/com/voiceworker/model/SearchResult.java`

### Parser API

- [API client](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/command-parser-service/src/main/java/com/voiceworker/parser/controller/CommandController.java): `command-parser-service/src/main/java/com/voiceworker/parser/controller/CommandController.java`
- [Text command service](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/command-parser-service/src/main/java/com/voiceworker/parser/service/impl/TextToCommandServiceImpl.java): `command-parser-service/src/main/java/com/voiceworker/parser/service/impl/TextToCommandServiceImpl.java`
- [AI adapter](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/command-parser-service/src/main/java/com/voiceworker/parser/client/AiAdapter.java): `command-parser-service/src/main/java/com/voiceworker/parser/client/AiAdapter.java`
- [Command registry](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/command-parser-service/src/main/java/com/voiceworker/parser/parser/CommandRegistry.java): `command-parser-service/src/main/java/com/voiceworker/parser/parser/CommandRegistry.java`
- [Command executors](https://github.com/kushalkumar12/ai-voiceworker-desktop-application/blob/master/command-parser-service/src/main/java/com/voiceworker/parser/executor/CommandExecutor.java): `command-parser-service/src/main/java/com/voiceworker/parser/executor/CommandExecutor.java`
- **Gemini service**

### Other components

- **User**

## Connections

- User → JavaFX app: speaks to
- JavaFX app → Speech recognition: requests recognition
- Speech recognition → Hugging Face ASR: implemented by
- Hugging Face ASR → Hugging Face API: sends audio
- JavaFX app → Gemini parser: submits text
- Gemini parser → Gemini API: requests intent
- JavaFX app → Wave visualizer: displays audio
- JavaFX app → Service locator: gets services
- JavaFX app → File and content search: requests search
- File and content search → Search result: returns results
- JavaFX app → OS automation: requests OS action
- User → API client: submits text
- API client → Text command service: calls parse
- Text command service → AI adapter: parses text
- AI adapter → Gemini service: requests intent
- Text command service → Command registry: gets executor
- Text command service → Command executors: executes command
