great-dictator
A browser-based dictation engine for workstation or phone.
In early (alpha) development, but already usable and fun!
Features
- Browser-based audio recording using MediaRecorder API
- Speech-to-text transcription using faster-whisper
- Simple web interface with Record/Stop controls
- File menu for managing transcriptions (Copy, Save, Save As)
- Hexagonal architecture for clean separation of concerns
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Inbound Adapter │
│ (FastAPI + HTML/JS) │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Domain Layer │
│ TranscriptionService ←── TranscriberPort (ABC) │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Outbound Adapter │
│ (WhisperTranscriber) │
└─────────────────────────────────────────────────────────────┘
Installation
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
pip install -e .
Running the Application
source venv/bin/activate
./scripts/dev-server.sh
Or manually:
uvicorn great_dictator.app:app --reload --port 8765
Then open http://localhost:8765 in your browser.
Note: Dev server uses port 8765, E2E tests use port 8766 to avoid conflicts.
Development
# Install test dependencies
pip install -r requirements-test.txt
# Install Playwright browsers
playwright install chromium
# Run all tests
pytest
# Run specific test suites
pytest tests/unit/ # Unit tests
pytest tests/integration/ # Integration tests
pytest tests/e2e/ # End-to-end tests
# Type checking
pyright src/
Project Structure
src/great_dictator/
├── app.py # Composition root
├── domain/
│ └── transcription.py # Domain layer (ports & services)
├── adapters/
│ ├── inbound/
│ │ └── fastapi_app.py # FastAPI routes
│ └── outbound/
│ └── whisper_transcriber.py # Whisper implementation
└── static/
└── index.html # Web UI
tests/
├── unit/ # Domain layer tests
├── integration/ # Adapter tests
└── e2e/
├── conftest.py # Server fixtures (port 8766)
└── test_dictation_flow.py # Playwright browser tests
scripts/
└── dev-server.sh # Dev server launcher (port 8765)
License
MIT
Metadata
Release files for great-dictator 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| great_dictator-0.1.0.tar.gz | 8.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| great_dictator-0.1.0-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 17.7 kB
Release files / great_dictator-0.1.0.tar.gz
| Download URL | great_dictator-0.1.0.tar.gz |
|---|---|
| Size | 8.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
14081c7bacd67965af507033b6340a688e7c843664cd64d936c23da772ddc7d4
|
|
BLAKE2b-256 checksum How to use checksums |
7b3fcd8733eed7dfd87279940bf8e7c0dee45531b97eb28180f90cb8fd385a27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / great_dictator-0.1.0-py2.py3-none-any.whl
| Download URL | great_dictator-0.1.0-py2.py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
b4c9f0dbd0a1e0c434b36a285139701d4e96b16fbfa3cd2071feffb05829fc0f
|
|
BLAKE2b-256 checksum How to use checksums |
0ed52b527de9783a138e99ebc11217821c844ace576a809d4f9c30b9a441f28e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|