# prathameshpalshikar/sravaani-onnx-live-test architecture

> Architecture diagram of the GitHub repository prathameshpalshikar/sravaani-onnx-live-test, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/prathameshpalshikar/sravaani-onnx-live-test
- Repository: https://github.com/prathameshpalshikar/sravaani-onnx-live-test

## Overview

SraVaani Stage 2 is a local, CPU-based live microphone transcription runner for a pre-existing streaming ONNX INT8 export. The user selects a microphone and model, audio is captured, resampled and queued for a sherpa-onnx recognizer, and transcript updates and a session report are produced. Device listing and CPU inspection support setup and thread experiments. The main script excerpt is partial; links reflect the README and visible implementation, and uncertain internal wiring is omitted.

Main entry points: [`scripts/run_sravaani_onnx_live.py`](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py) (Live runner), [`scripts/system_info.py`](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/system_info.py) (CPU information), [`results`](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/tree/main/results) (JSON report)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Live transcription"]
  node_runner["Live runner"]
  node_capture["Audio capture"]
  node_resample["Resampling"]
  node_audio_queue["Bounded audio queue"]
  node_worker["Inference worker"]
  node_recognizer["Streaming recognizer"]
end

subgraph group_inputs["Inputs and setup"]
  node_model_files["ONNX model files"]
  node_device_listing["Device listing"]
  node_system_info["CPU information<br/>[system_info.py]"]
end

subgraph group_results["Session results"]
  node_transcript["Live transcript"]
  node_metrics["Session metrics"]
  node_report["JSON report"]
end

node_user(("User"))
node_microphone(("Microphone"))

node_user -->|"starts session"| node_runner
node_runner -->|"validates files"| node_model_files
node_runner -->|"lists devices"| node_device_listing
node_user -->|"requests CPU info"| node_system_info
node_microphone -->|"provides audio"| node_capture
node_runner -->|"opens stream"| node_capture
node_capture -->|"passes audio"| node_resample
node_runner -->|"resamples audio"| node_resample
node_runner -->|"enqueues blocks"| node_audio_queue
node_audio_queue -->|"delivers blocks"| node_worker
node_runner -->|"starts worker"| node_worker
node_worker -->|"decodes audio"| node_recognizer
node_model_files -->|"loads model"| node_recognizer
node_worker -->|"sends updates"| node_transcript
node_runner -->|"collects measurements"| node_metrics
node_worker -->|"sends metrics"| node_metrics
node_runner -->|"writes report"| node_report

click node_runner "https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py"
click node_capture "https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py"
click node_resample "https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py"
click node_audio_queue "https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py"
click node_worker "https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py"
click node_recognizer "https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py"
click node_device_listing "https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py"
click node_system_info "https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/system_info.py"
click node_transcript "https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py"
click node_metrics "https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py"
click node_report "https://github.com/prathameshpalshikar/sravaani-onnx-live-test/tree/main/results"

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_runner,node_capture,node_resample,node_audio_queue,node_worker,node_recognizer,node_user toneBlue
class node_model_files,node_device_listing,node_system_info toneAmber
class node_transcript,node_metrics,node_report toneMint
class node_microphone toneIndigo
```

## Components

### Live transcription

- [Live runner](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py): `scripts/run_sravaani_onnx_live.py`
- [Audio capture](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py): `scripts/run_sravaani_onnx_live.py`
- [Resampling](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py): `scripts/run_sravaani_onnx_live.py`
- [Bounded audio queue](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py): `scripts/run_sravaani_onnx_live.py`
- [Inference worker](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py): `scripts/run_sravaani_onnx_live.py`
- [Streaming recognizer](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py): `scripts/run_sravaani_onnx_live.py`

### Inputs and setup

- **ONNX model files**
- [Device listing](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py): `scripts/run_sravaani_onnx_live.py`
- [CPU information](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/system_info.py): `scripts/system_info.py`

### Session results

- [Live transcript](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py): `scripts/run_sravaani_onnx_live.py`
- [Session metrics](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/blob/main/scripts/run_sravaani_onnx_live.py): `scripts/run_sravaani_onnx_live.py`
- [JSON report](https://github.com/prathameshpalshikar/sravaani-onnx-live-test/tree/main/results): `results`

### Other components

- **User**
- **Microphone**

## Connections

- User → Live runner: starts session
- Live runner → ONNX model files: validates files
- Live runner → Device listing: lists devices
- User → CPU information: requests CPU info
- Microphone → Audio capture: provides audio
- Live runner → Audio capture: opens stream
- Audio capture → Resampling: passes audio
- Live runner → Resampling: resamples audio
- Live runner → Bounded audio queue: enqueues blocks
- Bounded audio queue → Inference worker: delivers blocks
- Live runner → Inference worker: starts worker
- Inference worker → Streaming recognizer: decodes audio
- ONNX model files → Streaming recognizer: loads model
- Inference worker → Live transcript: sends updates
- Live runner → Session metrics: collects measurements
- Inference worker → Session metrics: sends metrics
- Live runner → JSON report: writes report
