
Willkommen bei Spokestack Python! Diese Bibliothek soll Sprachschnittstellen in Python entwickeln. Dies kann alles von Raspberry PI -Anwendungen wie herkömmlichen intelligenten Lautsprechern bis hin zu Django -Webanwendungen umfassen. Alles, was in Python eingebaut ist, kann eine Sprachschnittstelle erhalten.
Sobald die Systemabhängigkeiten erfüllt sind, können Sie die Bibliothek mit Folgendem installieren.
pip install spokestackDiese Bibliothek erfordert eine Möglichkeit, Tflite -Modelle auszuführen. Es gibt zwei Möglichkeiten, diese Fähigkeit hinzuzufügen. Die erste ist die Installation der vollständigen Tensorflow -Bibliothek.
Das vollständige Tensorflow -Paket ist mit Folgendem installiert:
pip install tensorflowIn Anwendungsfällen, in denen Sie einen kleinen Fußabdruck benötigen, z. B. auf einem Himbeer -PI oder ähnlichen eingebetteten Geräten, möchten Sie den Tflite -Dolmetscher installieren.
pip install --extra-index-url https://google-coral.github.io/py-repo/ tflite_runtimeWenn Sie das Rad nicht installieren können, müssen Sie möglicherweise einige Systemabhängigkeiten für den Audioeingang und die Ausgabe installieren.
brew install lame portaudiosudo apt-get install portaudio19-dev libmp3lame-devWir unterstützen Windows 10 derzeit nicht nativ und empfehlen Ihnen, das Windows -Subsystem für Linux (WSL) mit den Debian -Abhängigkeiten zu installieren. Wenn Sie jedoch am nativen Windows -Support arbeiten möchten, akzeptieren wir gerne Pull -Anfragen.
Ein weiterer potenzieller Weg zur Verwendung spokestack unter Windows 10 ist von Anaconda. Dies ist jedoch aufgrund der lahmen Abhängigkeit ohne Unterstützung von Text to Speech (TTS). Portaudio hingegen kann über conda installiert werden.
conda install portaudio Der schnellste Weg, um spokestack zu verwenden, besteht darin, eine der vorkonfigurierten Pipeline-Instanzen zu verwenden. Wir bieten mehrere dieser Profile an, die zu vielen allgemeinen Anwendungsfällen passen.
from spokestack . profile . wakeword_asr import WakewordSpokestackASR
pipeline = WakewordSpokestackASR . create (
"spokestack_id" , "spokestack_secret" , model_dir = "path_to_wakeword_model"
) Wenn Sie eine feinkörnige Kontrolle über das, was in der Pipeline enthalten ist, möchten, können Sie SpeechPipeline verwenden. Dies ist das Modul, das VAD (Sprachaktivitätserkennung), Wakeword und ASR (automatisierte Spracherkennung) zusammenbindet. Das VAD hört auf einen von dem Eingabegerät erfassten Audio -Frame, um festzustellen, ob Sprache vorhanden ist. Wenn dies der Fall ist, verarbeitet das Wakeword -Modell nachfolgende Audiorahmen, die nach dem Schlüsselwort suchen, für das es geschult wurde. Wenn das Schlüsselwort gefunden wird, wird die Pipeline aktiviert und führt die Spracherkennung durch, wodurch das anschließende Audio in ein Transkript umgewandelt wird. Die SpeechPipeline wird so initialisiert:
from spokestack . activation_timeout import ActivationTimeout
from spokestack . io . pyaudio import PyAudioInput
from spokestack . pipeline import SpeechPipeline
from spokestack . vad . webrtc import VoiceActivityDetector
from spokestack . wakeword . tflite import WakewordTrigger
from spokestack . asr . spokestack . speech_recognizer import SpeechRecognizer
mic = PyAudioInput ()
vad = VoiceActivityDetector ()
wake = WakewordTrigger ( "path_to_tflite_model" )
asr = SpeechRecognizer ( "spokestack_id" , "spokestack_secret" )
timeout = ActivationTimeout ()
pipeline = SpeechPipeline ( mic , [ vad , wake , asr , timeout ])
pipeline . run () Nachdem die Pipeline ausgeführt wird, wird es wichtig, bei bestimmten Ereignissen auf die Ergebnisse aus Prozessen zuzugreifen. Wenn die Sprache beispielsweise erkannt wird, gibt es ein recognize . Mit diesen Ereignissen kann Code als Antwort außerhalb der Pipeline ausgeführt werden. Der Prozess der Registrierung einer Antwort erfolgt mit einem Pipeline -Rückruf, den wir im nächsten Abschnitt abdecken werden.
Pipeline -Rückrufe ermöglichen es, zusätzlicher Code ausgeführt zu werden, wenn ein Sprachereignis erkannt wird. Zum Beispiel können wir drucken, wenn die Pipeline aktiviert wird, indem eine Funktion mit der pipeline.event Event Decorator registriert wird.
@ pipeline . event
def on_activate ( context ):
print ( context . is_active )Einer der wichtigsten Anwendungsfälle für einen Pipeline -Rückruf ist der Zugriff auf das ASR -Transkript für die zusätzliche Verarbeitung durch die NLU. Auf das Transkript wird mit Folgendem zugegriffen:
@ pipeline . event
def on_recognize ( context ):
print ( context . transcript )Das Verständnis der natürlichen Sprache verwandelt eine Äußerung in strukturierte Daten, auf die eine Maschine einwirken kann. Für unsere Zwecke ist dies die Erkennung und Schlitzfüllung der gemeinsamen Absicht. Sie können hier mehr über die Konzepte lesen. Wir betrachten Absichten als Aktion, die ein Benutzer von einer Anwendung wünscht, und als die optionalen Argumente, um die angeforderte Aktion zu erfüllen. Unser NLU -Modell wird so initialisiert:
from spokestack . nlu . tflite import TFLiteNLU
nlu = TFLiteNLU ( "path_to_tflite_model" )Nachdem die NLU initialisiert wird, können wir diesen Teil dem Rückruf hinzufügen.
@ pipeline . event
def on_recognize ( context ):
results = nlu ( context . transcript ) Text zur Sprache konvertiert, wie der Name schon sagt, Text in gesprochenes Audio. Dies ist die Methode, um Ihrer Anwendung eine Stimme zu geben. Wir bieten eine TTS -Stimme kostenlos, wenn Sie sich für ein Spokestack -Konto anmelden, aber Sie können uns kontaktieren, um eine wirklich benutzerdefinierte Stimme zu trainieren. Die TTS -API -Schlüssel sind die gleichen wie SpeechRecognizer . Die grundlegende TTS -Initialisierung ist die folgende:
from spokestack . tts . manager import TextToSpeechManager
from spokestack . tts . clients . spokestack import TextToSpeechClient
from spokestack . io . pyaudio import PyAudioOutput
client = TextToSpeechClient ( "spokestack_id" , "spokestack_secret" )
output = PyAudioOutput ()
manager = TextToSpeechManager ( client , output )
manager . synthesize ( "welcome to spokestack" )Um einen einfachen TTS -Callback zu demonstrieren, lass uns etwas einrichten, das vorliegt, was der ASR erkannt hat:
@ pipeline . event
def on_recognize ( context ):
manager . synthesize ( context . transcript )Aus dem Root Project Directory:
cd docs
make clean && make htmlDieses Projekt wird mit PYPI verteilt. Das Folgende ist der Befehl, der für die Installation erstellt wird.
python setup.py clean --all ; rm -r ./dist
python setup.py sdist bdist_wheelSchnur wird verwendet, um die Rad- und Quellverteilung hochzuladen.
twine upload dist/ * Copyright 2021 Spokestack, Inc.
Lizenziert unter der Apache -Lizenz, Version 2.0 (der "Lizenz"); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Sie können hier eine Kopie der Lizenz erhalten
Sofern nicht nach geltendem Recht oder schriftlich zu vereinbart wird, wird die im Rahmen der Lizenz verteilte Software auf "As is" -Basis ohne Gewährleistung oder Bedingungen jeglicher Art ausdrücklich oder impliziert verteilt. Siehe die Lizenz für die spezifischen Sprachberechtigungen und Einschränkungen im Rahmen der Lizenz.