
AvatarDirector
Autonomiczny system zamieniający materiał z folderu w spektakl z animowanym avatarem 3D.
- PROJECT
- AI-037
- JĘZYK
- PYTHON 3.10
- ASR
- FASTER-WHISPER + CUDA
- BACKEND 3D
- BLENDER 5.1 (FALLBACK)
- LLM
- OLLAMA QWEN2.5:14B
- STATUS
- W TRAKCIE
- DATA
- 26 sierpnia 2026
Wrzucasz plik wideo lub audio do folderu In/, a system zwraca w Out/ gotowy, zsynchronizowany film z animowanym avatarem, napisami, transkrypcją i partyturą występu. Zasada reżyserii: audio wyznacza czas, semantyka wyznacza gest, obraz wyznacza kompozycję.
Kursor idzie po ścieżce dźwiękowej, a wszystko poniżej jest do niej przywiązane: usta awatara otwierają się w rytm mowy, znaczniki gestów zapalają się w miejscach, w których model semantyczny znalazł powód do gestu, a pasek ujęć pokazuje zmiany kompozycji kadru. To jest właśnie „audio wyznacza czas, semantyka wyznacza gest, obraz wyznacza kompozycję”.
PROBLEM
Przygotowanie materiału z mówiącym avatarem to zwykle kilka narzędzi i kilka godzin: transkrypcja, synchronizacja ust, dobór gestów, render, montaż, napisy. Przy powtarzalnych materiałach ta praca jest identyczna za każdym razem — czyli jest to praca do zautomatyzowania.
POMYSŁ
Watchfolder zamiast interfejsu. Materiał wrzucony do In/ uruchamia cały łańcuch bez udziału człowieka, a wynik ląduje w Out/. Materiał, który spowodował błąd, trafia do Failed/ razem z raportem i pełnym tracebackiem — nic nie ginie po cichu.
PROJEKT
Przepływ: IN → ANALIZA → REŻYSERIA → WYSTĘP → RENDER → OUT. Para plików o tej samej nazwie bazowej (film.mp4 + film.wav) jest traktowana jako jeden materiał, przy czym osobne audio jest wtedy ścieżką nadrzędną. Samo audio przełącza avatara w tryb pełnoekranowy na neutralnym tle.
Watchfolder ma jeszcze jedną zaletę, której nie planowałem: staje się kolejką. Można wrzucić dwadzieścia plików wieczorem i rano odebrać dwadzieścia gotowych materiałów, bez pilnowania kolejnych uruchomień i bez interfejsu, który trzeba obsługiwać.
Centralnym artefaktem jest partytura występu w formacie performance/v2 — pośredni kontrakt między analizą a renderem, dzięki któremu render da się powtórzyć bez ponownej analizy.
Kolejność w zasadzie reżyserii nie jest przypadkowa. Audio wyznacza czas, bo synchronizacja ust i gestu musi trzymać się ścieżki dźwiękowej co do klatki. Semantyka wyznacza gest, bo gest wynika z treści, nie z amplitudy. Obraz wyznacza kompozycję, bo avatar musi znaleźć w kadrze miejsce, którego nie zasłania.
REALIZACJA
Transkrypcja działa na faster-whisper z akceleracją CUDA, semantykę dostarcza lokalny model przez Ollamę. Backendem docelowym animacji jest Unreal Engine z MetaHumanem — na tej maszynie niezainstalowany, więc pracuje ścieżka zapasowa oparta na Blenderze 5.1.
Wynik to komplet: gotowy film, sam avatar z kanałem alfa do ponownego użycia, napisy SRT, transkrypcja, partytura i raport techniczny.
Osobny plik z avatarem na przezroczystym tle to decyzja praktyczna: pozwala złożyć inny montaż bez powtarzania najdroższego etapu. Diagnostyka środowiska (run.bat --check) sprawdza GPU, whisper i backend avatara, zanim cokolwiek ruszy — to reakcja na przebiegi kończące się błędem po czterdziestu minutach renderu.
EFEKT
W katalogach Processing/ i Out/ leżą przetworzone materiały — pełne przebiegi od audio po zmontowany plik końcowy. Po sukcesie oryginały trafiają automatycznie do Archive/.
GALERIA
01 ZDJĘĆAvatarDirector — klatka z gotowego materiału z folderu Out/ · zrzut z projektu
WNIOSKI
Rozdzielenie analizy od renderu partyturą pośrednią było najlepszą decyzją w tym projekcie. Render można powtórzyć z innym avatarem albo w innej rozdzielczości, nie uruchamiając ponownie transkrypcji, która jest tu najdroższym krokiem.
Warto też odnotować to, czego nie ma: docelowy backend animacji oparty na Unreal Engine z MetaHumanem nie jest na tej maszynie zainstalowany. System działa na ścieżce zapasowej z Blenderem i jest to świadomie udokumentowane w README, a nie przemilczane — inaczej pierwsze uruchomienie u kogoś innego kończyłoby się niezrozumiałym błędem.


