[K] SubtitleJoiner

Omawiany dzisiaj program to bardzo proste narzędzie, które ma dość nieoczywisty cel. Otóż jeśli generujemy sobie transkrypcje, np. za pomocą programu Whisper, w efekcie najczęściej dostajemy plik napisów w formacie srt. To połączenie rozpoznanego tekstu oraz znaczników czasowych, dzięki czemu taki plik można wykorzystać, wrzucając go bezpośrednio do serwisu YouTube lub osadzając w pliku wideo (DaVinci Resolve posiada na przykład taką możliwość).

Czasem jednak napisy są bardzo rozdrobnione, a chciałoby się na ekranie zmieścić trochę większą ich część. Na razie Whisper, zwłaszcza w tej przeniesionej do C++ szybkiej wersji, nie wspiera czegoś takiego, jak grupowanie poszczególnych sentencji np. pod względem czasowym. A że "w narodzie" była taka potrzeba, napisałem SubtitleJoinera, który choć pobieżnie rozwiązuje problem.

Jak używać?

Program jest prosty do bólu i w związku z tym ma swoje ograniczenia, ale koniec końców to do użytkownika należy decyzja, czy te ograniczenia będą zbyt wielkie.

Po pobraniu archiwum zip z programem należy to archiwum rozpakować gdzieś na dysku i uruchomić (kliknąć dwukrotnie) plik SubtitleJoiner.bat. Powinno to spowodować uruchomienie właściwego programu, chociaż czasem system Windows może podnieść alarm, że uruchamiamy jakiś podejrzany kod. We wspomnianym archiwum wirusów nie ma, więc można zezwolić na uruchomienie. Na ekranie powinno pojawić się mniej więcej takie okienko (być może w momencie, gdy to czytasz, dostępna jest już nowsza wersja, która może wyglądać ciut inaczej):

Teraz trzeba wczytać plik srt, w którym chcemy pogrupować poszczególne linie w większe grupy - można skorzystać z przycisku Open lub przeciągnąć plik na okno programu:

Grupować można na trzy sposoby: po kilka linii (Lines), ze względu na liczbę znaków w grupie (Average characters) albo ze względu na czas, jaki dane transkrypcje zajmują w pliku srt (Grouping time). O trybie grupowania decydujemy samodzielnie, wybierając jedną z opcji na dole okna i wpisując albo liczbę linii do połączenia, albo oczekiwaną średnią liczbę znaków, albo czas trwania w sekundach.

Po ustaleniu parametrów pozostaje nacisnąć przycisk Convert i program "poskleja" frazy w większe grupy:

Teraz można zapisać efekty, korzystając z polecenia Save... i podając nazwę pliku wynikowego (warto nie nadpisywać pliku oryginalnego na wypadek, gdybyśmy po fakcie odkryli, że jednak warto byłoby zmienić parametry łączenia i przeprowadzić proces jeszcze raz).

I to tyle

Na tym - póki co - działanie programu się kończy. Warto pamiętać, że chociaż SubtitleJoiner rozpoznaje np. końce zdań i grupy zawsze kończą się kropką (chyba że łączy w trybie linii), to jednak nie analizuje w żaden inny sposób treści, więc jeśli w transkrybowanym tekście rozmawia kilka osób, to i tak ich wypowiedzi zostaną połączone w jeden ciąg, co dla słuchacza może być dość dziwaczne. Także ustawienie zbyt małych lub zbyt dużych limitów może skutkować tym, że np. tekst będzie mocno "poszatkowany" lub przeciwnie, nie będzie się mieścił na ekranie, bo będzie zbyt długi. No, ale w razie kłopotów można użyć pliku oryginalnego...

PostScriptum

Obecnie do pobrania jest wersja 1.5, w której poprawiłem kilka mniejszych usterek, występujących podczas łączenia oraz dodałem funkcję kopiowania do schowka skonwertowanych napisów w postaci akapitów:

Kopiujemy skonwertowany plik do schowka...

Ta ostatnia funkcja okazuje się być przydatna dla mnie - czasem zdarza mi się nagrywać szkic odcinka podcastu zupełnie spontanicznie i wówczas przydaje się możliwość zrobienia transkrypcji, uporządkowania jej i przygotowania na tej bazie gotowego odcinka. Zdecydowanie wygodniej sprawdza się i edytuje tekst w postaci dłuższych akapitów, nawet jeśli nie są wydzielone logicznie, tylko na podstawie kryterium długości:

...i wklejamy do edytora tekstowego, tutaj: do CudaText

A że mnie się ten sposób korzystania z SubtitleJoinera sprawdza, to dlaczego tego nie upublicznić?

Komentarze