Whisper czyli nowe fajne do rozpoznawania mowy
Wróć do Nowości, odkrycia, newsy#81 zywek
A ja nie używam zadnych przełączników, żeby go zmusić, żeby działał na gpu, wrzuciłęm mu tylko cuda i cudnn no i zaktualizowałem te torchy, bo miałem z uvr i wtedy nie chciało działać.
#82 pajper
No bo nie trzeba żadnych przełączników. U tomeckiego problem dotyczy właśnie prawdopodobnie tego, że jest uruchamiany z jakiegoś wirtualnego środowiska.
Shoot for the Moon. Even if you miss, you'll land among the stars.
#83 mateponczas
Witajcie.
Słuchajcie, jako, że dostałem zadanie napisania artykułu do Sześciopunktu, napisałem poradnik krok po kroku, jak przygotować Nasz pecet do pracy z tym softem. Z góry zaznaczam, że na początku jest fundacyjny bełkot, bo wiecie, wymogi redakcyjne, ale dalej już miodzio. Miłej lektury.
Whisper, darmowe narzędzie służące do zamiany mowy na tekst.
Mateusz Bobruś
Źródło: publikacja własna, https://www.youtube.com/watch?v=msj3wuYf3d8
We współczesnym świecie coraz bardziej zaczynamy dostrzegać różne grupy osób z niepełnosprawnością, a wszystko to za sprawą ustawy dostępność plus, która w zamierzeniu ma zapewniać dostępność dla wszystkich Nas, a nie tylko, jak to się czasem błędnie mówi, dla osób niewidomych, niedowidzących czy z niepełnosprawnością ruchową. Wśród tej grupy osób możemy wyróżnić także osoby z niepełnosprawnością słuchu. Pozwólcie, drodzy czytelnicy niniejszego czasopisma, że to właśnie Im poświęcę nieco więcej uwagi.
Transkrybcja,ale co to w ogóle jest?
Otóż transkrybcja, to zamiana ludzkiej, naturalnie rozumianej mowy na postać tekstową. Proces ten polega na tym, że transkrybent, czyli osoba przygotowująca taką transkrybcję, zwykle siada do komputera i w bardzo szybki, a za razem dokładny sposób przepisuje to, o czym w danym momencie mówi jakaś osoba lub grupa osób. Zawodowo taką transkrybcją najczęściej zajmują się protokolanci w sądach po to, by potem notatki z rozpraw sądowych mogły posłużyć, na przykład, w dalszym etapie postępowania.
Dla kogo transkrybcja może okazać się przydatna?
Transkrybcja może przydać się również w sytuacji, kiedy materiał dźwiękowy chcielibyśmy udostępnić osobie, która posiada lekki, poważny bądź całkowity niedosłuch. W takim przypadku taka osoba jest nierzadko wykluczona z obejrzenia interesującego materiału. Ponadto takie osoby uważają również, że są mniejszością kulturową! Należy w tym miejscu także podkreślić, że takie usługi są bardzo drogie, co powoduje, że transkrybowanych materiałów jest bardzo mało.
W jaki sposób zatem można przygotować taki materiał z użyciem naszego komputera?
Z pomocą przychodzi nam narzędzie " Whisper", które zostało stworzone przez amerykańską firmę " Open AI", zajmującą się sztuczną inteligencją. Narzędzie to zostało udostępnione 22 września na licencji Open Source. Zdaniem twórców, narzędzie to zawiera modele, czyli specjalne bazy słów i zdań, które zostały stworzone przy pomocy bardzo dużych, ponad 600000 godzinnych nagrań. Dostępnych jest, w zależności od języka i mocy obliczeniowej naszego komputera, pięć modeli: najmniejszy, podstawowy, mały, średni i duży. Im wyższy model wybierzemy, tym jakość pliku wynikowego będzie możliwie jak najwierniejsza oryginałowi.
Nie ma róży bez kolców, czyli rygorystyczne wymagania systemowe.
Aby skrypt rozpoznający i przygotowujący naszą mowę mógł działać prawidłowo, niezbędna jest przede wszystkim wysoce wydajna karta graficzna, posiadająca co najmniej 8 rdzeni GPU, a najlepiej, by nasza karta miała ich 12. W moim przypadku do testów posłużyła karta Nvidia GeForce RTX 3070 TI. Oprócz tego, wymagany jest główny komponent, czyli Python. Bez Python, czyli środowiska programowania, nie będziemy mogli uruchomić naszego skryptu. Producent deklaruje, że najlepszą wersją Python jest wersja 3.9.9, choć w moim przypadku jest to wersja 3.10.7 ( im nowsza wersja, tym lepiej). Kolejnym komponentem będzie repozytorium z plikami programu. Następnie, aby można było dekodować pliki, musimy zainstalować specjalną bibliotekę kodującą / dekodującą ffmpeg2 przy pomocy menedżera pakietów, na przykład "Chocolatey". Kolejnym komponentem jest Nvidia CUDA, czyli sterownik obsługujący rdzenie naszej karty graficznej. Jest on wymagany, ponieważ to właśnie dzięki Naszej karcie graficznej rozpoznawanie może odbyć się w nieporównywalnie szybki sposób, niż jakbyśmy to robili wyłącznie przy użyciu rdzeni naszego procesora. Ostatnim plikiem jest Py Torch wraz z obsługującą biblioteką CUDA, ale o tym w dalszej części artykułu.
Instalacja i pobieranie Python.
Aby pobrać i zainstalować pakiet instalacyjny Python, kliknij w poniższy odnośnik. Po kliknięciu w poniższy odnośnik, pobieranie pakietu instalacyjnego rozpocznie się automatycznie.
https://www.python.org/ftp/python/3.10.7/python-3.10.7-amd64.exe
Po pobraniu pakietu instalacyjnego, należy przejść do folderu z pobranym plikiem, uruchomić go, a następnie postępować zgodnie ze wskazówkami kreatora instalacji. Jedyne, na co należy zwrócić szczególną uwagę, to w przypadku wybrania instalacji standardowej, zaznaczenie pola wyboru " Add Python 3.10 to path". Jeśli to pole wyboru nie będzie zaznaczone, program instalacyjny repozytoria nie będzie mógł zostać dodany do Naszych zmiennych środowiskowych systemu Windows. Po zaznaczeniu tego pola wyboru, należy kliknąć przycisk "Install now". Następnie, po zakończeniu instalacji, należy kliknąć przycisk "Close", aby zamknąć kreatora instalacji.
Instalacja Pytorch.
Aby zainstalować Pytorch, należy wykonać następujące czynności:
1. Naciśnij klawisz WINDOWS, by otworzyć menu start.
2. W polu wyszukiwania, wpisz " Power Shell", naciśnij klawisz menu kontekstowego i STRZAŁKĄ W DÓŁ wybierz opcję "Uruchom jako administrator", aby uruchomić terminal z uprawnieniami administratora, a następnie naciśnij ENTER, by otworzyć terminal " Windows Power Shell".
3. W oknie terminala "Windows Power Shell", wpisz lub wklej następujące polecenie, a następnie naciśnij ENTER, aby je uruchomić:
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
UWAGA! Proces pobierania i instalacji bibliotek " torchvision", " torchaudio" i " cuda" może zająć trochę czasu, w zależności od prędkości Naszego łącza internetowego, dlatego należy uzbroić się w cierpliwość. Po zakończeniu pobierania i instalacji Naszych bibliotek, pojawi się mniej więcej taki komunikat: "Successfully installed "torchvision". Oznacza to, że nasze biblioteki zostały pomyślnie zainstalowane.
Instalacja " Whisper".
Mając wciąż otwarte okienko terminala, wpisz lub wklej następujące polecenie, by zainstalować " Whisper, a następnie naciśnij ENTER, aby je uruchomić:
pip3 install git+https://github.com/openai/whisper.git
Po pomyślnej instalacji, pojawi się taki sam komunikat, jaki pojawił się we wcześniejszym przykładzie.
Instalacja sterownika " Nvidia CUDA".
Aby zainstalować sterownik obsługujący komponent " Nvidia CUDA", kliknij w poniższy odnośnik, pobierz plik instalacyjny, uruchom go, a następnie postępuj zgodnie ze wskazówkami kreatora instalacji pojawiającymi się na ekranie.
https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_522.06_windows.exe
Instalacja menedżera pakietów "Chocolatey".
Jak już wcześniej wspomniałem, potrzebny nam będzie menedżer pakietów " Chocolatey", aby można było zainstalować bibliotekę "FFMPEG2", służącą do wyodrębniania zawartości plików audio / wideo. W tym celu, otwórz nowe okno terminala, a następnie wpisz lub wklej następujące polecenie i naciśnij ENTER, aby je uruchomić:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
Po pomyślnej instalacji " Chocolatey", przyszedł czas na instalację komponentu " ffmpeg2". W tym celu, otwórz nowe okno terminala, a następnie wpisz lub wklej następujące polecenie i naciśnij ENTER, aby je uruchomić:
choco install ffmpeg
Jeśli pojawi się prośba o potwierdzenie instalacji, wpisz " Y", a następnie naciśnij " ENTER", aby potwierdzić instalację.
Sprawdzanie poprawności instalacji sterownika służącego do obsługi komponentu " Nvidia CUDA".
Przed rozpoczęciem rozpoznawania pliku, zalecane jest, by sprawdzić, czy sterownik komponentu " Nvidia CUDA" został prawidłowo zainstalowany i czy jest poprawnie obsługiwany. By to zrobić, otwórz menu start i w polu wyszukiwania, które się pojawi, wpisz " python i naciśnij " ENTER|", aby uruchomić konsolę. W oknie konsoli, wpisz lub wklej następujące polecenia. Po wklejeniu poniższych poleceń, wynik zostanie zwrócony automatycznie, a następnie natychmiast pojawi się w oknie konsoli:
import torch
torch.cuda.is_available()
Jeśli po wpisaniu powyższych poleceń wyświetli się komunikat "TRUE", oznacza to, że sterownik obsługujący komponent " Nvidia CUDA" został pomyślnie zainstalowany i jest gotowy do użycia. Jeśli natomiast po wpisaniu lub wklejeniu powyższych poleceń pojawi się komunikat " FALSE", oznacza to, że jeden lub więcej plików nie zostało prawidłowo zainstalowanych. W takim przypadku należy rozwiązać problem samodzielnie.
Rozpoznawanie przykładowego pliku.
W poniższym przykładzie do sprawdzenia, czy program wszystko rozpoznaje pomyślnie, posłuży Nam przykładowa piosenka i model medium. W tym celu, na dysku c naszego komputera, utwórz folder " piosenki", a następnie wklej przykładowy plik MP3, WAV lub FLAC z piosenką. Należy w tym miejscu zwrócić uwagę, że plik, który chcemy wkleić, powinien zawierać tylko jedno słowo wraz z rozszerzeniem pliku. Załóżmy, że nasz plik będzie się nazywał " zostan.mp3". W tym celu, aby rozpoznać plik, otwórz menu start, a następnie w polu wyszukiwania wpisz " CMD" i naciśnij " ENTER, aby uruchomić wiersz polecenia. Następnie, wpisz następujące polecenia, aby rozpocząć proces rozpoznawania pliku:
cd c:\piosenki
W ten sposób zostaniemy przeniesieni do folderu piosenki, aby program mógł Nam wygenerować pliki tekstowe w formatach SRT, VTT i TXT.
whisper "c:\piosenki\zostan.mp3" --language pl --model medium --device cuda --task transcribe
Jeśli wszystko wykonaliśmy prawidłowo, piosenka powinna zacząć się rozpoznawać, a nasze okienko terminala powinno powoli wypełniać się rozpoznawanym tekstem. Po rozpoznaniu piosenki, skrypt powinien Nam wygenerować 3 pliki: zostan.mp3.srt ( jest to plik z przygotowanymi napisami do pliku z dokładnością co do sekundy), zostan.txt (plik TXT bez napisów), oraz zostan.mp3.vtt ( jest to plik służący do umieszczenia napisów do filmu, na przykład w serwisie YouTube w celu opatrzenia Naszego pliku zamkniętymi napisami).
Podsumowanie:
Po trzech dniach bardzo intensywnych testów, jakie przeprowadzałem na wielu piosenkach i materiałach mówionych, mogę powiedzieć, że choć opisywane narzędzie może okazać się pomocne podczas tworzenia transkrybcji, nie jest ono idealne. Narzędzie ma problem z przekształcaniem nazw własnych, a także rzadko spotykanych słów. Czasem zdarza się również, że w piosence zostanie wypowiedziana niewyraźnie jakaś litera, co powoduje, że litera nie zostaje wstawiona. Wierzę jednak, że z biegiem czasu, społeczność użytkowników z całego świata będzie sukcesywnie udoskonalać powyższy skrypt. Być może na nieco mniejszą dokładność rozpoznanego pliku miał wpływ fakt, iż moja karta graficzna ma mniej rdzeni, co zmusiło mnie na stworzenie transkrybcji w oparciu o model średni. A może, gdybym miał nieco bardziej wydajną kartę graficzną i przygotował plik z użyciem największego modelu, byłoby całkiem inaczej?
#84 tomecki
Ok, zainstalowałem bez venv i działa. Dodatkowo gdy przełącznikiem wymusiłem robienie na gpu to stwierdził, że ten tam enable cuda jest false więc sorry, ale na gpu sem ne da. Ciekawe jest to o tyle, że gdy mu to wpisywałem w pythona ręcznie to szło. Ehh i co ja teraz pocznę gdy okaże się, że muszę mieć dwie, kolidujące ze sobą biblioteki?
#85 papierek
Na integrze to będzie działaćć? Ja wiem, że jedna minuta tekstu będzie robiła się 10 godzin, ale teoretycznie da się to tak uruchomić?
#86 pajper
Nie, bo wydajność integry byłaby w rzeczywistości niższa od wydajności procesora. Więc już lepiej zrobić to na procesorze.
Shoot for the Moon. Even if you miss, you'll land among the stars.
#87 tomecki
Po za tym karta musi obsługiwać CUDA, a to chyba tylko Nvidie potrafią.
Tak w ogóle dorzuciłem kolejną cegiełkę do testów i przerobiłem ten sam, 153 odcinek Tyfloprzegtlądu na modelu medium. U mnie na mobilnym 3070ti ustawionym w trybie silent robiło się 52 minuty.
#88 zywek
KOmuś się udało odpalic large?
#89 papierek
Puściłem 4 minutowy plik dla testu, zobaczę, ile zajmie mi przerobienie tego na cpu.
#90 papierek
Co mogę powiedzieć po krótkim teście, czasem lepiej robi transkrypcję, niż ja bym zrobił. Czasem jakieś słowo padnie strasznie cicho, a on sobie z tym poradzi. Stety albo niestety, może są do tego odpowiednie przełączniki, słowniki, wycina z tekstu przerywniki i wtręty w stylu you know, zamiast tego wstawia przecinek. W sensie robi to bardzo logicznie, bo w sumie jak co chwila w tekście by było you know, you know, hmm i tak dalej to też bez sensu, a wycina tylko tam, gdzie mówiący się zastanawia raczej niż chce coś powiedzieć. A było takie zdanie czy dwa, gdzie było powiedziane jakoś mega niewyraźnie, tak bardziej do siebie i wyłapał, przynajmniej dowiedziałem się czegoś nowego, znowu akurat mam dobry mikrofon.
#91 Pitef
a pomożesz mi to zainstalować? Mam prawdopodobnie wszystko co trza, jednak nie wiem, czy działa u mnie.
#92 papierek
Wiesz co, robiłem dokładnie to, co mateponczas wstawił, warto tylko dodać, że trzeba doinstalować gita.
#93 Pitef
a czy da się zamiast tego całego polecenia zrobić sobie stałe foldery z których importuje i do których eksportuje gotowca? I czy można zrobić skrypty zamiast tego całego polecenia?
#94 papierek
Tak dla informacji, na niskonapięciowym cpu 11 gen transkrypcja na medium 4 minutowego pliku zajęła półtorej godziny bez dodatkowej grafiki. :D
#95 papierek
Nie wiem, nie bawiłem się.
-- (Pitef):
a czy da się zamiast tego całego polecenia zrobić sobie stałe foldery z których importuje i do których eksportuje gotowca? I czy można zrobić skrypty zamiast tego całego polecenia?
--
#96 pajper
To ja poszedłem o krok dalej i porównałem 4 procki, do których miałem dostęp. Wykorzystałem profil medium i piosenkę "Jest taki samotny dom" Budki Suflera, ona trwa niecałe 5 minut.
Na niskonapięciowym I7-7660U trwało to 92 minuty, na AMD Epyc 7351P 68 minut, na I5-4690K 61 minut, i na I7-10750H 38 minut.
Shoot for the Moon. Even if you miss, you'll land among the stars.
#97 zywek
No ja nie wiem, przejaskrawiacie to, mam nagranie, które robiłem na podwórku 4 lata temu, zaimportowałem je i jedyne, co mi z tego wyciąga to co pół minuty zobaczcie co się stało. Model medium, bo mi tu żadnego innego nie uciagnie i gpu.
#98 Pitef
a może ty @Pajper. Wiesz zapewne, czy da się zrobić szybkie skrypty do aktywowania tego narzędzia? Jest tam napewno jedna zmienna w postaci tytułu rozpoznawanego materiału.
#99 zywek
@pitew wszystko się da.
#100 Pitef
masz chwilę na konfy wejść pomóc?