Zmagasz się z AI lub rozwojem full-stack? Nasi eksperci są tutaj, aby Cię poprowadzić: dostosowane porady, integracja techniczna i nie tylko. Skontaktuj się z nami pod adresem [email protected].

Jak zainstalować i wdrożyć Whisper, najlepszą open-source'ową alternatywę dla Google Speech-To-Text

OpenAI Whisper to na dzień dzisiejszy najlepsza open-source'owa alternatywa dla Google speech-to-text. Działa natywnie w 100 językach (automatycznie wykrywanych), dodaje interpunkcję, a w razie potrzeby może nawet przetłumaczyć wynik. W tym artykule pokażemy jak zainstalować Whispera i wdrożyć go do produkcji.

Automatyczne rozpoznawanie mowy

Google Speech-To-Text

Bardzo popularne jest API Google do automatycznego rozpoznawania mowy (speech-to-text). API to jest w stanie transkrybować pliki audio i wideo w 125 językach i proponuje konkretne modele AI do transkrypcji rozmów telefonicznych, transkrypcji medycznej i innych.

To API ma również miłe dodatkowe funkcje, takie jak filtrowanie treści, automatyczna interpunkcja (na razie tylko w wersji beta) i diarystyka głośników (również w wersji beta).

Wreszcie, ich API może być zainstalowane w siedzibie firmy. Należy jednak pamiętać, że model AI on-prem będzie nadal wysyłał dane do Google w celu raportowania wykorzystania API, co może być problemem z punktu widzenia prywatności.

Ceny Google to w zasadzie 0,006 USD / 15 sekund dla podstawowej mowy do tekstu, a 0,009 USD / 15 sekund dla konkretnych przypadków użycia, takich jak transkrypcja wideo lub transkrypcja telefonu.

Załóżmy, że chcesz automatycznie analizować rozmowy telefoniczne wykonywane do Twojego zespołu wsparcia (aby później przeprowadzić na nich np. analizę sentymentu lub ekstrakcję encji). Jeśli masz 5 agentów wsparcia spędzających po 4 godziny dziennie na rozmowach telefonicznych z klientami, Google speech-to-text API będzie kosztować Cię 1400 dolarów miesięcznie.

Jeśli obawiasz się kosztów lub prywatności, możesz chcieć przejść na alternatywę open-source: OpenAI Whisper.

Whisper: Najlepsza alternatywa dla Google Speech-To-Text

Whisper to open-source'owy model AI, który został właśnie udostępniony przez OpenAI.

OpenAI ma historię open-sourcowania świetnych projektów AI. Na przykład GPT-2 został opracowany przez OpenAI kilka lat temu. W tamtym czasie był to najlepszy generatywny model przetwarzania języka naturalnego jaki kiedykolwiek powstał i utorował drogę dla znacznie bardziej zaawansowanych modeli jak GPT-3, GPT-J, OPT, Bloom.... Ostatnio wydali również ładny framework do programowania CUDA o nazwie Triton.

Nie wszystkie modele OpenAI zostały jednak udostępnione na zasadach open-sourcowych. Ich 2 najbardziej ekscytujące modele: GPT-3 i DALL-E, są nadal prywatnymi modelami, które mogą być używane tylko poprzez ich płatne API.

Whisper bierze ekosystem mowy do tekstu przez burzę: może automatycznie wykryć język wejściowy, a następnie przepisać tekst w około 100 językach, automatycznie interpunkcyjny wynik, a nawet przetłumaczyć wynik w razie potrzeby. Dokładność jest bardzo dobra, a model ten można zastosować do każdego rodzaju danych wejściowych (audio, wideo, rozmowy telefoniczne, dyskusje medyczne itp.).

I oczywiście kolejną wielką zaletą Whispera jest to, że można go wdrożyć samodzielnie na własnych serwerach, co jest świetne z punktu widzenia prywatności.

Whisper jest oczywiście darmowy, ale jeśli chcesz go zainstalować samodzielnie, będziesz musiał poświęcić na to trochę ludzkiego czasu i zapłacić za bazowe serwery i GPU. Jeśli wolisz skorzystać z wersji zarządzanej, możesz skorzystać z API takiego jak NLP Cloud: wypróbuj Whisper za darmo na NLP Cloud już teraz!.

Instalacja i wdrażanie OpenAI Whisper

Masz 2 opcje, jeśli chcesz zainstalować i wdrożyć Whisper na razie. Pierwszą z nich jest użycie biblioteki OpenAI's Whisper Python, a drugą użycie implementacji Whispera przez Hugging Face Transformers. Zbadajmy oba rozwiązania.

Używanie lib Pythona Whisper

To rozwiązanie jest najprostsze. Zasadniczo musisz postępować zgodnie z instrukcjami OpenAI na repozytorium Github projektu Whisper.

First install the whisper Python lib:

pip install git+https://github.com/openai/whisper.git

Then install ffmpeg on your system if it is not the case yet:

# on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg

# on Arch Linux
sudo pacman -S ffmpeg

# on MacOS using Homebrew (https://brew.sh/)
brew install ffmpeg

# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg

# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg

Several flavors of Whisper are available: tiny, base, small, medium, and large. Of course the bigger the better, so if you are looking for state of the art results we recommend the large version. Here is a very simply Python script that opens an mp3 audio file stored on your disk, automatically detects the input language, and transcribes it:

import whisper

model = whisper.load_model("large")
result = model.transcribe("audio.mp3")
print(result["text"])

Simple isn't it?

Wykorzystanie realizacji "Przytulonej twarzy

In order to use Hugging Face's implementation of Whisper you will first need to install HF Transfomers, librosa, and Pytorch:

pip install transformers
pip install librosa
pip install torch

You also need to install ffmpeg (see above).

Now, here is a Python script that does transcription in English:

from transformers import WhisperProcessor, WhisperForConditionalGeneration
import librosa

speech, _ = librosa.load("audio.mp3")

processor = WhisperProcessor.from_pretrained("openai/whisper-large")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-large")

model.config.forced_decoder_ids = processor.get_decoder_prompt_ids(language = "en", task = "transcribe")
input_features = processor(speech, return_tensors="pt").input_features 
predicted_ids = model.generate(input_features)
transcription = processor.batch_decode(predicted_ids)

print(processor.batch_decode(predicted_ids, skip_special_tokens = True))

There are 2 limitations with this Hugging Face implementation. First you need to manually set the source language (no automatic input language detection is implemented yet). And secondly no automatic chunking is applied, which means that you cannot transcribe content that is larger than 30 seconds...

Maybe these limitations will be solved in future releases?

A nice thing though is that there is a Tensorflow implementation available too, which means that you can use XLA compilation and get much faster response times.

Wymagania sprzętowe

Jak widzieliśmy powyżej, Whisper jest dość łatwy w instalacji. Wymaga jednak zaawansowanego sprzętu. Zalecane jest posiadanie GPU, jeśli chcesz korzystać z dużej wersji modelu.

Jeśli korzystasz z whisper Python lib (patrz wyżej), będziesz potrzebował około 10GB pamięci RAM i 11GB VRAM. Oznacza to, że w praktyce będziesz potrzebował co najmniej 16GB GPU. Może to być na przykład NVIDIA Tesla T4 lub NVIDIA A10.

Na Tesli T4 przepiszesz 30 sekund dźwięku w około 6 sekund.

Uwagi dotyczące wydajności

Jeśli chcesz poprawić domyślną wydajność wspomnianą powyżej, oto kilka strategii, które możesz zbadać:

Wniosek

OpenAI Whisper to rewolucja w świecie speech-to-text. Po raz pierwszy każdy może łatwo uzyskać dostęp do najnowocześniejszego automatycznego rozpoznawania mowy dzięki temu modelowi open-source, co czyni Whisper dobrą alternatywą dla Google speech-to-text API.

Instalacja i wdrożenie takiego modelu AI jest jednak nadal wyzwaniem ze względu na wymagany pod maską sprzęt. Duża wersja Whispera nie może tak naprawdę działać na sprzęcie konsumenckim.

Jeśli łatwo chcesz wypróbować Whisper bez zawracania sobie głowy rozważaniami na temat infrastruktury, wypróbuj go na API NLP Cloud: wypróbuj Whisper za darmo na NLP Cloud już teraz!.

Julien Salinas
CTO w NLP Cloud