# mozilla/deepspeech architecture

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

- Interactive diagram: https://gitdiagram.com/mozilla/deepspeech
- Repository: https://github.com/mozilla/deepspeech

## Overview

DeepSpeech is a speech-to-text engine with a training workflow that prepares audio/transcripts, builds training batches, trains and checkpoints an acoustic model, then evaluates or exports it for inference. Runtime recognition is exposed through native bindings, including a .NET client; CTC beam search and optional language-model scoring support decoding. Dataset import, audio augmentation, and language-model preparation are distinct supporting capabilities. Edges use the supplied excerpts and SOURCE INDEX references; unsampled runtime relationships are omitted where the evidence does not establish them.

Main entry points: [`training/deepspeech_training/train.py`](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/train.py) (Model trainer), [`training/deepspeech_training/util/feeding.py`](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/feeding.py) (Feature feeding), [`training/deepspeech_training/util/sample_collections.py`](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/sample_collections.py) (Dataset collections), [`training/deepspeech_training/util/config.py`](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/config.py) (Training config)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data preparation"]
  node_datasets["Dataset collections"]
  node_importers["Dataset importers<br/>[importers.py]"]
  node_audio["Audio processing<br/>[audio.py]"]
  node_augment["Augmentations<br/>[augmentations.py]"]
  node_feeding["Feature feeding<br/>[feeding.py]"]
end

subgraph group_training["Model training"]
  node_config["Training config<br/>[config.py]"]
  node_flags["Run options<br/>[flags.py]"]
  node_trainer["Model trainer<br/>[train.py]"]
  node_checkpoints["Checkpoint handling<br/>[checkpoints.py]"]
  node_evaluation["Evaluation<br/>[evaluate.py]"]
end

subgraph group_runtime["Recognition runtime"]
  node_transcribe["File transcription<br/>[transcribe.py]"]
  node_lm["Language model tools<br/>[generate_lm.py]"]
  node_native["Native speech API<br/>[deepspeech.cc]"]
  node_decoder["CTC beam decoder"]
  node_capi["C API<br/>[deepspeech.h]"]
end

subgraph group_clients["Client interfaces"]
  node_dotnet[".NET client<br/>[DeepSpeech.cs]"]
  node_dotnetapp[".NET console<br/>[Program.cs]"]
end

node_user(("Speech user"))

node_importers -->|"adds datasets"| node_datasets
node_datasets -->|"uses audio"| node_audio
node_datasets -->|"supplies samples"| node_feeding
node_feeding -->|"extracts features"| node_audio
node_feeding -->|"applies transforms"| node_augment
node_trainer -->|"loads batches"| node_feeding
node_trainer -->|"uses settings"| node_config
node_config -->|"reads options"| node_flags
node_config -->|"configures transforms"| node_augment
node_trainer -->|"saves checkpoints"| node_checkpoints
node_trainer -->|"runs evaluation"| node_evaluation
node_user -->|"requests transcription"| node_transcribe
node_transcribe -->|"loads audio"| node_audio
node_transcribe -->|"loads model state"| node_checkpoints
node_user -->|"runs recognition"| node_dotnetapp
node_dotnetapp -->|"calls client"| node_dotnet
node_dotnet -->|"invokes native API"| node_capi
node_native -.->|"decodes outputs"| node_decoder
node_lm -.->|"prepares scorer"| node_decoder

click node_datasets "https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/sample_collections.py"
click node_importers "https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/importers.py"
click node_audio "https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/audio.py"
click node_augment "https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/augmentations.py"
click node_feeding "https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/feeding.py"
click node_config "https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/config.py"
click node_flags "https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/flags.py"
click node_trainer "https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/train.py"
click node_checkpoints "https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/checkpoints.py"
click node_evaluation "https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/evaluate.py"
click node_transcribe "https://github.com/mozilla/deepspeech/blob/master/transcribe.py"
click node_lm "https://github.com/mozilla/deepspeech/blob/master/data/lm/generate_lm.py"
click node_native "https://github.com/mozilla/deepspeech/blob/master/native_client/deepspeech.cc"
click node_decoder "https://github.com/mozilla/deepspeech/blob/master/native_client/ctcdecode/ctc_beam_search_decoder.cpp"
click node_capi "https://github.com/mozilla/deepspeech/blob/master/native_client/deepspeech.h"
click node_dotnet "https://github.com/mozilla/deepspeech/blob/master/native_client/dotnet/DeepSpeechClient/DeepSpeech.cs"
click node_dotnetapp "https://github.com/mozilla/deepspeech/blob/master/native_client/dotnet/DeepSpeechConsole/Program.cs"

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_datasets,node_importers,node_audio,node_augment,node_feeding,node_user toneBlue
class node_config,node_flags,node_trainer,node_checkpoints,node_evaluation toneAmber
class node_transcribe,node_lm,node_native,node_decoder,node_capi toneMint
class node_dotnet,node_dotnetapp toneRose
```

## Components

### Data preparation

- [Dataset collections](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/sample_collections.py): `training/deepspeech_training/util/sample_collections.py`
- [Dataset importers](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/importers.py): `training/deepspeech_training/util/importers.py`
- [Audio processing](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/audio.py): `training/deepspeech_training/util/audio.py`
- [Augmentations](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/augmentations.py): `training/deepspeech_training/util/augmentations.py`
- [Feature feeding](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/feeding.py): `training/deepspeech_training/util/feeding.py`

### Model training

- [Training config](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/config.py): `training/deepspeech_training/util/config.py`
- [Run options](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/flags.py): `training/deepspeech_training/util/flags.py`
- [Model trainer](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/train.py): `training/deepspeech_training/train.py`
- [Checkpoint handling](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/util/checkpoints.py): `training/deepspeech_training/util/checkpoints.py`
- [Evaluation](https://github.com/mozilla/deepspeech/blob/master/training/deepspeech_training/evaluate.py): `training/deepspeech_training/evaluate.py`

### Recognition runtime

- [File transcription](https://github.com/mozilla/deepspeech/blob/master/transcribe.py): `transcribe.py`
- [Language model tools](https://github.com/mozilla/deepspeech/blob/master/data/lm/generate_lm.py): `data/lm/generate_lm.py`
- [Native speech API](https://github.com/mozilla/deepspeech/blob/master/native_client/deepspeech.cc): `native_client/deepspeech.cc`
- [CTC beam decoder](https://github.com/mozilla/deepspeech/blob/master/native_client/ctcdecode/ctc_beam_search_decoder.cpp): `native_client/ctcdecode/ctc_beam_search_decoder.cpp`
- [C API](https://github.com/mozilla/deepspeech/blob/master/native_client/deepspeech.h): `native_client/deepspeech.h`

### Client interfaces

- [.NET client](https://github.com/mozilla/deepspeech/blob/master/native_client/dotnet/DeepSpeechClient/DeepSpeech.cs): `native_client/dotnet/DeepSpeechClient/DeepSpeech.cs`
- [.NET console](https://github.com/mozilla/deepspeech/blob/master/native_client/dotnet/DeepSpeechConsole/Program.cs): `native_client/dotnet/DeepSpeechConsole/Program.cs`

### Other components

- **Speech user**

## Connections

- Dataset importers → Dataset collections: adds datasets (evidence: `training/deepspeech_training/util/importers.py`)
- Dataset collections → Audio processing: uses audio (evidence: `training/deepspeech_training/util/sample_collections.py`)
- Dataset collections → Feature feeding: supplies samples (evidence: `training/deepspeech_training/util/feeding.py`)
- Feature feeding → Audio processing: extracts features (evidence: `training/deepspeech_training/util/feeding.py`)
- Feature feeding → Augmentations: applies transforms (evidence: `training/deepspeech_training/util/feeding.py`)
- Model trainer → Feature feeding: loads batches (evidence: `training/deepspeech_training/train.py`)
- Model trainer → Training config: uses settings (evidence: `training/deepspeech_training/train.py`)
- Training config → Run options: reads options (evidence: `training/deepspeech_training/util/config.py`)
- Training config → Augmentations: configures transforms (evidence: `training/deepspeech_training/util/config.py`)
- Model trainer → Checkpoint handling: saves checkpoints (evidence: `training/deepspeech_training/train.py`)
- Model trainer → Evaluation: runs evaluation (evidence: `training/deepspeech_training/train.py`)
- Speech user → File transcription: requests transcription (evidence: `transcribe.py`)
- File transcription → Audio processing: loads audio (evidence: `transcribe.py`)
- File transcription → Checkpoint handling: loads model state (evidence: `transcribe.py`)
- Speech user → .NET console: runs recognition (evidence: `native_client/dotnet/DeepSpeechConsole/Program.cs`)
- .NET console → .NET client: calls client (evidence: `native_client/dotnet/DeepSpeechConsole/Program.cs`)
- .NET client → C API: invokes native API (evidence: `native_client/dotnet/DeepSpeechClient/DeepSpeech.cs`)
- Native speech API → CTC beam decoder: decodes outputs
- Language model tools → CTC beam decoder: prepares scorer
