Przedstawiam taki projekt programu wykonany w c++, kompilacja w GCC, który nawiązuje do mojego newsa - link: https://www.elektroda.pl/rtvforum/topic4094932.html#21359382.
Związane jest to z pojawieniem się stabilnej wersji whispera autorstwa G.Gerganova ze strony: https://github.com/ggml-org/whisper.cpp/releases/tag/v1.8.2 .
Program "UruchamiaczSherpaLlamaMulti.exe" jest uruchamiaczem programu: sherpa-onnx-offline-tts-play.exe, do generowania tekstu z użyciem modeli vits, oraz filtrem- przełącznikiem,
który wybiera automatycznie syntezę mowy w danym języku linki niżej.
Program po podaniu np. napisz wiersz słońcu po polsku, napisze i wypowie tekst po polsku, a po podaniu: przetłumacz ten wiersz na np. hiszpański przetłumaczy go i lektor hiszpański to odczyta. Oczywiście filtr nie jest idealny, może sie pomylić,bo większość to języki z łacińskimi współnymi rdzeniami.
Ze strony : https://github.com/k2-fsa/sherpa-onnx/releases ściągamy program: sherpa-onnx-offline-tts-play.exe z bibliotekami, są w paczce w linkach poniżej.
Zalecam dla cpu:
https://github.com/k2-fsa/sherpa-onnx/release...4/sherpa-onnx-v1.12.14-win-x64-shared.tar.bz2
Ściągamy modele ze strony : https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models.
https://github.com/k2-fsa/sherpa-onnx/release...-models/vits-piper-ru_RU-denis-medium.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...models/vits-piper-zh_CN-huayan-medium.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...odels/vits-piper-pl_PL-darkman-medium.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...odels/vits-piper-it_IT-riccardo-x_low.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...ts-models/vits-piper-fr_FR-gilles-low.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...models/vits-piper-es_ES-davefx-medium.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...s-models/vits-piper-en_GB-alan-medium.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...dels/vits-piper-de_DE-thorsten-medium.tar.bz2
Ściągamy najnowszy model Bielika: speakleash.Bielik-11B-v2.6-Instruct.Q2_K.gguf ze strony : https://huggingface.co/DevQuasar/speakleash.Bielik-11B-v2.6-Instruct-GGUF/tree/main
najmniejszy model aby zmieścić w VRAM :https://huggingface.co/DevQuasar/speakleash.Bielik-11B-v2.6-Instruct-GGUF/blob/main/speakleash.Bielik-11B-v2.6-Instruct.Q2_K.gguf
Większe modele Bielika są tu: https://huggingface.co/speakleash/Bielik-11B-v2.6-Instruct-GGUF/tree/main.
Kolekcja ciekawych modeli tu: https://huggingface.co/ggml-org/collections
Ściągamy program whispera - model transformacji mowy do tekstu:
Ściągamy model whispera ggml-large-v3-turbo-q5.bin ze strony: https://huggingface.co/ggerganov/whisper.cpp/tree/main
https://huggingface.co/ggerganov/whisper.cpp/blob/main/ggml-large-v3-turbo-q5_0.bin
Ściągamy program talk_llama.exe z dodatkowymi bibliotekami dla cuda, ze strony: https://github.com/ggml-org/whisper.cpp/releases/tag/v1.8.2
Ma być wersja v1.8.2 z CUDA bo tu trzeba podmienić plik "talk-llama.exe" na mój aby czytał polskie i rosyjskie litery.
Dla cuda: ustawić parametr -ngl 16 (liczba po ngl zależy od wielkości VRAM , dla np. 8GB VRAM można ustawić -ngl 999, wtedy wszystkie warstwy idą do VRAM i inne wątki, to trzeba popróbować i zaczynać od 8,16,32, itd..) w linii poleceń pliku .bat:
https://github.com/ggml-org/whisper.cpp/relea...load/v1.8.2/whisper-cublas-12.4.0-bin-x64.zip
Instrukcja:
-po pobraniu wszystkich plików i umieszczeniu plików wykonywalnych z bibliotekami odpowiednio w katalogu "whisper_talk_llama_8_lang", który przesyłam w załączniku
.rar, są tam puste katalogi modeli dla przykładu jak ma to wyglądać aby działało, trzeba je zapełnić tymi z linków, to wersja dla cuda.
Moja konfiguracja to procesor AMD Ryzen 5 , grafika: Nvidia RTX 3050 z 6GB VRAM.
Dla tych co chcą kod przerobić to trzeba wiedzieć że,program talk-llama.cpp do kompilacji z cuda wymaga biblioteki SDL , bibliotek cuda i Visual Studio 2022 Community.
Polecenia dla kompilacji w konsoli:
set SDL2_DIR=SDL2\cmake
cmake.exe -B build -DWHISPER_SDL2=ON -DGGML_CUDA=ON -DGGML_CUDA_FA_ALL_QUANTS=ON
cmake.exe --build build --config releas
To jest przeróbka jakiej dokonałem w pliku talk-llama.cpp, któraa pozostawia znaki polskie i rosyjskie, dla chińskich to zbyt skomplikowane.
// remove all characters, except for letters, numbers, punctuation and ':', '\'', '-', ' '
// text_heard = std::regex_replace(text_heard, std::regex("[^a-zA-Z0-9åäöÅÄÖ\\.,\\?!\\s\\:\\'\\-]"), "");
//zostawia polskie znaki
// text_heard = std::regex_replace(text_heard, std::regex("[^a-zA-Z0-9ąćęłńóśźżĄĆĘŁŃÓŚŹŻåäöÅÄÖ\\.,\\?!\\s\\:\\'\\-]"),"");
//==========zostawia znaki polskie i znaki rosyjskie
text_heard = std::regex_replace(text_heard,std::regex("[^a-zA-Z0-9ąćęłńóśźżĄĆĘŁŃÓŚŹŻа-яА-ЯёЁåäöÅÄÖ\\.,\\?!\\s\\:\\'\\-]"),"");
Program bez mojej przeróbki talk-llama.cpp też będzie działać ale bez polskich i rosyjskich znaków i może niekiedy błędnie rozumieć mowę.
Może się zdarzyć że program odczyta dwa razy to samo, jest to związane z tym, że gdy czyta tylko program sherpa,
przy krótkich zdaniach może ich nie wypowiedzieć (jakieś opóźniania) i dlatego dodałem dodatkową opcję czytania przez system krótkich plików,
mogą się niekiedy nałożyć.
Działanie w poleceniu start_talkllama_mowa_bielik.bat można modyfikować z innymi modelami jednak plik "mowa2.txt" musi tam być - jako wyjście tekstu,
które jest filtrowane do pliku mowa3.txt i ten jest czytany. Można sprawdzić działanie syntezy uruchamiając tylko program "UruchamiaczSherpaLlamaMulti.exe",
musi być ze wszystkimi innymi plikami jw.,napisać w notatniku zdanie i zapisać w pliku mowa2.txt, powinien je odczytać jak są wszystkie wskazane pliki.
Zachęcam do dalszej rozbudowy zastosowań małych modeli llm dla budżetowych komputerów, dlatego przesyłam też kod źródłowy uruchamiacza w załączniku.
Kompilacja w GCC , c++ standart max c17 w CodeBlocks.
Związane jest to z pojawieniem się stabilnej wersji whispera autorstwa G.Gerganova ze strony: https://github.com/ggml-org/whisper.cpp/releases/tag/v1.8.2 .
Program "UruchamiaczSherpaLlamaMulti.exe" jest uruchamiaczem programu: sherpa-onnx-offline-tts-play.exe, do generowania tekstu z użyciem modeli vits, oraz filtrem- przełącznikiem,
który wybiera automatycznie syntezę mowy w danym języku linki niżej.
Program po podaniu np. napisz wiersz słońcu po polsku, napisze i wypowie tekst po polsku, a po podaniu: przetłumacz ten wiersz na np. hiszpański przetłumaczy go i lektor hiszpański to odczyta. Oczywiście filtr nie jest idealny, może sie pomylić,bo większość to języki z łacińskimi współnymi rdzeniami.
Ze strony : https://github.com/k2-fsa/sherpa-onnx/releases ściągamy program: sherpa-onnx-offline-tts-play.exe z bibliotekami, są w paczce w linkach poniżej.
Zalecam dla cpu:
https://github.com/k2-fsa/sherpa-onnx/release...4/sherpa-onnx-v1.12.14-win-x64-shared.tar.bz2
Ściągamy modele ze strony : https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models.
https://github.com/k2-fsa/sherpa-onnx/release...-models/vits-piper-ru_RU-denis-medium.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...models/vits-piper-zh_CN-huayan-medium.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...odels/vits-piper-pl_PL-darkman-medium.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...odels/vits-piper-it_IT-riccardo-x_low.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...ts-models/vits-piper-fr_FR-gilles-low.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...models/vits-piper-es_ES-davefx-medium.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...s-models/vits-piper-en_GB-alan-medium.tar.bz2
https://github.com/k2-fsa/sherpa-onnx/release...dels/vits-piper-de_DE-thorsten-medium.tar.bz2
Ściągamy najnowszy model Bielika: speakleash.Bielik-11B-v2.6-Instruct.Q2_K.gguf ze strony : https://huggingface.co/DevQuasar/speakleash.Bielik-11B-v2.6-Instruct-GGUF/tree/main
najmniejszy model aby zmieścić w VRAM :https://huggingface.co/DevQuasar/speakleash.Bielik-11B-v2.6-Instruct-GGUF/blob/main/speakleash.Bielik-11B-v2.6-Instruct.Q2_K.gguf
Większe modele Bielika są tu: https://huggingface.co/speakleash/Bielik-11B-v2.6-Instruct-GGUF/tree/main.
Kolekcja ciekawych modeli tu: https://huggingface.co/ggml-org/collections
Ściągamy program whispera - model transformacji mowy do tekstu:
Ściągamy model whispera ggml-large-v3-turbo-q5.bin ze strony: https://huggingface.co/ggerganov/whisper.cpp/tree/main
https://huggingface.co/ggerganov/whisper.cpp/blob/main/ggml-large-v3-turbo-q5_0.bin
Ściągamy program talk_llama.exe z dodatkowymi bibliotekami dla cuda, ze strony: https://github.com/ggml-org/whisper.cpp/releases/tag/v1.8.2
Ma być wersja v1.8.2 z CUDA bo tu trzeba podmienić plik "talk-llama.exe" na mój aby czytał polskie i rosyjskie litery.
Dla cuda: ustawić parametr -ngl 16 (liczba po ngl zależy od wielkości VRAM , dla np. 8GB VRAM można ustawić -ngl 999, wtedy wszystkie warstwy idą do VRAM i inne wątki, to trzeba popróbować i zaczynać od 8,16,32, itd..) w linii poleceń pliku .bat:
https://github.com/ggml-org/whisper.cpp/relea...load/v1.8.2/whisper-cublas-12.4.0-bin-x64.zip
Instrukcja:
-po pobraniu wszystkich plików i umieszczeniu plików wykonywalnych z bibliotekami odpowiednio w katalogu "whisper_talk_llama_8_lang", który przesyłam w załączniku
.rar, są tam puste katalogi modeli dla przykładu jak ma to wyglądać aby działało, trzeba je zapełnić tymi z linków, to wersja dla cuda.
Moja konfiguracja to procesor AMD Ryzen 5 , grafika: Nvidia RTX 3050 z 6GB VRAM.
Dla tych co chcą kod przerobić to trzeba wiedzieć że,program talk-llama.cpp do kompilacji z cuda wymaga biblioteki SDL , bibliotek cuda i Visual Studio 2022 Community.
Polecenia dla kompilacji w konsoli:
set SDL2_DIR=SDL2\cmake
cmake.exe -B build -DWHISPER_SDL2=ON -DGGML_CUDA=ON -DGGML_CUDA_FA_ALL_QUANTS=ON
cmake.exe --build build --config releas
To jest przeróbka jakiej dokonałem w pliku talk-llama.cpp, któraa pozostawia znaki polskie i rosyjskie, dla chińskich to zbyt skomplikowane.
// remove all characters, except for letters, numbers, punctuation and ':', '\'', '-', ' '
// text_heard = std::regex_replace(text_heard, std::regex("[^a-zA-Z0-9åäöÅÄÖ\\.,\\?!\\s\\:\\'\\-]"), "");
//zostawia polskie znaki
// text_heard = std::regex_replace(text_heard, std::regex("[^a-zA-Z0-9ąćęłńóśźżĄĆĘŁŃÓŚŹŻåäöÅÄÖ\\.,\\?!\\s\\:\\'\\-]"),"");
//==========zostawia znaki polskie i znaki rosyjskie
text_heard = std::regex_replace(text_heard,std::regex("[^a-zA-Z0-9ąćęłńóśźżĄĆĘŁŃÓŚŹŻа-яА-ЯёЁåäöÅÄÖ\\.,\\?!\\s\\:\\'\\-]"),"");
Program bez mojej przeróbki talk-llama.cpp też będzie działać ale bez polskich i rosyjskich znaków i może niekiedy błędnie rozumieć mowę.
Może się zdarzyć że program odczyta dwa razy to samo, jest to związane z tym, że gdy czyta tylko program sherpa,
przy krótkich zdaniach może ich nie wypowiedzieć (jakieś opóźniania) i dlatego dodałem dodatkową opcję czytania przez system krótkich plików,
mogą się niekiedy nałożyć.
Działanie w poleceniu start_talkllama_mowa_bielik.bat można modyfikować z innymi modelami jednak plik "mowa2.txt" musi tam być - jako wyjście tekstu,
które jest filtrowane do pliku mowa3.txt i ten jest czytany. Można sprawdzić działanie syntezy uruchamiając tylko program "UruchamiaczSherpaLlamaMulti.exe",
musi być ze wszystkimi innymi plikami jw.,napisać w notatniku zdanie i zapisać w pliku mowa2.txt, powinien je odczytać jak są wszystkie wskazane pliki.
Zachęcam do dalszej rozbudowy zastosowań małych modeli llm dla budżetowych komputerów, dlatego przesyłam też kod źródłowy uruchamiacza w załączniku.
Kompilacja w GCC , c++ standart max c17 w CodeBlocks.
Fajne? Ranking DIY