Współpracowaliśmy z Mykytą nad opracowaniem dość skomplikowanego lokalnego programu dla Windows, który automatycznie tworzy pełnoprawne filmy praktycznie bez ręcznego udziału.
Projekt obejmował nie tylko interfejs lub oddzielny skrypt, ale pełny proces produkcyjny. Użytkownik wprowadza temat lub ładuje własny scenariusz, po czym program generuje i pozwala edytować tekst, tworzy lektora za pomocą TTS, dzieli materiał na sceny i poszczególne ujęcia, wyszukuje obrazy i filmy w otwartych licencjonowanych źródłach, sprawdza prawa do użycia, dobiera najbardziej odpowiednie materiały za pomocą LLM i składa gotowy film za pomocą FFmpeg.
W ramach projektu wykonano bardzo dużą ilość pracy.
Został opracowany pełnoprawny interfejs na PySide6 w ciemnym motywie z oddzielnymi ekranami do tworzenia filmów, kolejek, źródeł, ustawień, kluczy API, dzienników i zarządzania projektami.
Podłączono i ujednolicono kilka różnych źródeł obrazów i materiałów wideo — każde ma swój API, strukturę odpowiedzi, ograniczenia i cechy techniczne. Programista nie tylko formalnie je podłączył, ale także osobno sprawdzał rzeczywiste odpowiedzi, eliminował problemy z ograniczeniami, czasem oczekiwania, linkami, jakością obrazów i przekazywaniem kluczy.
Zrealizowano ścisłą filtrację według typów licencji. Program wykorzystuje tylko materiały dozwolone do użytku komercyjnego i automatycznie tworzy obok każdego filmu oddzielny plik z autorami, typami licencji i linkami do oryginalnych materiałów.
Zbudowano wielostopniowy system doboru materiałów pod względem sensu każdej sceny, z uwzględnieniem jakości i historii użycia, aby te same ujęcia nie powtarzały się między filmami. Przewidziano powtórne wyszukiwania i bezpieczne zapasowe opcje, jeśli dokładnego materiału nie ma.
Jądro montażowe stworzone na FFmpeg z przyspieszeniem sprzętowym przez NVIDIA. Program składa filmy w wysokiej rozdzielczości i liczbie klatek, poprawnie przetwarza materiały o różnych proporcjach bez deformacji, dodaje płynny ruch do statycznych obrazów. Zrealizowano elastyczny system ustawień montażowych i stylowych presetów pod różne typy kanałów.
Program automatycznie tworzy wstępny teaser z mocnych momentów filmu, plik z napisami, a w razie potrzeby wstawia napisy do wideo. Zrealizowano również atmosferyczne efekty wizualne z regulowaną intensywnością i podglądem.
Lektorat tworzony jest osobno dla scen za pomocą dostawcy TTS. Nazwa modelu została przeniesiona do ustawień, więc w przypadku zmian ze strony dostawcy można ją wymienić bez poprawiania kodu. W architekturze przewidziano oddzielny wymienny moduł dla alternatywnego dostawcy lektora, który będzie można aktywować w przyszłości.
Programista osobno zmierzył rzeczywistą prędkość różnych głosów i języków oraz przeprowadził automatyczną kalibrację długości scenariusza — program porównuje żądaną i rzeczywistą długość filmu i stopniowo się dostosowuje.
Zrealizowano pełną kolejkę na dziesiątki filmów pod rząd, z możliwością zmiany kolejności, usuwania i sekwencyjnego automatycznego składania. Błąd jednego filmu nie zatrzymuje pozostałych zadań. Kolejka jest zapisywana po zamknięciu programu i kontynuuje pracę z zapisanego stanu.
Szczególną uwagę zwrócono na niezawodność. W przypadku awarii, ponownego uruchomienia komputera, wyczerpania limitów API lub ręcznego zatrzymania program zapisuje już wykonane etapy i kontynuuje pracę od ostatniego udanego kroku, nie płacąc ponownie za już zrealizowane.
Zrealizowano zarządzanie pamięcią podręczną: program automatycznie usuwa pliki tymczasowe, ale zachowuje gotowe filmy, licencje, historię użytych materiałów i kolejkę.
Po każdym składaniu program generuje szczegółowy dziennik z kluczowymi metrykami dla filmu.
Szczególnie chcę podkreślić podejście programisty do testowania i komunikacji. Mykyta regularnie sprawdzał nie tylko fakt uruchomienia programu, ale także rzeczywiste odpowiedzi zewnętrznych serwisów, jakość i koszt pracy, czas składania. Wszystkie znalezione problemy zgłaszał od razu i szczegółowo, nawet gdy wynik okazywał się gorszy od początkowej oceny, i nie próbował ukrywać ani dostosowywać wskaźników — proponował uczciwy plan naprawy, w tym na własny koszt tam, gdzie to było sprawiedliwe.
Taki poziom przejrzystości jest dla mnie szczególnie ważny. Przez cały czas pracy rozumiałem, co już jest gotowe, jakie są ograniczenia i nad czym aktualnie się pracuje.
Na koniec otrzymałem przenośną wersję Windows, która uruchamia się bez oddzielnej instalacji zależności, pełny kod źródłowy bez obfuskacji, szczegółową instrukcję, raport techniczny z pomiarami, testowe filmy i towarzyszące pliki.
Projekt okazał się znacznie bardziej skomplikowany niż zwykły program do automatycznego montażu, ponieważ łączy LLM, TTS, widzenie komputerowe, wiele zewnętrznych API, licencjonowanie treści, FFmpeg, kolejkę zadań i przywracanie po awariach. Mykyta dobrze zrozumiał wszystkie części systemu, zaproponował wiele przydatnych ulepszeń i w niektórych przypadkach sam znajdował problemy, których nie można było dostrzec tylko z początkowego zadania technicznego.
Jestem zadowolony z pracy i komunikacji. Kontynuujemy współpracę nad następnym etapem.