
Bienvenue à Spokestack Python! Cette bibliothèque est destinée à développer des interfaces vocales dans Python. Cela peut inclure n'importe quoi, des applications Raspberry Pi comme des haut-parleurs intelligents traditionnels aux applications Web Django. Tout ce qui est construit dans Python peut recevoir une interface vocale.
Une fois que les dépendances du système ont été satisfaites, vous pouvez installer la bibliothèque avec les éléments suivants.
pip install spokestackCette bibliothèque nécessite un moyen d'exécuter des modèles TFLITE. Il existe deux façons d'ajouter cette capacité. Le premier consiste à installer la bibliothèque TensorFlow complète.
Le package TensorFlow complet est installé avec les suivants:
pip install tensorflowDans les cas d'utilisation où vous avez besoin d'une petite empreinte, comme sur un Raspberry Pi ou des périphériques intégrés similaires, vous voudrez installer l'interpréteur Tflite.
pip install --extra-index-url https://google-coral.github.io/py-repo/ tflite_runtimeSi vous n'êtes pas en mesure d'installer la roue, vous devrez peut-être installer certaines dépendances système pour l'entrée audio et la sortie.
brew install lame portaudiosudo apt-get install portaudio19-dev libmp3lame-devNous ne prenons pas actuellement en charge Native Native et vous recommandons d'installer Windows Sous-System pour Linux (WSL) avec les dépendances Debian. Cependant, si vous souhaitez travailler sur le support Windows natif, nous accepterons volontiers les demandes de traction.
Une autre avenue potentielle pour l'utilisation spokestack sur Windows 10 est d'Anaconda. Ceci est sans support pour le texte à la parole (TTS) mais en raison de la dépendance boiteuse. Portaudio, en revanche, peut être installé via conda .
conda install portaudio Le moyen le plus rapide de commencer à utiliser spokestack est d'utiliser l'une des instances de pipeline préconfigurées. Nous proposons plusieurs de ces profils, qui correspondent à de nombreux cas d'utilisation générale.
from spokestack . profile . wakeword_asr import WakewordSpokestackASR
pipeline = WakewordSpokestackASR . create (
"spokestack_id" , "spokestack_secret" , model_dir = "path_to_wakeword_model"
) Si vous souhaitez un contrôle à grain fin sur ce qui est inclus dans le pipeline, vous pouvez utiliser SpeechPipeline . Il s'agit du module qui attache des VAD (détection d'activité vocale), Wakeword et ASR (détection de parole automatisée). Le VAD écoute un cadre audio capturé par le périphérique d'entrée pour déterminer si la parole est présente. Si c'est le cas, le modèle de wakeword traite les cadres d'audio ultérieurs à la recherche du mot-clé pour lequel il a été formé pour reconnaître. Si le mot-clé est trouvé, le pipeline est activé et effectue une reconnaissance vocale, convertissant l'audio ultérieur en une transcription. Le SpeechPipeline est initialisé comme ceci:
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 () Maintenant que le pipeline est en cours d'exécution, il devient important d'accéder aux résultats des processus à certains événements. Par exemple, lorsque la parole est reconnue, il existe un événement recognize . Ces événements permettent d'exécuter du code à l'extérieur du pipeline en réponse. Le processus d'enregistrement d'une réponse se fait avec un rappel de pipeline, que nous couvrirons dans la section suivante.
Les rappels de pipeline permettent l'exécution de code supplémentaire lorsqu'un événement de parole est détecté. Par exemple, nous pouvons imprimer lorsque le pipeline est activé en enregistrant une fonction avec le pipeline.event Decorator.
@ pipeline . event
def on_activate ( context ):
print ( context . is_active )L'un des cas d'utilisation les plus importants pour un rappel de pipeline consiste à accéder à la transcription ASR pour un traitement supplémentaire par le NLU. La transcription est accessible avec les suivantes:
@ pipeline . event
def on_recognize ( context ):
print ( context . transcript )La compréhension du langage naturel transforme un énoncé en données structurées sur lesquelles une machine peut agir. Pour nos besoins, il s'agit de détection de l'intention des articulations et de remplissage des fentes. Vous pouvez en savoir plus sur les concepts ici. Nous aimons considérer les intentions comme l'action qu'un utilisateur désire d'une application, et les places sont les arguments facultatifs pour réaliser l'action demandée. Notre modèle NLU est initialisé comme ceci:
from spokestack . nlu . tflite import TFLiteNLU
nlu = TFLiteNLU ( "path_to_tflite_model" )Maintenant que le NLU est initialisé, nous pouvons aller de l'avant et ajouter cette partie au rappel.
@ pipeline . event
def on_recognize ( context ):
results = nlu ( context . transcript ) Texte à la parole, comme son nom l'indique, convertit le texte en audio parlé. C'est la méthode pour donner une voix à votre application. Nous fournissons une voix TTS gratuitement lorsque vous vous inscrivez à un compte Spokestack, mais vous pouvez nous contacter pour former une voix vraiment personnalisée. Les touches API TTS sont les mêmes que SpeechRecognizer . L'initialisation TTS de base est la suivante:
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" )Pour démontrer un rappel TTS simple, configurons quelque chose qui lit ce que l'ASR a reconnu:
@ pipeline . event
def on_recognize ( context ):
manager . synthesize ( context . transcript )Du répertoire du projet racine:
cd docs
make clean && make htmlCe projet est distribué à l'aide de PYPI. Ce qui suit est la commande à construire pour l'installation.
python setup.py clean --all ; rm -r ./dist
python setup.py sdist bdist_wheelLa ficelle est utilisée pour télécharger la distribution de la roue et de la source.
twine upload dist/ * Copyright 2021 Spokestack, Inc.
Licencié sous la licence Apache, version 2.0 (la "licence"); Vous ne pouvez pas utiliser ce fichier sauf conforme à la licence. Vous pouvez obtenir une copie de la licence ici
Sauf exiger la loi applicable ou convenu par écrit, les logiciels distribués en vertu de la licence sont distribués sur une base «tel quel», sans garantie ou conditions d'aucune sorte, expresse ou implicite. Voir la licence pour la langue spécifique régissant les autorisations et les limitations sous la licence.