Gadanie Gadesa. Rozmaitości. Witajcie w kolejnym odcinku podcastu Gadanie Gadesa. Dzisiaj chciałbym omówić program do transkrypcji o nazwie Whisper oraz graficzną nakładkę na niego pod tytułem Speech Translate. Myślę, że nawet jeśli sami nie przygotowujemy transkrypcji, przynajmniej póki co, no to kto wie czy po zapoznaniu się z tymi narzędziami, no nie rozważymy rozpoczęcia wykonywania transkrypcji do naszych nagrań. W uproszczeniu transkrypcja polega na zapisaniu tekstem słowa mówionego. Można to zrobić ręcznie, czyli po prostu spisywać słyszane słowa z odtwarzanego zapisu audio. Można to zrobić automatycznie, polegając na różnych algorytmach potrafiących rozpoznawać mowę. No i do niedawna albo przepisywaliśmy tekst samodzielnie, co zabierało dużo czasu, tym więcej im mamy mniejszą sprawność wpisywania tekstu do komputera, no albo musieliśmy komuś za to zapłacić. Serwisy w rodzaju HappyScribe do automatycznego tworzenia transkrypcji oferują już język polski, no i komercyjna tego typu usługa zapewnia przynajmniej według właśnie HappyScribe aż 99% skuteczności, ale jedna minuta nagrania będzie nas kosztować prawie 3,5 euro. Rzecz można zlecić także firmom, gdzie nad naszymi treściami usiądzie prawdziwy człowiek i zapisze je słowo po słowie. Tutaj opłaty są zróżnicowane, często można płacić albo za minutę nagrania, między 3 a 8 złotych zazwyczaj, no albo za porcję znaków, na przykład 1800 znaków to jest jakieś 6 do 12 złotych. Ale można sobie zadać pytanie, po co w ogóle zajmować się transkrypcjami? W moim przypadku był to powód czysto utylitarny, no bo czasem chciałbym wiedzieć w którym odcinku podcastu zawarłem jakieś słowa, czy testowałem jakąś rzecz, czy wymieniłem na przykład nazwę producenta, czy nie wiem, no cokolwiek z takich rzeczy, a że już minąłem setny odcinek, no to przesłuchiwanie odcinków, w poszukiwaniu tego jednego, gdzie potencjalnie mogłem coś takiego powiedzieć, zaczyna być coraz bardziej żmudne i czasochłonne. W przypadku posiadania całkiem niezłych transkrypcji, mogę odcinki przeszukać tekstowo, co trwa bardzo krótko i jest zazwyczaj bardzo skuteczne. Tworzenie transkrypcji to także sposób, żeby udostępnić swoje materiały osobom, dla których podcasty audio są z tego czy innego powodu nieosiągalne. To także ukłon w stronę tych, którzy dany odcinek wolą szybko przeczytać, no bo akurat nie mają możliwości odsłuchania go, bo powiedzmy, nie wiem, podróżują w bardzo głośnym pociągu, a chcą się szybko dowiedzieć czegoś. No to lepiej, żeby przeczytali nasz odcinek niż poszli na przykład gdzieś indziej zupełnie. Przy tym warto mieć na uwadze, że wielu ludzi czyta szybciej niż my mówimy, więc jest to też efektywniejsze. To spostrzeżenie prowadzi nas do myśli, że możemy transkrypcję wykorzystać do stworzenia artykułu na bloga, a w przypadku, gdy publikujemy w serwisie YouTube na przykład, możemy użyć takiego tekstu do stworzenia napisów, które później mogą być stosunkowo łatwo automatycznie tłumaczone na inne języki. To tłumaczenie zwykle nie jest jakieś bardzo doskonałe, przynajmniej na razie, no ale daje już jakiś obraz tego, o czym się mówi. Jeszcze innym powodem może być łatwiejsze indeksowanie treści tekstowych niż głosowych przez wyszukiwarki, no przynajmniej w obecnej chwili, co może podskutkować łatwiejszym wyszukiwaniem naszej audycji czy naszych stron. Tak przynajmniej przekonują firmy, które dokonują transkrypcji, no to jest w sumie w ich interesie, ale myślę, że jest tutaj jakiś ziarno prawdy. W połowie grudnia 2022 roku opisywałem na blogu program Whisper, którego działanie oparto o modele sieci neuronowych, trenowanych do rozpoznawania wielu języków, w tym języka polskiego. Ten program podsunął mi Piotr Bartkowski, którego pozdrawiam w tym miejscu, bo naprawdę wciągnąłem się w to, więc warto było się przyjrzeć. Jakby zasada działania Whispera jest dosyć prosta. Wskazuje się mu plik audio z nagraniem oraz wybiera model sieci, który ma być wykorzystywany podczas dokonywania transkrypcji. Takich modeli jest pięć do wyboru, przynajmniej w tej chwili. Modele różnią się skutecznością działania, ale też czasem potrzebnym do wykonania transkrypcji. Im bardziej złożony jest model, tym dokładność transkrypcji jest większa, ale niestety czas przetwarzania dłuższy. Z Whisperem jako takim jest pewien problem. To jest projekt, który stosunkowo trudno uruchomić na swoim domowym komputerze. Trzeba zainstalować język programowania Python, repozytorium Git, a jeśli chcemy skorzystać ze sprzętowego wsparcia karty graficznej, które potrafi bardzo skrócić czas transkrypcji, no trzeba też ten element skonfigurować. To sprawia, że zadanie wydaje się niewykonalne, zwłaszcza dla osoby z takim mniej informatycznym wykształceniem. Na szczęście istnieje też projekt Speech Translate, który jest tak naprawdę w pewnym sensie nakładką graficzną na Whispera i zawiera dodatkowo niemal wszystkie pliki potrzebne do uruchomienia transkrypcji. Po szczegóły techniczne odeślę do artykułu na blogu, bo trudno mi tutaj w nie wchodzić w takiej postaci mówionej, ale generalnie sprawa jest dużo prostsza zarówno podczas instalacji, jak i podczas korzystania z tego programu. Osoby korzystające z Whispera albo ze Speech Translate'a mogą narzekać na dwie rzeczy. Po pierwsze czasochłonność transkrypcji oraz dokładność tej transkrypcji. Niestety, jeżeli korzystamy wyłącznie z głównego procesora komputera, to te bardziej złożone, dokładniejsze modele sieci, nazwane Medium oraz Large działają bardzo długo. Ale to one dają właśnie największą precyzję transkrypcji, która, z czego należy sobie zdawać sprawę, i tak niemal nigdy nie będzie stuprocentowa. Więc tekst transkryptu należy zawsze przeczytać przed publikacją, bo można tam znaleźć czasami dosyć ciekawe kwiatki, mówiąc kolokwialnie. Moje doświadczenie wskazuje, że faktycznie najlepiej działa model Large, ten największy i tutaj błędów jest naprawdę niewiele. Także poprawianie tekstu trwa praktycznie tyle, ile jego przeczytanie, bo tutaj nie ma za bardzo co poprawiać. Model Medium też sobie nieźle całkiem radzi, dopiero przy modelu Small, czyli takim w środku stawki, pojawiają się od czasu do czasu większe niedociągnięcia. Modele najprostsze, czyli Base i ten najmniejszy Tiny, dają transkrypcję czytelną, powiedzmy, w większości wypadków, ale jednak wymagającą poprawek. I to czasami większych, zwłaszcza przy tym najmniejszym modelu. Z tego względu w zasadzie wydaje mi się, że nie warto korzystać z tego najmniejszego modelu, nazwanego Tiny, no bo faktycznie jakość transkrypcji zależy w nim w dużym stopniu chyba od szczęścia tak naprawdę, bo czasem jest znośnie, a czasem nie jest znośnie. Model Base jest już używalny, chociaż liczba błędów niestety jest zauważalnie wyższa niż w następnym w kolejności modelu Small. Osobiście polecam korzystanie z modelu Large, albo przynajmniej Medium, jeśli chcemy być zadowoleni i nie tracić wiele czasu na poprawkach. No ale tutaj wracamy do problemu wydajności. W zasadzie używalność Whispera, czy Speech Translator zależy w bardzo dużym stopniu od mocy obliczeniowej naszego komputera. Ja mam 10-letni procesor Intel i5-3570K i 24 GB pamięci, więc jak na 10-letni procesor to nie jest jakoś bardzo źle, ale oceniam ten zestaw za wystarczający dla modelu Small. Niestety, te wyższe modele to już czasy przetwarzania będące wielokrotnością czasu trwania materiału audio. Kiedy robiłem testy, to 8-minutowy odcinek numer 49 mojego podcastu był przez procesor i model Large przetwarzany przez półtorej godziny. No prawie tam, bez dwóch minut. Ale prawie półtorej godziny. Lepiej się sprawdził bardziej współczesny procesor i7-4790, który ten sam odcinek przetwarzał modelem Large około 35 minut, więc już sporo krócej. Zapewne dzisiejsze procesory i9 poradziłyby sobie jeszcze szybciej, no ale akurat nie mam do żadnego tego typu procesora dostępu, więc tego nie sprawdzę. Chyba, że ktoś z Was będzie próbował na takim mocnym procesorze, no to wtedy proszę o informacje, jakie dostaliście wyniki. Można przetwarzać właśnie ten odcinek 49, żeby była jakaś wspólna baza do porównań. Na szczęście jest wyjście z tej sytuacji takiej bardzo niskiej wydajności. Trzeba mieć po prostu odpowiednią kartę graficzną. Odpowiednią w tym wypadku oznacza kartę firmy Nvidia, obsługującą technologię CUDA, CUDA, CUDA, a do tego jeszcze dysponującą dużą pamięcią własną RAM. 6, 8, a najlepiej nawet więcej niż 10 GB pamięci. W takim scenariuszu można przetwarzanie przepuścić właśnie przez jednostki obliczeniowe karty graficznej, a karta graficzna jest bardzo dobra w przeliczaniu bardzo dużej liczby danych. No i zysk jest natychmiastowy. To samo nagranie, o którym wspomniałem wcześniej, czyli ten 8-minutowy odcinek numer 49, modelem Large procesuje się na karcie GeForce RTX 3060 z 12 GB pamięci w 3 minuty z małym haczykiem. Więc mamy 3 minuty kontra półtorej godziny. Myślę, że różnica jest kolosalna i łatwo zauważalna dla każdego chyba. Podkreślę jeszcze raz, że w tym wypadku istotna jest, bardzo istotna jest, ilość pamięci na karcie graficznej, bo to od niej zależy, którego modelu będzie można użyć. Te najmniejsze modele, Tiny i Base, wymagają około 1 GB pamięci. Model Small wymaga 2 GB pamięci, ale model Medium wymaga już 5 GB pamięci na karcie graficznej, zaś Large około 10 GB. No więc jeśli już chcemy na przykład zainwestować w jakąś kartę graficzną i myślimy o tym, żeby korzystać z Whispera, no to dobrze byłoby mieć te 12 GB przynajmniej. No i tutaj chciałbym jeszcze zwrócić uwagę na jedną rzecz, bo sama transkrypcja robiona na tak wysokim poziomie, jaką zapewnia właśnie program Whisper, to już jest rzecz godna zauważenia. Ale Whisper posiada dodatkową możliwość, którą jest tworzenie napisów w formacie SRT. To znaczy, żeby być precyzyjnym, to Speech Translate tworzy automatycznie oprócz pliku TXT z transkrypcją, także plik SRT, zaś z gołego Whispera trzeba sobie te dane wyciągnąć odpowiednim skryptem. Niemniej da się tworzyć automatycznie napisy do filmów. Wystarczy wyeksportować z programu do obróbki wideo samą ścieżkę dźwiękową, najlepiej bez muzyki czy efektów, które mogą wpływać na skuteczność transkrypcji, po czym przetworzyć tak uzyskany plik audio za pomocą Speech Translate. No i plik SRT jest w tym momencie gotowy do wykorzystania, czy to w programie do edycji wideo, bo zazwyczaj można tam wrzucać jakieś ścieżki z napisami, czy też można taki plik od razu wrzucać na YouTube'a jako napisy. Ja testowałem takie rozwiązanie w DaVinci Resolve i można tam dodać ścieżkę typu subtitle, ale też już wrzucałem na przykład do rozmowy z Lucjanem Borkowskim, są wrzucone napisy i też to działa. Oczywiście napisy, ten plik SRT warto wczytać sobie chociażby do systemowego notatnika, żeby nie było tam jakichś błędów, usterek, no bo skoro już to gdzieś publikujemy oficjalnie, to warto by było chociaż to raz przeczytać. Podsumowując, Whisper i zwłaszcza Speech Translate są bardzo dobrymi, darmowymi narzędziami do transkrypcji w mojej ocenie. Transkrypcja przy wykorzystaniu modeli Small, a zwłaszcza Medium i Large jest też w mojej opinii bardzo dobrej jakości. No i jedyną poważną wadą, jeśli w ogóle tak można mówić, jest ogromny apetyt na moc obliczeniową, więc dobrze jest posiadać bardzo szybki komputer, albo przynajmniej nowoczesną szybką kartę graficzną NVIDIA z technologią CUDA, CUDA, CUDA i dużą pamięcią. Inaczej po prostu się naczekamy na efekty. Jeśli ktoś może sobie zapuścić komputer na noc, to może obrabiać to samym procesorem, jeśli nie, to warto się rozejrzeć za jakąś kartą graficzną. Sam Whisper jest ponadto dosyć skomplikowany w instalacji, dlatego prawdopodobnie większość osób będzie korzystała z niego pod postacią Speech Translata, do czego namawiam, żeby chociaż sobie spróbować. Zachęcam do wypróbowania generalnie. Link do projektu Speech Translate znajdziecie w opisie odcinka. Tam również zamieszczę linki do artykułów na blogu, które dotyczyły obu programów, czyli tego gołego Whispera, jak i Speech Translata. Ja w każdym razie przetworzyłem sobie już wszystkie dotychczasowe odcinki, a w odcinku numer 97, czyli w rozmowie z Lucjanem Borkowskim, są też te napisy wykorzystane wprost na YouTubie, więc możecie sobie przejrzeć jak to wygląda. No i co? To tyle na dzisiaj. Do usłyszenia! .