Bibliothek zur Spracherkennung mit Unterstützung für mehrere Engines und APIs, online und offline.
UPDATE 09.02.2022 : Hallo zusammen! Dieses Projekt begann als Tech-Demo, aber heutzutage braucht es mehr Zeit, als ich habe, um mit all den PRs und Problemen Schritt zu halten. Deshalb möchte ich eine offene Einladung für Mitarbeiter herausgeben – wenden Sie sich einfach an [email protected], wenn Sie interessiert sind!
Spracherkennungs-Engine/API-Unterstützung:
Schnellstart: pip install SpeechRecognition
. Weitere Einzelheiten finden Sie im Abschnitt „Installieren“.
Um es schnell auszuprobieren, führen Sie nach der Installation python -m speech_recognition
aus.
Projektlinks:
Das Bibliotheksverzeichnis dokumentiert alle öffentlich zugänglichen Objekte der Bibliothek. Dieses Dokument ist auch unter reference/library-reference.rst
enthalten.
Informationen zum Installieren von Sprachen, zum Kompilieren von PocketSphinx und zum Erstellen von Sprachpaketen aus Online-Ressourcen finden Sie unter Hinweise zur Verwendung von PocketSphinx. Dieses Dokument ist auch unter reference/pocketsphinx.rst
enthalten.
Sie müssen Vosk-Modelle installieren, um Vosk verwenden zu können. Hier sind Modelle verfügbar. Sie müssen sie im Modellordner Ihres Projekts ablegen, z. B. „Ihr-Projektordner/Modelle/Ihr-Vosk-Modell“.
Anwendungsbeispiele finden Sie im Verzeichnis examples/
im Repository-Stammverzeichnis:
recognizer_instance.energy_threshold
).Stellen Sie zunächst sicher, dass Sie alle im Abschnitt „Anforderungen“ aufgeführten Anforderungen erfüllen.
Der einfachste Weg, dies zu installieren, ist die Verwendung von pip install SpeechRecognition
.
Andernfalls laden Sie die Quelldistribution von PyPI herunter und extrahieren Sie das Archiv.
Führen Sie im Ordner python setup.py install
.
Um alle Funktionen der Bibliothek nutzen zu können, sollten Sie über Folgendes verfügen:
Microphone
verwenden müssen)recognizer_instance.recognize_sphinx
verwenden müssen)recognizer_instance.recognize_google_cloud
) verwenden müssen.recognizer_instance.recognize_vosk
verwenden müssen)recognizer_instance.recognize_whisper
verwenden müssen)recognizer_instance.recognize_openai
verwenden müssen)recognizer_instance.recognize_groq
)Die folgenden Anforderungen sind optional, können jedoch in manchen Situationen die Funktionalität verbessern oder erweitern:
In den folgenden Abschnitten werden die Details der einzelnen Anforderungen erläutert.
Die erste Softwareanforderung ist Python 3.9+. Dies ist für die Nutzung der Bibliothek erforderlich.
PyAudio ist genau dann erforderlich, wenn Sie den Mikrofoneingang ( Microphone
) verwenden möchten. PyAudio Version 0.2.11+ ist erforderlich, da frühere Versionen bekannte Speicherverwaltungsfehler bei der Aufnahme von Mikrofonen in bestimmten Situationen aufwiesen.
Wenn es nicht installiert ist, funktioniert alles in der Bibliothek weiterhin, außer dass der Versuch, ein Microphone
Objekt zu instanziieren, einen AttributeError
auslöst.
Die Installationsanweisungen auf der PyAudio-Website sind recht gut – der Einfachheit halber sind sie unten zusammengefasst:
pip install SpeechRecognition[audio]
in einem Terminal aus.sudo apt-get install python-pyaudio python3-pyaudio
in einem Terminal aus.sudo apt-get install portaudio19-dev python-all-dev python3-all-dev && sudo pip install SpeechRecognition[audio]
(ersetzen Sie pip
durch pip3
, wenn mit Python 3).brew install portaudio
. Anschließend installieren Sie PyAudio mit Pip: pip install SpeechRecognition[audio]
.portaudio19-dev
und python-all-dev
(oder python3-all-dev
bei Verwendung von Python 3) (oder deren ähnlichste Äquivalente) mit einem Paketmanager Ihrer Wahl und installieren Sie sie dann mit PyAudio Verwenden von Pip: pip install SpeechRecognition[audio]
(ersetzen Sie pip
durch pip3
wenn Sie Python 3 verwenden). PyAudio-Radpakete für gängige 64-Bit-Python-Versionen unter Windows und Linux sind der Einfachheit halber im Verzeichnis „ third-party/
im Repository-Stammverzeichnis enthalten. Führen Sie zur Installation einfach pip install wheel
gefolgt von pip install ./third-party/WHEEL_FILENAME
(ersetzen Sie pip
durch pip3
“ bei Verwendung von Python 3) im Stammverzeichnis des Repositorys aus.
PocketSphinx-Python ist genau dann erforderlich, wenn Sie den Sphinx-Erkenner ( recognizer_instance.recognize_sphinx
) verwenden möchten.
PocketSphinx-Python-Wheel-Pakete für 64-Bit-Python 3.4 und 3.5 unter Windows sind der Einfachheit halber im Verzeichnis third-party/
enthalten. Führen Sie zur Installation einfach pip install wheel
gefolgt von pip install ./third-party/WHEEL_FILENAME
(ersetzen Sie pip
durch pip3
, wenn Sie Python 3 verwenden) im SpeechRecognition-Ordner aus.
Führen Sie unter Linux und anderen POSIX-Systemen (z. B. OS X) pip install SpeechRecognition[pocketsphinx]
aus. Befolgen Sie die Anweisungen unter „PocketSphinx-Python aus dem Quellcode erstellen“ in „Hinweise zur Verwendung von PocketSphinx“, um Installationsanweisungen zu erhalten.
Beachten Sie, dass die in den meisten Paket-Repositorys verfügbaren Versionen veraltet sind und nicht mit den gebündelten Sprachdaten funktionieren. Es wird empfohlen, die gebündelten Radpakete zu verwenden oder aus der Quelle zu bauen.
Informationen zum Installieren von Sprachen, zum Kompilieren von PocketSphinx und zum Erstellen von Sprachpaketen aus Online-Ressourcen finden Sie unter Hinweise zur Verwendung von PocketSphinx. Dieses Dokument ist auch unter reference/pocketsphinx.rst
enthalten.
Die Vosk-API ist genau dann erforderlich, wenn Sie den Vosk-Erkenner ( recognizer_instance.recognize_vosk
) verwenden möchten.
Sie können es mit python3 -m pip install vosk
installieren.
Sie müssen auch Vosk Models installieren:
Hier stehen Modelle zum Download bereit. Sie müssen sie im Modellordner Ihres Projekts ablegen, z. B. „Ihr-Projektordner/Modelle/Ihr-Vosk-Modell“.
Die Google Cloud Speech-Bibliothek für Python ist genau dann erforderlich, wenn Sie die Google Cloud Speech API ( recognizer_instance.recognize_google_cloud
) verwenden möchten.
Wenn es nicht installiert ist, funktioniert alles in der Bibliothek weiterhin, mit der Ausnahme, dass der Aufruf recognizer_instance.recognize_google_cloud
einen RequestError
auslöst.
Gemäß den offiziellen Installationsanweisungen ist die empfohlene Methode zur Installation die Verwendung von Pip: Führen Sie pip install google-cloud-speech
aus (ersetzen Sie pip
durch pip3
wenn Sie Python 3 verwenden).
Zum Kodieren der Audiodaten zum Senden an die API ist ein FLAC-Encoder erforderlich. Wenn Sie Windows (x86 oder x86-64), OS X (nur Intel Macs, OS .
Stellen Sie andernfalls sicher, dass Sie über das Befehlszeilentool flac
verfügen, das häufig über den Systempaketmanager verfügbar ist. Dies wäre beispielsweise normalerweise sudo apt-get install flac
auf Debian-Derivaten oder brew install flac
unter OS X mit Homebrew.
Whisper ist genau dann erforderlich, wenn Sie Whisper verwenden möchten ( recognizer_instance.recognize_whisper
).
Sie können es mit python3 -m pip install SpeechRecognition[whisper-local]
installieren.
Die Bibliothek openai ist genau dann erforderlich, wenn Sie die OpenAI Whisper API ( recognizer_instance.recognize_openai
) verwenden möchten.
Sie können es mit python3 -m pip install SpeechRecognition[openai]
installieren.
Bitte legen Sie die Umgebungsvariable OPENAI_API_KEY
fest, bevor Sie recognizer_instance.recognize_openai
aufrufen.
Die Bibliothek groq ist genau dann erforderlich, wenn Sie die Groq Whisper API ( recognizer_instance.recognize_groq
) verwenden möchten.
Sie können es mit python3 -m pip install SpeechRecognition[groq]
installieren.
Bitte legen Sie die Umgebungsvariable GROQ_API_KEY
fest, bevor Sie recognizer_instance.recognize_groq
aufrufen.
Versuchen Sie, die Eigenschaft recognizer_instance.energy_threshold
zu erhöhen. Dies ist im Grunde die Empfindlichkeit des Erkenners dafür, wann die Erkennung beginnen soll. Höhere Werte bedeuten, dass die Empfindlichkeit geringer ist, was nützlich ist, wenn Sie sich in einem lauten Raum befinden.
Dieser Wert hängt vollständig von Ihrem Mikrofon oder Ihren Audiodaten ab. Es gibt keinen allgemeingültigen Wert, aber gute Werte liegen typischerweise zwischen 50 und 4000.
Überprüfen Sie außerdem die Lautstärkeeinstellungen Ihres Mikrofons. Wenn es zu empfindlich ist, nimmt das Mikrofon möglicherweise viele Umgebungsgeräusche auf. Wenn es zu unempfindlich ist, weist das Mikrofon Sprache möglicherweise nur als Rauschen zurück.
Die Eigenschaft recognizer_instance.energy_threshold
ist wahrscheinlich zunächst auf einen zu hohen Wert eingestellt und wird dann durch die dynamische Anpassung des Energieschwellenwerts automatisch niedriger angepasst. Bevor es einen guten Pegel erreicht, ist die Energieschwelle so hoch, dass Sprache nur noch als Umgebungsgeräusch gilt.
Die Lösung besteht darin, diesen Schwellenwert zu verringern oder vorher recognizer_instance.adjust_for_ambient_noise
aufzurufen, wodurch der Schwellenwert automatisch auf einen guten Wert gesetzt wird.
Versuchen Sie, die Erkennungssprache auf Ihre Sprache/Ihren Dialekt einzustellen. Weitere Informationen hierzu finden Sie in der Dokumentation recognizer_instance.recognize_sphinx
, recognizer_instance.recognize_google
, recognizer_instance.recognize_wit
, recognizer_instance.recognize_bing
, recognizer_instance.recognize_api
, recognizer_instance.recognize_houndify
recognizer_instance.recognize_ibm
.
Wenn Ihre Sprache/Ihr Dialekt beispielsweise britisches Englisch ist, ist es besser "en-GB"
als Sprache anstelle von "en-US"
zu verwenden.
recognizer_instance.listen
; insbesondere beim Aufruf von Microphone.MicrophoneStream.read
.Dies geschieht normalerweise, wenn Sie ein Raspberry Pi-Board verwenden, das selbst nicht über Audioeingangsfunktionen verfügt. Dies führt dazu, dass das von PyAudio verwendete Standardmikrofon einfach blockiert, wenn wir versuchen, es zu lesen. Wenn Sie einen Raspberry Pi verwenden, benötigen Sie eine USB-Soundkarte (oder ein USB-Mikrofon).
Ändern Sie anschließend alle Instanzen von Microphone()
in Microphone(device_index=MICROPHONE_INDEX)
, wobei MICROPHONE_INDEX
der hardwarespezifische Index des Mikrofons ist.
Um herauszufinden, wie hoch der Wert von MICROPHONE_INDEX
sein sollte, führen Sie den folgenden Code aus:
import speech_recognition as sr
for index , name in enumerate ( sr . Microphone . list_microphone_names ()):
print ( "Microphone with name " {1} " found for `Microphone(device_index={0})`" . format ( index , name ))
Dadurch wird etwa Folgendes ausgedruckt:
Mikrofon mit dem Namen „HDA Intel HDMI: 0 (hw:0,3)“ für „Microphone(device_index=0)“ gefunden Mikrofon mit dem Namen „HDA Intel HDMI: 1 (hw:0,7)“ für „Mikrofon(device_index=1)“ gefunden Mikrofon mit dem Namen „HDA Intel HDMI: 2 (hw:0,8)“ für „Microphone(device_index=2)“ gefunden Mikrofon mit dem Namen „Blue Snowball: USB Audio (hw:1,0)“ für „Microphone(device_index=3)“ gefunden Mikrofon mit dem Namen „hdmi“ für „Microphone(device_index=4)“ gefunden Mikrofon mit dem Namen „pulse“ für „Microphone(device_index=5)“ gefunden Mikrofon mit dem Namen „default“ für „Microphone(device_index=6)“ gefunden
Um nun das Snowball-Mikrofon zu verwenden, ändern Sie Microphone()
in Microphone(device_index=3)
.
Microphone()
gibt den Fehler IOError: No Default Input Device Available
.Wie der Fehler besagt, weiß das Programm nicht, welches Mikrofon es verwenden soll.
Um fortzufahren, verwenden Sie entweder Microphone(device_index=MICROPHONE_INDEX, ...)
anstelle von Microphone(...)
oder legen Sie ein Standardmikrofon in Ihrem Betriebssystem fest. Sie können mögliche Werte von MICROPHONE_INDEX
mithilfe des Codes im Fehlerbehebungseintrag direkt darüber erhalten.
Ab PyInstaller Version 3.0 wird SpeechRecognition standardmäßig unterstützt. Wenn beim Kompilieren Ihres Programms mit PyInstaller seltsame Probleme auftreten, aktualisieren Sie einfach PyInstaller.
Sie können dies ganz einfach tun, indem Sie pip install --upgrade pyinstaller
ausführen.
Der Fehler „bt_audio_service_open“ bedeutet, dass Sie über ein Bluetooth-Audiogerät verfügen, aber da derzeit kein physisches Gerät angeschlossen ist, können wir es nicht wirklich verwenden – wenn Sie kein Bluetooth-Mikrofon verwenden, kann dies getrost ignoriert werden. Wenn dies der Fall ist und der Ton nicht funktioniert, überprüfen Sie noch einmal, ob Ihr Mikrofon tatsächlich angeschlossen ist. Es scheint keine einfache Möglichkeit zu geben, diese Meldungen zu deaktivieren.
Informationen zu Fehlern der Form „ALSA lib [...] Unknown PCM“ finden Sie in dieser StackOverflow-Antwort. Um einen Fehler der Form „Unbekannte PCM-Karten.pcm.rear“ zu beseitigen, kommentieren Sie einfach pcm.rear cards.pcm.rear
in /usr/share/alsa/alsa.conf
, ~/.asoundrc
und aus /etc/asound.conf
.
Für „Jack-Server läuft nicht oder kann nicht gestartet werden“ oder „connect(2)-Aufruf an /dev/shm/jack-1000/default/jack_0 fehlgeschlagen (err=Keine solche Datei oder kein solches Verzeichnis)“ oder „Versuch, eine Verbindung zum Server herzustellen.“ fehlgeschlagen“, diese werden dadurch verursacht, dass ALSA versucht, eine Verbindung zu JACK herzustellen, und können getrost ignoriert werden. Mir ist derzeit keine einfache Möglichkeit bekannt, diese Nachrichten auszuschalten, außer das Drucken vollständig zu deaktivieren, während das Mikrofon eingeschaltet wird.
ChildProcessError
Die direkte Installation von FLAC für OS X aus dem Quellcode funktioniert nicht, da die ausführbaren Dateien nicht korrekt zum Suchpfad hinzugefügt werden.
Durch die Installation von FLAC mit Homebrew wird sichergestellt, dass der Suchpfad korrekt aktualisiert wird. Stellen Sie zunächst sicher, dass Sie über Homebrew verfügen, und führen Sie dann brew install flac
aus, um die erforderlichen Dateien zu installieren.
Um diese Bibliothek zu hacken, stellen Sie zunächst sicher, dass Sie alle im Abschnitt „Anforderungen“ aufgeführten Anforderungen erfüllen.
speech_recognition/__init__.py
.examples/
und das Demoskript befindet sich in speech_recognition/__main__.py
.speech_recognition/
.reference/
.third-party/
. Um die Bibliothek lokal zu installieren/neu zu installieren, führen Sie python -m pip install -e .[dev]
im Stammverzeichnis des Projekts aus.
Vor einer Veröffentlichung wird die Versionsnummer in README.rst
und speech_recognition/__init__.py
erhöht. Versions-Tags werden dann mit git config gpg.program gpg2 && git config user.signingkey DB45F6C431DE7C2DCD99FF7904882258A4063489 && git tag -s VERSION_GOES_HERE -m "Version VERSION_GOES_HERE"
.
Veröffentlichungen erfolgen durch Ausführen von make-release.sh VERSION_GOES_HERE
um die Python-Quellpakete zu erstellen, sie zu signieren und auf PyPI hochzuladen.
So führen Sie alle Tests aus:
python -m unittest discover --verbose
So führen Sie eine statische Analyse durch:
python -m flake8 --ignore=E501,E701,W503 speech_recognition tests examples setup.py
Um sicherzustellen, dass RST wohlgeformt ist:
python -m rstcheck README.rst reference/ * .rst
Das Testen wird bei jedem Push auch automatisch von GitHub Actions durchgeführt.
Die enthaltene ausführbare Datei flac-win32
ist die offizielle 32-Bit-Windows-Binärdatei FLAC 1.3.2.
Die enthaltenen ausführbaren Dateien flac-linux-x86
und flac-linux-x86_64
werden aus dem FLAC 1.3.2-Quellcode mit Manylinux erstellt, um sicherzustellen, dass sie mit einer Vielzahl von Distributionen kompatibel sind.
Die erstellten ausführbaren FLAC-Dateien sollten Bit für Bit reproduzierbar sein. Um sie neu zu erstellen, führen Sie im Projektverzeichnis auf einem Debian-ähnlichen System Folgendes aus:
# download and extract the FLAC source code
cd third-party
sudo apt-get install --yes docker.io
# build FLAC inside the Manylinux i686 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_i686:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86 && sudo rm -rf flac-1.3.2/
# build FLAC inside the Manylinux x86_64 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_x86_64:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86_64 && sudo rm -r flac-1.3.2/
Die enthaltene ausführbare Datei flac-mac
stammt aus xACT 2.39, einem Frontend für FLAC 1.3.2, das praktischerweise Binärdateien für alle Encoder enthält. Konkret handelt es sich um eine Kopie von xACT 2.39/xACT.app/Contents/Resources/flac
in xACT2.39.zip
.
Uberi <[email protected]> (Anthony Zhang) Bobsayshilol arvindch <[email protected]> (Arvind Chembarpu) Kevinismith <[email protected]> (Kevin Smith) haas85 DelightRun <[email protected]> Einzelgänger kamushadenes <[email protected]> (Kamus Hadenes) sbraden <[email protected]> (Sarah Braden) tb0hdan (Bohdan Turkynewych) Thynix <[email protected]> (Steve Dougherty) beeedy <[email protected]> (Broderick Carlin)
Bitte melden Sie Fehler und Vorschläge im Issue-Tracker!
So zitieren Sie diese Bibliothek (APA-Stil):
Zhang, A. (2017). Spracherkennung (Version 3.11) [Software]. Verfügbar unter https://github.com/Uberi/speech_recognition#readme.
So zitieren Sie diese Bibliothek (Chicago-Stil):
Zhang, Anthony. 2017. Spracherkennung (Version 3.11).
Schauen Sie sich auch die Python Baidu Yuyin API an, die auf einer älteren Version dieses Projekts basiert und Unterstützung für Baidu Yuyin bietet. Beachten Sie, dass Baidu Yuyin nur innerhalb Chinas erhältlich ist.
Copyright 2014-2017 Anthony Zhang (Uberi). Der Quellcode dieser Bibliothek ist online auf GitHub verfügbar.
SpeechRecognition wird unter der 3-Klausel-BSD-Lizenz zur Verfügung gestellt. Weitere Informationen finden Sie in LICENSE.txt
im Stammverzeichnis des Projekts.
Der Einfachheit halber enthalten alle offiziellen Distributionen von SpeechRecognition bereits eine Kopie der erforderlichen Urheberrechtshinweise und Lizenzen. In Ihrem Projekt können Sie einfach sagen, dass Lizenzinformationen für SpeechRecognition in der SpeechRecognition-README-Datei zu finden sind, und sicherstellen, dass SpeechRecognition für Benutzer sichtbar ist, wenn sie es sehen möchten .
SpeechRecognition vertreibt Quellcode, Binärdateien und Sprachdateien von CMU Sphinx. Diese Dateien sind BSD-lizenziert und weiterverteilbar, solange die Urheberrechtshinweise korrekt beibehalten werden. Lizenzdetails für einzelne Teile finden Sie unter speech_recognition/pocketsphinx-data/*/LICENSE*.txt
third-party/LICENSE-Sphinx.txt
.
SpeechRecognition vertreibt Quellcode und Binärdateien von PyAudio. Diese Dateien sind vom MIT lizenziert und weiterverteilbar, sofern die Urheberrechtshinweise korrekt beibehalten werden. Lizenzdetails finden Sie third-party/LICENSE-PyAudio.txt
.
SpeechRecognition verteilt Binärdateien von FLAC – speech_recognition/flac-win32.exe
, speech_recognition/flac-linux-x86
und speech_recognition/flac-mac
. Diese Dateien sind GPLv2-lizenziert und weitervertreibbar, solange die Bedingungen der GPL erfüllt sind. Die FLAC-Binärdateien sind eine Ansammlung separater Programme, daher gelten diese GPL-Einschränkungen nicht für die Bibliothek oder Ihre Programme, die die Bibliothek verwenden, sondern nur für FLAC selbst. Lizenzdetails finden Sie LICENSE-FLAC.txt
.