Nagrałeś/wgrywasz audio i w jednym miejscu porównujesz transkrypcje 7 modeli ASR działających w 100% lokalnie (w kontenerach Docker/Linux, które na Windowsie działają przez WSL2).
| Model | Rozmiar | Języki | Licencja | Silnik |
|---|---|---|---|---|
| Faster-Whisper Medium | ~1.5 GB | 99 (w tym pl) | MIT | CTranslate2 |
| Faster-Whisper Small | ~0.5 GB | 99 (w tym pl) | MIT | CTranslate2 |
| Vosk small-pl | ~50 MB | tylko pl | Apache-2.0 | Vosk |
| Qwen3-ASR 0.6B | ~0.7 GB | 30 (w tym pl) | Apache-2.0 | transformers 5.13+ |
| NVIDIA Parakeet TDT 0.6B v3 | ~1 GB | 25 języków UE | CC-BY-4.0 | NVIDIA NeMo (Linux) |
| NVIDIA Canary 1B v2 | ~1.2 GB | 25 języków UE | CC-BY-4.0 | NVIDIA NeMo (Linux) |
| NVIDIA Nemotron 3.5 ASR 0.6B | ~1 GB | 40 locale (pl-PL) | OpenMDW-1.1 | NVIDIA NeMo (Linux) |
Wagi pobierane są do folderu models/ w projekcie (montowany wolumen ./models:/app/models).
docker w wersji 29, docker compose v2# 0. Docker Desktop musi byc uruchomiony; sprawdz silnik
docker version
# 1. Budowa obrazow (pierwszy raz ~10-20 min)
docker compose build
# 2. Pobranie wag modeli do .\models (jednorazowo, kilka GB)
docker compose run --rm download
# 3. Start serwisow
docker compose up -d
# 4. UI: http://localhost:5000
# 5. Test wszystkich modeli na polskiej probce TTS (wyniki na konsoli)
docker compose run --rm api python backend/selftest.py
# 6. Test na wlasnym pliku (wrzuc plik do .\models\audio\, np. test.mp3)
docker compose run --rm api python backend/selftest.py /app/models/audio/test.mp3
# zapis wynikow do pliku:
docker compose run --rm api python backend/selftest.py /app/models/audio/test.mp3 > selftest.log 2>&1
# 7. Logi / zatrzymanie / restart
docker compose logs -f api
docker compose down
docker compose up -d # po restarcie Dockera wystarczy to jedno
# 8. Test po wczytaniu zmienionego kodu backendu (przebudowa kontenera api)
docker compose build api
docker compose up -d
# 9. Czyszczenie od zera
docker compose down --rmi all
Remove-Item -Recurse -Force .\models # usunie pobrane wagi
.\setup.ps1 # buduje obrazy + pobiera modele (jednorazowo, kilka GB)
.\run.ps1 # startuje serwisy i otwiera http://localhost:5000
.\selftest.ps1 # uruchamia selftest na polskiej probce TTS
Następnie w przeglądarce:
Przykładowa fragmentacja:
api (port 5000) — Flask: serwuje UI, konwertuje audio ffmpeg → 16 kHz mono WAV, obsługuje whisper/vosk/qwen i proxy do serwisu NVIDIA.nemo (port wewnętrzny 5001) — osobny kontener z NVIDIA NeMo (potrzebny, bo NeMo nie wspiera Windows natywnie; izolacja zależności torch/transformers) — parakeet/nemotron/canary.download — jednorazowy kontener pobierający wagi do models/.GET /api/models — lista modeli + dostępność wagPOST /api/transcribe (multipart: file, models=JSON tablica id) — transkrypcja wszystkimi zaznaczonymiponytail: modele trzymane są w pamięci po pierwszym załadowaniu (brak ewikcji) — przy 7 wybranych modelach zajmie to ok. 4-6 GB RAM. Dodaj ewikcję LRU, jeśli użyjesz na dziesiątkach plików pod rząd.Nagrałeś/wgrywasz audio i w jednym miejscu porównujesz transkrypcje 7 modeli ASR działających w 100% lokalnie (w kontenerach Docker/Linux, które na Windowsie działają przez WSL2).
| Model | Rozmiar | Języki | Licencja | Silnik |
|---|---|---|---|---|
| Faster-Whisper Medium | ~1.5 GB | 99 (w tym pl) | MIT | CTranslate2 |
| Faster-Whisper Small | ~0.5 GB | 99 (w tym pl) | MIT | CTranslate2 |
| Vosk small-pl | ~50 MB | tylko pl | Apache-2.0 | Vosk |
| Qwen3-ASR 0.6B | ~0.7 GB | 30 (w tym pl) | Apache-2.0 | transformers 5.13+ |
| NVIDIA Parakeet TDT 0.6B v3 | ~1 GB | 25 języków UE | CC-BY-4.0 | NVIDIA NeMo (Linux) |
| NVIDIA Canary 1B v2 | ~1.2 GB | 25 języków UE | CC-BY-4.0 | NVIDIA NeMo (Linux) |
| NVIDIA Nemotron 3.5 ASR 0.6B | ~1 GB | 40 locale (pl-PL) | OpenMDW-1.1 | NVIDIA NeMo (Linux) |
Wagi pobierane są do folderu models/ w projekcie (montowany wolumen ./models:/app/models).
docker w wersji 29, docker compose v2# 0. Docker Desktop musi byc uruchomiony; sprawdz silnik
docker version
# 1. Budowa obrazow (pierwszy raz ~10-20 min)
docker compose build
# 2. Pobranie wag modeli do .\models (jednorazowo, kilka GB)
docker compose run --rm download
# 3. Start serwisow
docker compose up -d
# 4. UI: http://localhost:5000
# 5. Test wszystkich modeli na polskiej probce TTS (wyniki na konsoli)
docker compose run --rm api python backend/selftest.py
# 6. Test na wlasnym pliku (wrzuc plik do .\models\audio\, np. test.mp3)
docker compose run --rm api python backend/selftest.py /app/models/audio/test.mp3
# zapis wynikow do pliku:
docker compose run --rm api python backend/selftest.py /app/models/audio/test.mp3 > selftest.log 2>&1
# 7. Logi / zatrzymanie / restart
docker compose logs -f api
docker compose down
docker compose up -d # po restarcie Dockera wystarczy to jedno
# 8. Test po wczytaniu zmienionego kodu backendu (przebudowa kontenera api)
docker compose build api
docker compose up -d
# 9. Czyszczenie od zera
docker compose down --rmi all
Remove-Item -Recurse -Force .\models # usunie pobrane wagi
.\setup.ps1 # buduje obrazy + pobiera modele (jednorazowo, kilka GB)
.\run.ps1 # startuje serwisy i otwiera http://localhost:5000
.\selftest.ps1 # uruchamia selftest na polskiej probce TTS
Następnie w przeglądarce:
Przykładowa fragmentacja:
api (port 5000) — Flask: serwuje UI, konwertuje audio ffmpeg → 16 kHz mono WAV, obsługuje whisper/vosk/qwen i proxy do serwisu NVIDIA.nemo (port wewnętrzny 5001) — osobny kontener z NVIDIA NeMo (potrzebny, bo NeMo nie wspiera Windows natywnie; izolacja zależności torch/transformers) — parakeet/nemotron/canary.download — jednorazowy kontener pobierający wagi do models/.GET /api/models — lista modeli + dostępność wagPOST /api/transcribe (multipart: file, models=JSON tablica id) — transkrypcja wszystkimi zaznaczonymiponytail: modele trzymane są w pamięci po pierwszym załadowaniu (brak ewikcji) — przy 7 wybranych modelach zajmie to ok. 4-6 GB RAM. Dodaj ewikcję LRU, jeśli użyjesz na dziesiątkach plików pod rząd.