Whisper czyli nowe fajne do rozpoznawania mowy
Back to Nowości, odkrycia, newsy#241 matius
Sprawdzam czy jestem we właściwym katalogu.
dir
dir audio.wav
21 File(s) 6 118 660 bytes
25 Dir(s) 226 042 880 000 bytes free
(base) C:\Users\mateu>dir audio.wav
Volume in drive C is OS
Volume Serial Number is B8C3-4ED1
Directory of C:\Users\mateu
30.11.2022 20:05 0 audio.wav
1 File(s) 0 bytes
0 Dir(s) 226 042 494 976 bytes free
(base) C:\Users\mateu>
(base) C:\Users\mateu>whisper audio.wav
Traceback (most recent call last):
File "C:\Users\mateu\anaconda3\lib\runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\mateu\anaconda3\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\Users\mateu\anaconda3\Scripts\whisper.exe\__main__.py", line 7, in
File "C:\Users\mateu\anaconda3\lib\site-packages\whisper\transcribe.py", line 307, in cli
result = transcribe(model, audio_path, temperature=temperature, **args)
File "C:\Users\mateu\anaconda3\lib\site-packages\whisper\transcribe.py", line 84, in transcribe
mel = log_mel_spectrogram(audio)
File "C:\Users\mateu\anaconda3\lib\site-packages\whisper\audio.py", line 111, in log_mel_spectrogram
audio = load_audio(audio)
File "C:\Users\mateu\anaconda3\lib\site-packages\whisper\audio.py", line 42, in load_audio
ffmpeg.input(file, threads=0)
File "C:\Users\mateu\anaconda3\lib\site-packages\ffmpeg\_run.py", line 313, in run
process = run_async(
File "C:\Users\mateu\anaconda3\lib\site-packages\ffmpeg\_run.py", line 284, in run_async
return subprocess.Popen(
File "C:\Users\mateu\anaconda3\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\mateu\anaconda3\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Nie można odnaleźć określonego pliku
#242 midzi
ale to trzeba wpisać inaczej, np.
whisper audio.wav --model large --language Polish
#243 zywek
Ale to nie ma znaczenia, nie masz plikuffmpeg.exe tam, gdzie jest audio.wav i nic się nie zrobi.
#244 matius
Gdzie więc szukać tego ffmpeg.exe?
#245 DJGraco
NP tu:
https://sourceforge.net/projects/ffmpeg-windows-builds/files/release/n4.3.2/ffmpeg-N-98443-gf719f86990-win64-static.7z/download
Pobierasz plik, rozpakowujesz, i binarki wrzucasz do folderu z wavem.
#246 midzi
@zywek, ale jeśli ffmpeg jest prawidłowo zainstalowany to nie musi być w tym samym katalogu, co plik, powinno się dać go globalnie wywołać.
#247 zywek
MOże, ja nie widziałem nigdzie instalatora ffmpeg, ngdy nie widziałem. Zawsze go wrzucałem do jakiegoś folderu, z którym akurat pracowałem.
#248 midzi
ja na Windowsie zainstalowałem sobie paczkę z chocolatey no i działa mi globalnie
#249 zywek
ah, chocolatey, no to tak można, robi to jeszcze większy śmietnk niż w windowsie sam się robi, ale to już nieważne. Jak działa, to najważniejsze.
#250 papierek
Ja też nie muszę w tym samym folderze, mogę utworzyć dowolny gdziekolwiek.
#251 midzi
Ukazała się druga wersja modelu large, właśnie zasysam:
https://github.com/openai/whisper/commit/4179ed2475cc84cba66868b516232ef1b74dacdf
#252 pajper
Przepraszam za opóźnienie, podrzucam skompilowaną wersję.
Shoot for the Moon. Even if you miss, you'll land among the stars.
#253 Paulinux
Dzięki. Teraz masa pytań.
1. Jak zrobic, żeby on nie uwzględniał domyślnych opcji, na przykład żeby nie tłumaczył jakichś źle przetranskrybowanych słów siłą na angielski?
2. Jak deklarować mu modele do użycia, tj. gdzie je umieścić i jak je nazywać żeby wiadomo było o co kaman?
3. Jakie powinno być przeciętne usage ze skonfigurowanymi opcjami, żeby było fajnie, tj. raczej większa dokładność niż mniejsza, ale co by się komp nie spalił?
#254 violinist Archived
no i co? jak używać tej wersji skompilowanej niby?
#255 Paulinux
Ehh. A już myślałam że mi ktoś odpowiedział na pytania 🙄
#256 pajper
1. Jak zrobic, żeby on nie uwzględniał domyślnych opcji, na przykład żeby nie tłumaczył jakichś źle przetranskrybowanych słów siłą na angielski?
To jest niestety słabość modelu, to samo masz w zwykłym whisperze.
2. Jak deklarować mu modele do użycia, tj. gdzie je umieścić i jak je nazywać żeby wiadomo było o co kaman?
Wszystkie modele są na stronie
https://ggml.ggerganov.com/
te pliki nazywają się we wzorcu ggml-model-whisper-blablabla.bin.
Wystarczy pobrać je, gdziekolwiek zapisać i przekazać jako parametr -m, np.
whisper.cpp -m ggml-model-base.bin plik.wav
Ważna uwaga, whisper.cpp potrafi pracować tylko z plikami wave mono s16le 16kHz, więc najpierw trzeba je do takiego formatu skonwertować. Ze względu na rozmiar, obsługa innych kodeków została usunięta.
Whisper zwykły też pracuje z takim audio, ale wewnętrznie po prostu wszystko na nie konwertuje.
3. Jakie powinno być przeciętne usage ze skonfigurowanymi opcjami, żeby było fajnie, tj. raczej większa dokładność niż mniejsza, ale co by się komp nie spalił?
Domyślne ustawienia są dobre, trzeba tylko dobrać ilość wątków, domyślnie 4.
Ja proponuję ustawić o 1 lub 2 mniej, niż ilość rdzeni logicznych, tak co by działało, ale nie zwiesiło całego komputera.
Shoot for the Moon. Even if you miss, you'll land among the stars.
#257 Paulinux
Wielkie dzięki. Idę testować.
#258 Paulinux
Ej to czekaj, bo tu nie ma rozdzielenia na modele języków. To jak się deklaruje języki?
#259 Paulinux
Kuźwa, jestem w 17 minucie transkrybowania largem pliku 40 minutowego i transkrypcja właśnie osiągnęła 4 minutę. Szczerze spodziewałam się lepszych wyników na tym moim kompie.
#260 tomecki
A u mnie chyba nie działa albo coś źle robię. Wywołałem to to tak: whisper.cpp.exe -f a.wav --model medium.bin -t 18 --language en
bo mam plik angielski. Wcześniej skonwertowałem go do wave 16bit, 16khz, mono. Whisper się uruchomił i pokazał to:
whisper_model_load: loading model from 'medium.bin'
whisper_model_load: n_vocab = 51865
whisper_model_load: n_audio_ctx = 1500
whisper_model_load: n_audio_state = 1024
whisper_model_load: n_audio_head = 16
whisper_model_load: n_audio_layer = 24
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 1024
whisper_model_load: n_text_head = 16
whisper_model_load: n_text_layer = 24
whisper_model_load: n_mels = 80 ┌───────────────────────────┐
whisper_model_load: f16 = 1 │Enter command number: │
whisper_model_load: type = 4 └───────────────────────────┘
whisper_model_load: adding 1608 extra tokens
whisper_model_load: mem_required = 2608.00 MB
whisper_model_load: ggml ctx size = 1462.35 MB
whisper_model_load: memory size = 182.62 MB
whisper_model_load: model size = 1462.12 MB
system_info: n_threads = 18 / 20 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | NEON = 0 | F16C = 0 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 |
main: processing 'a.wav' (3234586 samples, 202.2 sec), 18 threads, 1 processors, lang = en, task = transcribe, timestamps = 1 ...
Załadował sobie sporo do ramu, konkretnie ze 3gb, po czym zaczął ciąć NVDA jakby faktycznie procesor miał co robić, ale wiatraczki chodziły tylko przez chwilę, chociaż zużycie cpu pokazywało koło 40%. Potrzymałem go niecałą godzinę i odpuściłem bez rezultatów. Coś tu chyba nie bangla.