OpenAI Whisper auf einem RaspberryPi 5 on-device (!)

Whisper von OpenAI ist ein speech-to-text-System (STT), das meist als Service über die Whisper-API genutzt wird. Dabei wird menschliche Sprache lokal aufgezeichnet, die Daten verlassen dann allerdings das (eigene) Gerät und werden an einen OpenAI-Server geschickt, der die Umsetzung in Text vornimmt. Der generierte Text wird nun wieder über das Netz auf das lokale Gerät geschickt.

Die Nutzung der API / Whisper as a service hat einige Nachteile:

  • Audio (hin) und Text (zurück) müssen über das Netz verschickt werden, was
    – (hohe) Latenz bedeuten kann, auch je nach Anbindung und Nachfrage
    datenschutztechnisch gehen die Sprachdaten über das Netz, was für mache Anwendungen problematisch sein kann
  • es entstehen Kosten durch die Nutzung der API
    – Stand Anfang 2024 zwar nur $ 0.006 / minute, s. https://openai.com/pricing (auf der Seite nach Whisper suchen), was erst mal nicht viel ist, man muss aber dafür ein OpenAI-Konto anlegen mit Hinterlegung von Kreditkartendaten usw., was einfach auch lästig ist für die paar cent.

Nun habe ich vor ein paar Wochen schon das YouTube-Video Run OpenAI Whisper in real time on a Raspberry Pi 4 on-device (Uses the C++ model) von Sam Wechsler gefunden, der zeigt, wie man Whisper lokal auf einem RasPi 4 installiert. Mittlerweile gibt es auch ein Nachfolgevideo, mit Tests auf einem RasPi 5

Der ganze Zauber dahinter stammt aus der Whisper-C/C++ Implementierung von Georgi Gerganov, Repo unter: GitHub - ggerganov/whisper.cpp: Port of OpenAI's Whisper model in C/C++ … und dort gibt es auch eine

Das Ganze ist erstaunlich schnell installiert:

sudo apt install libsdl2-dev
git clone https://github.com/ggerganov/whisper.cpp
cd whisper.cpp
make -j stream

Nun muss man noch das gewünschte Modell downladen. Auf dem RasPi 4 funktionieren die Modelle tiny und base, auf dem RasPi 5 auch small laut obigem Video von Sam Wechsler.

Bei der Nutzung von verschiedenen Sprachen (“multiligual”) kann man die drei Sprach-Modelle hiermit downladen:

./models/download-ggml-model.sh tiny
./models/download-ggml-model.sh base
./models/download-ggml-model.sh small

Wenn man nur Englisch verwenden möchte:

./models/download-ggml-model.sh tiny.en
./models/download-ggml-model.sh base.en
./models/download-ggml-model.sh small.en

Nun kann man die eigentliche Spracherkennung starten mit:

./stream -m models/ggml-tiny.bin --step 4000 --length 8000 -c 0 -t 4 -ac 512 -l de

Falls man statt tiny das small model verwenden möchte, ersetzt man ggml-tiny.bin mit ggml-small.bin. Für die auf Englisch optimierten Modelle verwendet man ggml-tiny.en.bin usf.

Das flag -l de sorgt für output auf Deutsch, -l auto ist theoretisch auch möglich, dann erfolgt vor der Ausgabe des Textes eine Wahrscheinlichkeitsberechnung der Sprache, das braucht bei mir auf dem RasPi aber recht lange, daher lege ich gerade die Sprache explizit mit -l de oder -l en fest.

Weitere Infos zu den Sprachmodellen unter whisper/README.md at main · openai/whisper · GitHub

Falls ihr euch wundert, warum das Thema hier aufkommt: Tree Aware (Projekt AP 4) - #2 by clemens

Anmerkung: Dieser thread hätte ggf. auch in Entwicklung > Audio gepasst, da wir dort aber bisher noch gar nichts mit menschlicher Sprache haben, es ist vermutlich hier besser aufgehoben.

2 Likes

Leider ist on-device die Erkennungsrate nicht ganz so gut wie erhofft, auch die Geschwindigkeit ist mäßig und nicht unbedingt schneller als die Nutzung der gleichen Funktionalität über die API:

Für den Vergliche Whisper on-device vs. Whisper-API wurde dieser code zur Nutzun der API verwendet SmartHomeHub/raspberryPi/pi_whisper_api.py at main · yanxuceo/SmartHomeHub · GitHub (via https://www.youtube.com/watch?v=W--xpdCQgRQ gefunden).

Beispiel Englisch

Als Spracheingabe wurde hier das Video

Diren Senger: Bee Observer citizen science project with focus on data analysis and anomaly detection https://www.youtube.com/watch?v=NEV4OvdWxrg

abgespielt und mit einem Raspberry Pi 5 und dem setup oben transkribiert, konkret wurden folgende Parameter für on-device verwendet:

  • tiny model  ./stream -m models/ggml-tiny.en.bin --step 4000 --length 8000 -c 0 -t 4 -ac 512
  • small model  ./stream -m models/ggml-small.en.bin --step 4000 --length 8000 -c 0 -t 4 -ac 512
on-device
ggml-tiny.en.bin
on-device
ggml-small.en.bin
Whisper API
Yeah, I’m going to tell you a bit. about the V-ob server project and about our current state of the beta analysis. So in the be of server project we also have a sensor set up. up for b-colonies and it’s the iUI. So everybody should be able to use our menus. If I was any special skills to build it, that’s the types and we have five temperature sensors. with in the hive and one temperature sensor outside from from the hive and the humidity and pressure sensor. and also the scale. And then we are also using the B-PAP or a fog. of the beep app so that the data is connected on our or swara and orbiki post can see the their data still in the old version. And yeah, this is a bit about the history of the history of the history of the history of the history We of Bob, it was a research project funded by a German man. in the last week from 2018 until 2020. and it’s always been a citizen science project. and now that there’s no officially funding anymore. it still continues as citizen science project. Yeah, I’m going to tell you a bit about the Beobserver project and about our current state of the beta analysis. So within the Be Observer project, we also have have a sensor set up for B colonies. So everybody should be able to use our menus without any special skills to build. build it themselves and we have five temperature sensors within the hive and one temperature sensor are outside from the hive and the humidity and. pressure sensor and also the scale. And then we are also using the beep app. a frog of the beep app so that the data is connected. on our server and our BK policy. can see their data still in the old world. version and yeah this is a bit about the history of Bob. It was a research project. The contract was funded by a German ministry from 2018 until 2020 and it’s always been a citizen science project and now that there’s no official financial funding anymore, it still continues as citizens. Science Project.



Yeah, I’m going to tell you a bit about the bObserver project and about our current state of the data analysis. So within the bObserver project, we also have a sensor set up for bColonies, and it’s DIY, so everybody should be able to use our manuals without any special skills to build it themselves. And we have five temperature sensors within the hive, and one temperature sensor outside from the hive, and a humidity and pressure sensor, and also a scale. And then we are also using the Beep app or a fork of the Beep app so that the data is collected on our server and all beekeepers can see their data still in the old version. And yeah, this is a bit about the history of Bob. It was a research project funded by a German ministry from 2018 until 2020. And it’s always been a citizen science project. And now that there’s no official funding anymore, it still continues as a citizen science project.

Beispiel Deutsch

Auch hier haben wir für die Spracheingabe ein Video verwendet:

Ralph Büchler: Auswirkungen des Klimawandels auf die Imkerei
https://www.youtube.com/watch?v=zKP2eOpWmKA&t=128s

Setup wie oben außer:

  • small model (multilingual, nicht en! und deutsche Ausgage)
    ./stream -m models/ggml-small.bin --step 4000 --length 8000 -c 0 -t 4 -ac 512 -l de
on-device ggml-small.bin Whisper API
Ich möchte an dieser Stelle ganz kurz auf auf eine kürzig erschienen Studie von Gododetal eingehen. gehen, die in der Vorausschau für die nächsten 90 Jahre. auf der Basis unterschiedlicher Klimamodelle. die auch gerechnet haben, wie sehr sich das alles erinnert hat. sich die Flugmöglichkeiten verbinden, verändern. Und wenn wir nichts ändern gegenüber dem derzeitigen Klimagasausstoss, dann ist es noch ein Auszugehen, das wären 2100 Wippe, 25% zusammenspannend. zu Schutzmaßnahmen ergreifen, ist davon auszugehen, dass es das ist zu nahe der Jungen von etwa 10 Prozent. der Flugtage kommt. Allerdings ist das nicht gleichmäßig es ist über sehr verteilt und die stärkste Erweiterung ergibt sich. sich spielterbst in einer Phase, wo Bienen relativ wenig eintragen können, während andererseits jetzt die Zeit der Obstblüte zeitig im Jahr. die Flugmöglichkeiten eingeschränkt sein können. und die Gefahr von Spitzfrüssen. Früsten und von extremen Wetterereignissen. Möcht voraussichtlich zunehmen und das Kambinen sehr startbar betrichtet. Also auf der einen Seite die Chance, man kann mehr fliegen, man kann mehr sammeln. Aber auf der anderen Seite die große Frage ob das dass nun tatsächlich zu einer gedeitlichen Video beitragen wird. Ich möchte an dieser Stelle ganz kurz auf eine kürzlich erschienene Studie von Godo et al. eingehen, die in der Vorausschau für die nächsten 90 Jahre auf der Basis unterschiedlicher Klimamodelle hochgerechnet haben, wie sehr sich die Flugmöglichkeiten für Bienen verändern. Und wenn wir nichts ändern gegenüber dem derzeitigen Klimagasausstoß, dann ist davon auszugehen, dass wir im Jahr 2100 etwa 25% zusätzlicher Flugtage für Bienen haben. Und selbst wenn wir deutliche CO2-Reduktionsmaßnahmen ergreifen, ist davon auszugehen, dass es zu einer Erhöhung von etwa 10% der Flugtage kommt. Allerdings ist das nicht gleichmäßig über das Jahr verteilt und die stärkste Erweiterung ergibt sich im Spätherbst in einer Phase, wo Bienen relativ wenig eintragen können, während andererseits zurzeit der Obstblüte zeitig im Jahr die Flugmöglichkeiten eingeschränkt sein können und die Gefahr von Spätfrösten und von extremen Wetterereignissen wird voraussichtlich zunehmen. Und das kann Bienen sehr stark beeinträchtigen. Also auf der einen Seite die Chance, man kann mehr fliegen, man kann mehr sammeln, aber auf der anderen Seite die große Frage, ob das nun tatsächlich zu einer gedeihlichen Entwicklung beitragen wird.



1 Like

coole evaluation dieses setups. (mein herzchen klebt ja schon länger da dran. jetzt komm ich endlich dazu mein material hier abzusetzen.)
falls ich demnächst im lotto gewinne, dann nehm ich mir die zeit und zieh dein vergleichsprogramm mit vosk durch:

Vosk is a speech recognition toolkit. The best things in Vosk are:

  • Supports 20+ languages and dialects - English, …, German, …
  • Works offline, even on lightweight devices - Raspberry Pi, Android, iOS
  • Installs with simple pip3 install vosk
  • Portable per-language models are only 50Mb each, but there are much bigger server models available.
  • Provides streaming API for the best user experience (unlike popular speech-recognition python packages)
  • There are bindings for different programming languages, too - java/csharp/javascript etc.
  • Allows quick reconfiguration of vocabulary for best accuracy.
  • Supports speaker identification beside simple speech recognition.

für die smartphone-app-fixierten hab ich in dem zusammenhang noch den hinweis auf futo voice. keine ahnung ob das was taugt.

Habe heute versucht Whisper auf einem Windows Rechner zum Laufen zu bekommen (für ein anderes Projekt, hat nichts mit ClimArt zu tun). Dachte (ohne die verlinkten Infos unten gelesen zu haben) da geht das large model easy, wenn die kleinen schon auf einem RasPi laufen. Whisper habe ich dabei unter Ubuntu in der WSL installiert. Leider lief nur das small model. Medium und large liefern auf der CPU des Laptops mit 8 GB Speicher nicht, die Grafik ist onboard und wird von Whisper nicht unterstützt. Schade! Dann die Angaben unter Required VRAM auf whisper/README.md at main · openai/whisper · GitHub gelesen. Damit ist large passe, für medium hätte ich noch gehofft, reichte aber auch nicht.