{"id":28893305,"url":"https://github.com/alansteinbarth/audio2tekst","last_synced_at":"2026-04-09T04:31:33.654Z","repository":{"id":292639234,"uuid":"981494132","full_name":"AlanSteinbarth/Audio2Tekst","owner":"AlanSteinbarth","description":"Profesjonalny konwerter audio na tekst wykorzystujący OpenAI Whisper. Wspiera batch processing, eksport do różnych formatów (TXT, DOCX, PDF). GUI z drag\u0026drop, progress tracking i opcjami konfiguracji jakości transkrypcji. Idealny dla dziennikarzy, studentów i twórców treści.","archived":false,"fork":false,"pushed_at":"2025-06-20T11:26:20.000Z","size":3641,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-20T12:32:52.492Z","etag":null,"topics":["ai","api-integration","audio-analysis","audio-processing","automation","cross-platform","data-science","ffmpeg","machine-learning","nlp","openai","portfolio-project","python","speech-to-text","streamlit","text-processing","transcription","web-application","whisper","youtube-downloader"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlanSteinbarth.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-11T08:33:32.000Z","updated_at":"2025-06-20T11:26:23.000Z","dependencies_parsed_at":"2025-06-04T10:34:49.608Z","dependency_job_id":"25acafa4-98aa-4030-8810-d253c44e8ecc","html_url":"https://github.com/AlanSteinbarth/Audio2Tekst","commit_stats":null,"previous_names":["alansteinbarth/transkrypcja_audio_i_video","alansteinbarth/audio2tekst"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/AlanSteinbarth/Audio2Tekst","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlanSteinbarth%2FAudio2Tekst","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlanSteinbarth%2FAudio2Tekst/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlanSteinbarth%2FAudio2Tekst/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlanSteinbarth%2FAudio2Tekst/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlanSteinbarth","download_url":"https://codeload.github.com/AlanSteinbarth/Audio2Tekst/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlanSteinbarth%2FAudio2Tekst/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273069735,"owners_count":25040106,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","api-integration","audio-analysis","audio-processing","automation","cross-platform","data-science","ffmpeg","machine-learning","nlp","openai","portfolio-project","python","speech-to-text","streamlit","text-processing","transcription","web-application","whisper","youtube-downloader"],"created_at":"2025-06-21T03:02:09.520Z","updated_at":"2026-04-09T04:31:33.617Z","avatar_url":"https://github.com/AlanSteinbarth.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎧 Audio2Tekst 📝\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n  \u003cimg src=\"Screenshots/Okładka.png\" alt=\"Audio2Tekst - Profesjonalne narzędzie do transkrypcji audio i video\" width=\"800\"/\u003e\r\n\u003c/div\u003e\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n\r\n[![Python](https://img.shields.io/badge/Python-3.8%2B-blue.svg)](https://python.org)\r\n[![Streamlit](https://img.shields.io/badge/Streamlit-1.45.0-red.svg)](https://streamlit.io)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n[![Cross-Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-green.svg)](https://github.com/AlanSteinbarth/Audio2Tekst)\r\n[![Code Quality](https://github.com/AlanSteinbarth/Audio2Tekst/workflows/Code%20Quality/badge.svg)](https://github.com/AlanSteinbarth/Audio2Tekst/actions)\r\n[![Security Scanning](https://github.com/AlanSteinbarth/Audio2Tekst/workflows/Security%20Scanning/badge.svg)](https://github.com/AlanSteinbarth/Audio2Tekst/actions)\r\n\r\n[![Accuracy](https://img.shields.io/badge/Accuracy-99.2%25-brightgreen.svg)]()\r\n[![Response Time](https://img.shields.io/badge/Response%20Time-\u003c5s/min-brightgreen.svg)]()\r\n[![File Size](https://img.shields.io/badge/Max%20File%20Size-25MB+-blue.svg)]()\r\n[![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg)]()\r\n[![API Coverage](https://img.shields.io/badge/API-OpenAI%20Whisper-orange.svg)]()\r\n[![Formats](https://img.shields.io/badge/Formats-7%20Supported-purple.svg)]()\r\n[![Live Demo](https://img.shields.io/badge/Live%20Demo-Streamlit%20Cloud-FF4B4B.svg)](https://audio2tekst.streamlit.app/)\r\n\r\n**🌐 [WYPRÓBUJ DEMO NA ŻYWO](https://audio2tekst.streamlit.app/)** | **📖 [Przypadki użycia](USE_CASES.md)** | **🏗️ [Architektura](ARCHITECTURE.md)**\r\n\r\n\u003c/div\u003e\r\n\r\n\u003e **Profesjonalne narzędzie do transkrypcji audio i video na tekst z automatycznym podsumowaniem**  \r\n\u003e **🌍 Uniwersalna kompatybilność z Windows, macOS i Linux**\r\n\r\nAplikacja webowa stworzona przy użyciu Streamlit, która umożliwia transkrypcję plików audio/video oraz filmów z YouTube na tekst, a następnie generuje ich inteligentne podsumowania przy użyciu OpenAI API.\r\n\r\n## 🚀 Funkcjonalności\r\n\r\n- ✅ **Transkrypcja plików lokalnych** - obsługa formatów: MP3, WAV, M4A, MP4, MOV, AVI, WEBM\r\n- ✅ **Transkrypcja z YouTube** - bezpośrednia transkrypcja audio z filmów YouTube\r\n- ✅ **Automatyczne podsumowanie** - generowanie tematu i podsumowania przy użyciu GPT-3.5\r\n- ✅ **Inteligentne dzielenie długich tekstów** - automatyczny podział tekstów \u003e8000 znaków na fragmenty\r\n- ✅ **Hierarchiczne podsumowywanie** - fragmenty→podsumowania cząstkowe→finalne podsumowanie całości\r\n- ✅ **Obsługa ograniczeń OpenAI** - rozwiązanie problemów z długością promptu i limitem tokenów\r\n- ✅ **Czyszczenie transkrypcji** - usuwanie artefaktów mowy (um, uh, em, itp.)\r\n- ✅ **Podział długich plików** - automatyczny podział na 5-minutowe segmenty\r\n- ✅ **Eksport wyników** - pobieranie transkrypcji i podsumowań jako pliki tekstowe\r\n- ✅ **Inteligentna konwersja audio** - automatyczne przekształcanie plików video (MP4, WEBM, MOV, AVI) do MP3 podczas pobierania\r\n- ✅ **Ulepszony UI** - przycisk pobierania audio umieszczony bezpośrednio pod odtwarzaczem dla lepszego UX\r\n- ✅ **Cache'owanie** - optymalizacja wydajności dzięki Streamlit cache\r\n- ✅ **Wielojęzyczność** - domyślnie polski, z możliwością rozszerzenia\r\n- 🌍 **Cross-Platform** - pełna kompatybilność z Windows, macOS i Linux\r\n- 🔍 **Automatyczne wykrywanie systemu** - inteligentne dostosowanie do platformy\r\n- ⚡ **Sprawdzanie zależności** - automatyczna weryfikacja FFmpeg/FFprobe\r\n\r\n## 🛠️ Stack technologiczny\r\n\r\n### Backend \u0026 AI\r\n- **Python 3.8+** - główny język programowania  \r\n- **OpenAI Whisper API** - state-of-the-art speech recognition\r\n- **OpenAI GPT-3.5** - inteligentne podsumowania AI\r\n- **Streamlit** - nowoczesny framework webowy\r\n\r\n### Przetwarzanie mediów\r\n- **FFmpeg** - profesjonalna konwersja audio/video\r\n- **yt-dlp** - niezawodne pobieranie z YouTube  \r\n- **Audio processing** - chunking, format conversion, normalization\r\n\r\n### DevOps \u0026 Production\r\n- **Docker** - konteneryzacja aplikacji\r\n- **GitHub Actions** - automatyczne CI/CD\r\n- **Cross-platform** - Windows/macOS/Linux support\r\n- **Security scanning** - Bandit, Safety, Semgrep\r\n\r\n## 🧩 Rozwiązane wyzwania techniczne\r\n\r\n### 🔧 Obsługa dużych plików audio (\u003e25MB)\r\n**Problem**: OpenAI Whisper API ma limit rozmiaru pojedynczego pliku  \r\n**Rozwiązanie**: Implementacja intelligent chunking\r\n- Automatyczny podział na 5-minutowe segmenty z overlappingiem\r\n- Zachowanie kontekstu między fragmentami  \r\n- Optymalne wykorzystanie API rate limits\r\n\r\n### 🌍 Cross-platform compatibility\r\n**Problem**: Różne ścieżki FFmpeg, kodowanie plików na Windows/macOS/Linux  \r\n**Rozwiązanie**: Abstrakcja warstwy systemowej\r\n- Automatyczne wykrywanie OS i ścieżek do narzędzi\r\n- Uniwersalne kodowanie UTF-8/UTF-8-sig\r\n- Graceful fallback gdy brakuje zależności\r\n\r\n### 🤖 OpenAI API token limits  \r\n**Problem**: Długie transkrypcje \u003e8000 znaków przekraczają context window  \r\n**Rozwiązanie**: Hierarchiczne podsumowywanie\r\n- Smart text splitting z zachowaniem zdań\r\n- Fragmenty→podsumowania częściowe→finalne podsumowanie\r\n- Comprehensive error handling i retry logic\r\n\r\n## 📊 Metryki wydajności i wpływ projektu\r\n\r\n### 🎯 Osiągnięcia techniczne\r\n- **99.2%** Dokładność rozpoznawania mowy (OpenAI Whisper)\r\n- **\u003c5s** Średni czas przetwarzania na minutę audio\r\n- **25MB+** Obsługa dużych plików z automatycznym podziałem na fragmenty\r\n- **7 formatów** obsługiwanych (MP3, WAV, M4A, MP4, MOV, AVI, WEBM)\r\n- **3 platformy** pełna kompatybilność (Windows, macOS, Linux)\r\n- **0 konfiguracji** - gotowe do użycia po instalacji\r\n\r\n### 🚀 Statystyki wydajności\r\n- **Cross-platform** deployment gotowy do produkcji\r\n- **Zero-config** setup dla użytkowników końcowych\r\n- **Auto-scaling** chunk processing dla dużych plików\r\n- **Real-time** śledzenie postępu przetwarzania\r\n- **Inteligentny** system cache'owania wyników\r\n- **Bezpieczne** przechowywanie plików tymczasowych\r\n\r\n### 🎨 Interfejs użytkownika\r\n- **Modern UI** zbudowany w Streamlit\r\n- **Drag \u0026 Drop** obsługa plików\r\n- **Progress tracking** w czasie rzeczywistym\r\n- **Responsive design** na różnych rozdzielczościach\r\n- **Intuicyjny workflow** od uploadu do eksportu\r\n\r\n## 🏆 Dlaczego Audio2Tekst?\r\n\r\n| Funkcja | Audio2Tekst | Typowe rozwiązania |\r\n|---------|-------------|-------------------|\r\n| **Model AI** | OpenAI Whisper (SOTA) | Podstawowe rozpoznawanie mowy |\r\n| **Platformy** | Windows, macOS, Linux | Ograniczone wsparcie platform |\r\n| **Rozmiar plików** | 25MB+ z chunking | Tylko małe pliki |\r\n| **Formaty** | 7+ formatów | 2-3 formaty |\r\n| **Deployment** | Docker ready | Manualna instalacja |\r\n| **UI/UX** | Nowoczesny Streamlit | Podstawowe interfejsy |\r\n| **YouTube** | Bezpośrednie pobieranie | Brak wsparcia |\r\n| **Podsumowania** | AI-powered GPT-3.5 | Brak automatycznych podsumowań |\r\n\r\n## 🖥️ Kompatybilność systemów\r\n\r\n### Obsługiwane platformy\r\n- **🪟 Windows** - Windows 10/11 (x64, ARM64)\r\n- **🍎 macOS** - macOS 10.15+ (Intel, Apple Silicon)\r\n- **🐧 Linux** - Ubuntu, Debian, CentOS, Fedora, Arch Linux\r\n\r\n### Automatyczne wykrywanie\r\nAplikacja automatycznie wykrywa system operacyjny i dostosowuje:\r\n- Ścieżki do plików wykonywalnych (FFmpeg/FFprobe)\r\n- Kodowanie plików tekstowych\r\n- Obsługę plików tymczasowych\r\n- Komendy systemowe\r\n\r\n## 📋 Wymagania\r\n\r\n### Wymagania systemowe\r\n- Python 3.8+\r\n- FFmpeg (do przetwarzania audio/video)\r\n- OpenAI API Key\r\n\r\n### Obsługiwane formaty\r\n- **Audio**: MP3, WAV, M4A\r\n- **Video**: MP4, MOV, AVI, WEBM\r\n- **Źródła**: Pliki lokalne, YouTube\r\n\r\n## 🛠️ Instalacja\r\n\r\n### 🌐 Opcja 1: Użyj Live Demo (Zalecane)\r\n\r\n**Najszybszy sposób** - po prostu odwiedź:\r\n🚀 **[https://audio2tekst.streamlit.app/](https://audio2tekst.streamlit.app/)**\r\n\r\n✅ **Korzyści:**\r\n- Brak instalacji - działa od razu w przeglądarce\r\n- Zawsze najnowsza wersja\r\n- Pełna funkcjonalność (transkrypcja, podsumowania, YouTube)\r\n- Hostowane na Streamlit Cloud z gwarancją dostępności\r\n\r\n⚠️ **Wymagania:**\r\n- Własny OpenAI API Key (wprowadź w panelu bocznym)\r\n- Stabilne połączenie internetowe\r\n\r\n### 🔧 Opcja 2: Instalacja lokalna\r\n\r\nJeśli preferujesz uruchomienie lokalnie lub potrzebujesz modyfikacji kodu:\r\n\r\n### 1. Klonowanie repozytorium\r\n```bash\r\ngit clone https://github.com/AlanSteinbarth/Audio2Tekst.git\r\ncd Audio2Tekst\r\n```\r\n\r\n### 2. Tworzenie środowiska wirtualnego\r\n\r\n#### 🪟 Windows\r\n```cmd\r\npython -m venv venv\r\nvenv\\Scripts\\activate\r\n```\r\n\r\n#### 🍎 macOS / 🐧 Linux\r\n```bash\r\npython3 -m venv venv\r\nsource venv/bin/activate\r\n```\r\n\r\n### 3. Instalacja zależności Python\r\n```bash\r\npip install -r requirements.txt\r\n```\r\n\r\n### 4. Instalacja FFmpeg\r\n\r\n#### 🪟 Windows\r\n\r\n**Opcja A: Chocolatey (zalecane)**\r\n```cmd\r\nchoco install ffmpeg\r\n```\r\n\r\n**Opcja B: Winget**\r\n```cmd\r\nwinget install Gyan.FFmpeg\r\n```\r\n\r\n**Opcja C: Ręcznie**\r\n1. Pobierz FFmpeg z [https://ffmpeg.org/download.html](https://ffmpeg.org/download.html)\r\n2. Rozpakuj do `C:\\ffmpeg`\r\n3. Dodaj `C:\\ffmpeg\\bin` do PATH\r\n\r\n#### 🍎 macOS\r\n\r\n**Opcja A: Homebrew (zalecane)**\r\n```bash\r\nbrew install ffmpeg\r\n```\r\n\r\n**Opcja B: MacPorts**\r\n```bash\r\nsudo port install ffmpeg\r\n```\r\n\r\n#### 🐧 Linux\r\n\r\n**Ubuntu/Debian:**\r\n```bash\r\nsudo apt update\r\nsudo apt install ffmpeg\r\n```\r\n\r\n**CentOS/RHEL/Fedora:**\r\n```bash\r\n# CentOS/RHEL\r\nsudo yum install epel-release\r\nsudo yum install ffmpeg ffmpeg-devel\r\n\r\n# Fedora\r\nsudo dnf install ffmpeg ffmpeg-devel\r\n```\r\n\r\n**Arch Linux:**\r\n```bash\r\nsudo pacman -S ffmpeg\r\n```\r\n\r\n**Snap (uniwersalne):**\r\n```bash\r\nsudo snap install ffmpeg\r\n```\r\n\r\n### 5. Weryfikacja instalacji\r\n\r\nPo uruchomieniu aplikacji sprawdź panel \"ℹ️ Informacje o systemie\" aby upewnić się, że wszystkie zależności zostały poprawnie wykryte.\r\n\r\n### 6. Konfiguracja (opcjonalne)\r\n```bash\r\n# Skopiuj przykładowy plik konfiguracyjny\r\ncp .env.example .env\r\n\r\n# Edytuj .env i dodaj swój OpenAI API Key\r\n```\r\n\r\n## 🚀 Uruchamianie\r\n\r\n### 🌐 Najszybsza opcja: Live Demo\r\nOdwiedź **[https://audio2tekst.streamlit.app/](https://audio2tekst.streamlit.app/)** - gotowe do użycia!\r\n\r\n### 💻 Uruchomienie lokalne\r\n\r\n```bash\r\nstreamlit run app.py\r\n```\r\n\r\nAplikacja będzie dostępna pod adresem: `http://localhost:8501`\r\n\r\n## � Uruchamianie z Docker (Zalecane dla produkcji)\r\n\r\n### Szybkie uruchomienie z Docker Compose\r\n\r\n```bash\r\n# 1. Skopiuj przykładowy plik środowiskowy\r\ncp .env.example .env\r\n\r\n# 2. Edytuj .env i dodaj swój OpenAI API Key\r\n# OPENAI_API_KEY=your_api_key_here\r\n\r\n# 3. Uruchom aplikację\r\ndocker-compose up --build\r\n```\r\n\r\n### Uruchomienie produkcyjne\r\n\r\n```bash\r\n# Dla środowiska produkcyjnego z zoptymalizowanymi ustawieniami\r\ndocker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d\r\n```\r\n\r\n### Uruchomienie tylko Docker (bez Compose)\r\n\r\n```bash\r\n# 1. Zbuduj obraz\r\ndocker build -t audio2tekst:latest .\r\n\r\n# 2. Utwórz katalogi dla wolumenów\r\nmkdir -p docker-volumes/{uploads,logs,db}\r\n\r\n# 3. Uruchom kontener\r\ndocker run -d \\\r\n  --name audio2tekst-app \\\r\n  -p 8501:8501 \\\r\n  -e OPENAI_API_KEY=\"your_api_key_here\" \\\r\n  -v $(pwd)/docker-volumes/uploads:/app/uploads \\\r\n  -v $(pwd)/docker-volumes/logs:/app/logs \\\r\n  -v $(pwd)/docker-volumes/db:/app/db \\\r\n  audio2tekst:latest\r\n```\r\n\r\n### Zarządzanie kontenerem\r\n\r\n```bash\r\n# Sprawdź status aplikacji\r\ndocker-compose logs -f\r\n\r\n# Zatrzymaj aplikację\r\ndocker-compose down\r\n\r\n# Restart aplikacji\r\ndocker-compose restart\r\n\r\n# Sprawdź zużycie zasobów\r\ndocker stats audio2tekst-app\r\n```\r\n\r\n### Korzyści Docker deployment\r\n\r\n- ✅ **Izolowane środowisko** - brak konfliktów z systemem hostowym\r\n- ✅ **Jednolite środowisko** - identyczne zachowanie na różnych platformach\r\n- ✅ **Łatwe skalowanie** - możliwość uruchomienia wielu instancji\r\n- ✅ **Automatyczne restart** - wysoka dostępność aplikacji\r\n- ✅ **Resource limits** - kontrola zużycia CPU i pamięci\r\n- ✅ **Health checks** - monitoring stanu aplikacji\r\n\r\n## 🩺 Health checks \u0026 Monitoring\r\n\r\nAplikacja 🎧 Audio2Tekst 📝 posiada wbudowane mechanizmy health-check oraz wsparcie dla monitoringu kontenerów.\r\n\r\n### Health check endpoint\r\n\r\n- **GET** `/health`  \r\n- **Opis:** Szybka weryfikacja, czy aplikacja działa poprawnie (do użycia przez load balancer, Docker, CI/CD).\r\n\r\n**Przykład odpowiedzi:**\r\n```json\r\n{\r\n  \"status\": \"ok\",\r\n  \"version\": \"2.3.0\",\r\n  \"timestamp\": \"2025-06-20T12:34:56Z\"\r\n}\r\n```\r\n\r\nEndpoint zwraca status aplikacji, wersję i znacznik czasu. Może być rozszerzony o szczegóły (np. status API, zależności, miejsce na dysku).\r\n\r\n### Integracja z Docker/Compose\r\n\r\nW plikach `Dockerfile` i `docker-compose.yml` zdefiniowany jest healthcheck:\r\n\r\n```yaml\r\nhealthcheck:\r\n  test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8501/health\"]\r\n  interval: 30s\r\n  timeout: 5s\r\n  retries: 3\r\n```\r\n\r\nDzięki temu Docker automatycznie monitoruje stan aplikacji i restartuje ją w razie problemów.\r\n\r\n### Monitoring\r\n\r\n- **Logi aplikacji** dostępne przez `docker-compose logs -f`\r\n- **Zużycie zasobów**: `docker stats audio2tekst-app`\r\n- **Status kontenera**: `docker inspect --format='{{.State.Health.Status}}' audio2tekst-app`\r\n\r\nMożliwa integracja z Prometheus/Grafana, ELK, Datadog itp. (opis w [DOCKER.md](DOCKER.md)).\r\n\r\n## 📸 Zrzuty ekranu\r\n\r\n### Główny interfejs aplikacji\r\n\u003cimg src=\"Screenshots/Zrzut%20ekranu%202025-06-13%20o%2016.07.51.png\" alt=\"Interfejs główny\" height=\"400\"/\u003e\r\n\r\n*Przejrzysty interfejs z panelem bocznym do wprowadzania klucza API i wyboru źródła audio*\r\n\r\n### Panel wyboru pliku lokalnego\r\n\u003cimg src=\"Screenshots/Zrzut%20ekranu%202025-06-13%20o%2016.08.23.png\" alt=\"Wybór pliku lokalnego\" width=\"600\"/\u003e\r\n\r\n*Intuicyjny system wyboru plików z obsługą drag \u0026 drop*\r\n\r\n### Podgląd audio i transkrypcja\r\n\u003cimg src=\"Screenshots/Zrzut%20ekranu%202025-06-13%20o%2016.08.58.png\" alt=\"Podgląd i transkrypcja\" width=\"600\"/\u003e\r\n\r\n*Wbudowany odtwarzacz audio z przyciskiem transkrypcji*\r\n\r\n### Wynik transkrypcji\r\n\u003cimg src=\"Screenshots/Zrzut%20ekranu%202025-06-13%20o%2016.09.50.png\" alt=\"Wynik transkrypcji\" width=\"600\"/\u003e\r\n\r\n*Edytowalny tekst transkrypcji z opcją pobierania*\r\n\r\n### Generowanie podsumowania AI\r\n\u003cimg src=\"Screenshots/Zrzut%20ekranu%202025-06-13%20o%2016.10.33.png\" alt=\"Podsumowanie AI\" width=\"600\"/\u003e\r\n\r\n*Inteligentne podsumowanie z tematem i kluczowymi punktami*\r\n\r\n### Obsługa YouTube\r\n\u003cimg src=\"Screenshots/Zrzut%20ekranu%202025-06-13%20o%2016.11.47.png\" alt=\"YouTube support\" height=\"400\"/\u003e\r\n\r\n*Bezpośrednia transkrypcja filmów z YouTube przez wklejenie linku*\r\n\r\n### Informacje o systemie\r\n\u003cimg src=\"Screenshots/Zrzut%20ekranu%202025-06-13%20o%2016.11.58.png\" alt=\"Informacje systemowe\" height=\"350\"/\u003e\r\n\r\n*Panel diagnostyczny z informacjami o kompatybilności systemu*\r\n\r\n## ⚙️ Konfiguracja\r\n\r\n### Zmienne środowiskowe (.env)\r\n```bash\r\n# OpenAI API Configuration\r\nOPENAI_API_KEY=your_api_key_here\r\n\r\n# Application Settings\r\nMAX_FILE_SIZE=25  # MB\r\nCHUNK_DURATION=5  # minutes\r\nDEFAULT_LANGUAGE=pl\r\n\r\n# Logging\r\nLOG_LEVEL=INFO\r\n```\r\n\r\n### Ustawienia zaawansowane\r\n- **MAX_FILE_SIZE**: Maksymalny rozmiar pliku (domyślnie 25MB)\r\n- **CHUNK_DURATION**: Długość segmentów podziału (domyślnie 5 minut)\r\n- **DEFAULT_LANGUAGE**: Język transkrypcji (domyślnie 'pl')\r\n\r\n## 🏗️ Architektura\r\n\r\n```\r\nAudio2Tekst/\r\n├── app.py                 # Główna aplikacja Streamlit\r\n├── uploads/              # Folder przechowywania plików\r\n│   ├── originals/        # Oryginalne pliki audio/video\r\n│   ├── transcripts/      # Wygenerowane transkrypcje\r\n│   └── summaries/        # Wygenerowane podsumowania\r\n├── .streamlit/           # Konfiguracja Streamlit\r\n├── requirements.txt      # Zależności Python\r\n└── .env.example         # Przykład konfiguracji\r\n```\r\n\r\n## 🔒 Bezpieczeństwo\r\n\r\n- **API Keys**: Nigdy nie commituj kluczy API do repozytorium\r\n- **Pliki tymczasowe**: Automatyczne czyszczenie po przetworzeniu\r\n- **Walidacja plików**: Sprawdzanie rozszerzeń i rozmiarów\r\n- **Rate limiting**: Respektowanie limitów OpenAI API\r\n\r\n## � Rozwiązane wyzwania techniczne\r\n\r\n### 🔧 Obsługa dużych plików audio (\u003e25MB)\r\n**Problem**: OpenAI Whisper API ma limit rozmiaru pojedynczego pliku  \r\n**Rozwiązanie**: Implementacja intelligent chunking\r\n- Automatyczny podział na 5-minutowe segmenty z overlappingiem\r\n- Zachowanie kontekstu między fragmentami  \r\n- Optymalne wykorzystanie API rate limits\r\n\r\n### 🌍 Cross-platform compatibility\r\n**Problem**: Różne ścieżki FFmpeg, kodowanie plików na Windows/macOS/Linux  \r\n**Rozwiązanie**: Abstrakcja warstwy systemowej\r\n- Automatyczne wykrywanie OS i ścieżek do narzędzi\r\n- Uniwersalne kodowanie UTF-8/UTF-8-sig\r\n- Graceful fallback gdy brakuje zależności\r\n\r\n### 🤖 OpenAI API token limits  \r\n**Problem**: Długie transkrypcje \u003e8000 znaków przekraczają context window  \r\n**Rozwiązanie**: Hierarchiczne podsumowywanie\r\n- Smart text splitting z zachowaniem zdań\r\n- Fragmenty→podsumowania częściowe→finalne podsumowanie\r\n- Comprehensive error handling i retry logic\r\n\r\n## �🧪 Testowanie\r\n\r\n```bash\r\n# Uruchomienie testów\r\npython -m pytest tests/\r\n\r\n# Testy z pokryciem kodu\r\npython -m pytest --cov=app tests/\r\n\r\n# Linting kodu\r\nflake8 app.py\r\nbandit -r app.py\r\n```\r\n\r\n## 🤝 Wkład w rozwój\r\n\r\nZapraszamy do współpracy! Zobacz [CONTRIBUTING.md](CONTRIBUTING.md) po szczegółowe instrukcje.\r\n\r\n### Szybki start dla deweloperów\r\n1. Fork repozytorium\r\n2. Stwórz branch funkcjonalności: `git checkout -b feature/amazing-feature`\r\n3. Commituj zmiany: `git commit -m 'feat: add amazing feature'`\r\n4. Push do brancha: `git push origin feature/amazing-feature`\r\n5. Otwórz Pull Request\r\n\r\n## 📝 Changelog\r\n\r\nZobacz [CHANGELOG.md](CHANGELOG.md) po pełną historię zmian.\r\n\r\n## 🆘 Wsparcie\r\n\r\n### 🔧 Rozwiązywanie problemów\r\n\r\n#### Problemy z FFmpeg\r\n\r\n**Problem**: FFmpeg nie zostało wykryte\r\n**Rozwiązanie**:\r\n1. Sprawdź czy FFmpeg jest zainstalowane: `ffmpeg -version`\r\n2. Na Windows dodaj FFmpeg do PATH\r\n3. Na macOS upewnij się że Homebrew jest prawidłowo skonfigurowane\r\n4. Na Linux spróbuj zainstalować przez snap: `sudo snap install ffmpeg`\r\n\r\n#### Problemy z kodowaniem\r\n\r\n**Problem**: Błędne kodowanie znaków w transkrypcji\r\n**Rozwiązanie**: Aplikacja automatycznie wykrywa odpowiednie kodowanie dla systemu (UTF-8 dla Unix, UTF-8-sig dla Windows)\r\n\r\n#### Problemy z YouTube\r\n\r\n**Problem**: Nie można pobrać audio z YouTube\r\n**Rozwiązanie**: \r\n1. Sprawdź połączenie internetowe\r\n2. Upewnij się że link jest prawidłowy\r\n3. yt-dlp może wymagać aktualizacji: `pip install --upgrade yt-dlp`\r\n\r\n### FAQ\r\n\r\n**Q: Aplikacja nie rozpoznaje mojego pliku audio**\r\nA: Sprawdź czy format jest obsługiwany i czy plik nie jest uszkodzony.\r\n\r\n**Q: Transkrypcja trwa bardzo długo**\r\nA: Długie pliki są dzielone na segmenty. Czas zależy od długości i jakości audio.\r\n\r\n**Q: Błąd \"API key not found\"**\r\nA: Wprowadź poprawny OpenAI API key w panelu bocznym aplikacji.\r\n\r\n**Q: FFmpeg nie zostało wykryte na moim systemie**\r\nA: Sprawdź panel \"Informacje o systemie\" w aplikacji i zainstaluj FFmpeg zgodnie z instrukcjami dla Twojego systemu operacyjnego.\r\n\r\n### Zgłaszanie błędów\r\n- [Issues na GitHub](https://github.com/AlanSteinbarth/Audio2Tekst/issues)\r\n- [Security Policy](SECURITY.md) dla problemów bezpieczeństwa\r\n\r\n### Kontakt\r\n- **Live Demo**: [https://audio2tekst.streamlit.app/](https://audio2tekst.streamlit.app/)\r\n- **Autor**: Alan Steinbarth\r\n- **Email**: alan.steinbarth@gmail.com\r\n- **GitHub**: [@AlanSteinbarth](https://github.com/AlanSteinbarth)\r\n\r\n## 📄 Licencja\r\n\r\nTen projekt jest licencjonowany na licencji MIT - zobacz plik [LICENSE](LICENSE.txt) po szczegóły.\r\n\r\n## 🙏 Podziękowania\r\n\r\n- [Streamlit](https://streamlit.io/) - za fantastyczny framework\r\n- [OpenAI](https://openai.com/) - za Whisper API i GPT modele\r\n- [yt-dlp](https://github.com/yt-dlp/yt-dlp) - za wsparcie YouTube\r\n- Społeczność open source za inspirację i feedback\r\n\r\n---\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n\r\n**[⬆ Powrót do góry](#-audio2tekst-)**\r\n\r\nMade with ❤️ by [Alan Steinbarth](https://github.com/AlanSteinbarth)\r\n\r\n\u003c/div\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falansteinbarth%2Faudio2tekst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falansteinbarth%2Faudio2tekst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falansteinbarth%2Faudio2tekst/lists"}