# redhat-et/whisper-self-hosted-llm architecture

> Architecture diagram of the GitHub repository redhat-et/whisper-self-hosted-llm, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/redhat-et/whisper-self-hosted-llm
- Repository: https://github.com/redhat-et/whisper-self-hosted-llm

## Overview

This repository packages a self-hosted Whisper speech-recognition demo. A user uploads a WAV file in the Streamlit client, which posts it to the inference endpoint and displays the returned text. The README also describes Whisper’s multilingual recognition, translation, and language-identification capabilities and the available model sizes. The endpoint implementation and model-loading code are not among the sampled sources, so those internal details are not expanded here.

Main entry points: [`whisper-model-service`](https://github.com/redhat-et/whisper-self-hosted-llm/tree/main/whisper-model-service) (Whisper inference service), [`whisper-model-service/streamlit/whisper_client.py`](https://github.com/redhat-et/whisper-self-hosted-llm/blob/main/whisper-model-service/streamlit/whisper_client.py) (Streamlit client), [`models`](https://github.com/redhat-et/whisper-self-hosted-llm/tree/main/models) (Whisper models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["User interface"]
  node_streamlit["Streamlit client<br/>[whisper_client.py]"]
end

subgraph group_inference["Inference"]
  node_endpoint["Whisper inference service"]
end

subgraph group_models["Model artifacts"]
  node_whisper[("Whisper models")]
end

node_user(("Audio uploader"))

node_user -->|"uploads WAV"| node_streamlit
node_streamlit -->|"posts audio"| node_endpoint
node_endpoint -->|"returns text"| node_streamlit
node_endpoint -->|"uses model"| node_whisper

click node_streamlit "https://github.com/redhat-et/whisper-self-hosted-llm/blob/main/whisper-model-service/streamlit/whisper_client.py"
click node_endpoint "https://github.com/redhat-et/whisper-self-hosted-llm/tree/main/whisper-model-service"
click node_whisper "https://github.com/redhat-et/whisper-self-hosted-llm/tree/main/models"

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_streamlit toneBlue
class node_endpoint toneAmber
class node_whisper toneMint
class node_user toneIndigo
```

## Components

### User interface

- [Streamlit client](https://github.com/redhat-et/whisper-self-hosted-llm/blob/main/whisper-model-service/streamlit/whisper_client.py): `whisper-model-service/streamlit/whisper_client.py`

### Inference

- [Whisper inference service](https://github.com/redhat-et/whisper-self-hosted-llm/tree/main/whisper-model-service): `whisper-model-service`

### Model artifacts

- [Whisper models](https://github.com/redhat-et/whisper-self-hosted-llm/tree/main/models): `models`

### Other components

- **Audio uploader**

## Connections

- Audio uploader → Streamlit client: uploads WAV
- Streamlit client → Whisper inference service: posts audio
- Whisper inference service → Streamlit client: returns text
- Whisper inference service → Whisper models: uses model
