
¡Bienvenido a Spokestack Python! Esta biblioteca está destinada a desarrollar interfaces de voz en Python. Esto puede incluir cualquier cosa, desde aplicaciones Raspberry Pi, como altavoces inteligentes tradicionales hasta aplicaciones web de Django. Cualquier cosa integrada en Python puede recibir una interfaz de voz.
Una vez que se han satisfecho las dependencias del sistema, puede instalar la biblioteca con la siguiente.
pip install spokestackEsta biblioteca requiere una forma de ejecutar modelos TFLITE. Hay dos formas de agregar esta habilidad. El primero es instalar la biblioteca completa de TensorFlow.
El paquete completo de TensorFlow se instala con lo siguiente:
pip install tensorflowEn casos de uso en los que necesita una huella pequeña, como en una Raspberry Pi o dispositivos incrustados similares, querrá instalar el intérprete TFLite.
pip install --extra-index-url https://google-coral.github.io/py-repo/ tflite_runtimeSi no puede instalar la rueda, es posible que deba instalar algunas dependencias del sistema para la entrada y salida de audio.
brew install lame portaudiosudo apt-get install portaudio19-dev libmp3lame-devActualmente no admitimos Windows 10 de forma nativa, y le recomendamos que instale un subsistema de Windows para Linux (WSL) con las dependencias de Debian. Sin embargo, si desea trabajar en el soporte nativo de Windows, con gusto aceptaremos solicitudes de extracción.
Otra posible vía para usar spokestack en Windows 10 es de Anaconda. Esto es sin soporte para Text to Speech (TTS), aunque debido a la dependencia coja. Portaudio, por otro lado, se puede instalar a través de conda .
conda install portaudio La forma más rápida de comenzar a usar spokestack es usar una de las instancias de tubería preconfiguradas. Ofrecemos varios de estos perfiles, que se ajustan a muchos casos de uso general.
from spokestack . profile . wakeword_asr import WakewordSpokestackASR
pipeline = WakewordSpokestackASR . create (
"spokestack_id" , "spokestack_secret" , model_dir = "path_to_wakeword_model"
) Si desea un control de grano fino sobre lo que se incluye en la tubería, puede usar SpeechPipeline . Este es el módulo que une VAD (detección de actividades de voz), Wakeo Wake y ASR (detección automatizada del habla). El VAD escucha un marco de audio capturado por el dispositivo de entrada para determinar si el habla está presente. Si es así, el modelo de palabra de wetak procesa marcos posteriores de audio en busca de la palabra clave que ha sido capacitado para reconocer. Si se encuentra la palabra clave, la tubería se activa y realiza el reconocimiento de voz, convirtiendo el audio posterior en una transcripción. El SpeechPipeline se inicializa así:
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 () Ahora que la tubería se está ejecutando, se vuelve importante acceder a los resultados de los procesos en ciertos eventos. Por ejemplo, cuando se reconoce el discurso, hay un evento recognize . Estos eventos permiten que el código se ejecute fuera de la tubería en respuesta. El proceso de registro de una respuesta se realiza con una devolución de llamada de tuberías, que cubriremos en la siguiente sección.
Las devoluciones de llamada de la tubería permiten que se ejecute código adicional cuando se detecte un evento de habla. Por ejemplo, podemos imprimir cuando la tubería se activa registrando una función con el Decorador pipeline.event .
@ pipeline . event
def on_activate ( context ):
print ( context . is_active )Uno de los casos de uso más importantes para una devolución de llamada de la tubería es acceder a la transcripción ASR para el procesamiento adicional por parte de la NLU. Se accede a la transcripción con lo siguiente:
@ pipeline . event
def on_recognize ( context ):
print ( context . transcript )La comprensión del lenguaje natural convierte un enunciado en datos estructurados sobre los que puede actuar una máquina. Para nuestros propósitos, esta es la detección de intenciones de la junta y el relleno de ranuras. Puedes leer más sobre los conceptos aquí. Nos gusta pensar en las intenciones como la acción que un usuario desea de una aplicación, y ranuras como los argumentos opcionales para cumplir con la acción solicitada. Nuestro modelo NLU se inicializa así:
from spokestack . nlu . tflite import TFLiteNLU
nlu = TFLiteNLU ( "path_to_tflite_model" )Ahora que se inicializa la NLU, podemos seguir adelante y agregar esa parte a la devolución de llamada.
@ pipeline . event
def on_recognize ( context ):
results = nlu ( context . transcript ) El texto al habla, como su nombre lo indica, convierte el texto en audio hablado. Este es el método para darle una voz a su aplicación. Proporcionamos una voz TTS de forma gratuita cuando se registra para una cuenta de Spokestack, pero puede contactarnos para capacitar una voz verdaderamente personalizada. Las teclas de la API TTS son las mismas que SpeechRecognizer . La inicialización básica de TTS es la siguiente:
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" )Para demostrar una nueva devolución de llamada TTS, configuremos algo que lea lo que el ASR reconoció:
@ pipeline . event
def on_recognize ( context ):
manager . synthesize ( context . transcript )Del directorio del proyecto root:
cd docs
make clean && make htmlEste proyecto se distribuye utilizando PYPI. El siguiente es el comando para construir para la instalación.
python setup.py clean --all ; rm -r ./dist
python setup.py sdist bdist_wheelSe utiliza Twine para cargar la distribución de la rueda y la fuente.
twine upload dist/ * Copyright 2021 Spokestack, Inc.
Licenciado bajo la licencia Apache, versión 2.0 (la "licencia"); No puede usar este archivo, excepto de conformidad con la licencia. Puede obtener una copia de la licencia aquí
A menos que la ley aplicable sea requerida o acordado por escrito, el software distribuido bajo la licencia se distribuye de manera "como es", sin garantías o condiciones de ningún tipo, ya sea expresas o implícitas. Consulte la licencia para los permisos y limitaciones de rigor de idioma específico bajo la licencia.