
Добро пожаловать в Spokestack Python! Эта библиотека предназначена для разработки голосовых интерфейсов в Python. Это может включать в себя все, от приложений Raspberry Pi, таких как традиционные умные динамики до веб -приложений Django. Все, что встроено в Python, может быть предоставлен голосовой интерфейс.
Как только системные зависимости будут удовлетворены, вы можете установить библиотеку со следующим.
pip install spokestackЭта библиотека требует способ запуска моделей Tflite. Есть два способа добавить эту способность. Первый - это установка полной библиотеки TensorFlow.
Полный пакет TensorFlow установлен со следующим:
pip install tensorflowВ случае использования, когда вам требуется небольшой площадь, например, на малиновом PI или аналогичных встроенных устройствах, вы захотите установить интерпретатор Tflite.
pip install --extra-index-url https://google-coral.github.io/py-repo/ tflite_runtimeЕсли вы не можете установить колесо, вам, возможно, придется установить некоторые системные зависимости для аудио входа и вывода.
brew install lame portaudiosudo apt-get install portaudio19-dev libmp3lame-devВ настоящее время мы не поддерживаем Windows 10 и рекомендуем установить подсистему Windows для Linux (WSL) с зависимостями Debian. Однако, если вы хотите поработать над поддержкой Native Windows, мы с радостью примем запросы на привлечение.
Еще один потенциальный путь для использования spokestack на Windows 10 - Anaconda. Это без поддержки текста в речи (TTS), хотя из -за хромой зависимости. Portaudio, с другой стороны, может быть установлен через conda .
conda install portaudio Самый быстрый способ начать использовать spokestack -это использовать один из предварительно сконфигурированных экземпляров трубопровода. Мы предлагаем несколько из этих профилей, которые соответствуют многим общим вариантам использования.
from spokestack . profile . wakeword_asr import WakewordSpokestackASR
pipeline = WakewordSpokestackASR . create (
"spokestack_id" , "spokestack_secret" , model_dir = "path_to_wakeword_model"
) Если вам нужна мелкозернистое контроль над тем, что включено в трубопровод, вы можете использовать SpeechPipeline . Это модуль, который связывает VAD (обнаружение голосовой активности), WakeWord и ASR (автоматическое обнаружение речи). VAD слушает кадр звука, захваченный устройством ввода, чтобы определить, присутствует ли речь. Если это так, модель WakeWord обрабатывает последующие кадры звука в поисках ключевого слова, которое было обучено распознавать. Если ключевое слово найдено, конвейер активируется и выполняет распознавание речи, преобразуя последующее аудио в стенограмму. SpeechPipeline инициализируется так:
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 () Теперь, когда работает трубопровод, становится важно получить доступ к результатам процессов на определенных событиях. Например, когда речь признается, существует событие recognize . Эти события позволяют выполнять код за пределами трубопровода в ответ. Процесс регистрации ответа выполняется с помощью обратного вызова трубопровода, который мы рассмотрим в следующем разделе.
Конвейерные обратные вызовы позволяют выполнять дополнительный код при обнаружении речевого события. Например, мы можем распечатать, когда конвейер активируется путем регистрации функции с помощью pipeline.event .
@ pipeline . event
def on_activate ( context ):
print ( context . is_active )Одним из наиболее важных вариантов использования для обратного вызова трубопровода является доступ к транскрипту ASR для дополнительной обработки NLU. Стенограмма доступна следующим образом:
@ pipeline . event
def on_recognize ( context ):
print ( context . transcript )Понимание естественного языка превращает высказывание в структурированные данные, на которые может действовать машина. Для наших целей это совместное обнаружение и наполнение слотов. Вы можете прочитать больше о понятиях здесь. Нам нравится думать о намерениях как о действии, которое пользователь желает от приложения, и слоты как необязательные аргументы для выполнения запрошенного действия. Наша модель NLU инициализируется так:
from spokestack . nlu . tflite import TFLiteNLU
nlu = TFLiteNLU ( "path_to_tflite_model" )Теперь, когда NLU инициализирован, мы можем пойти дальше и добавить эту часть к обратному обращению.
@ pipeline . event
def on_recognize ( context ):
results = nlu ( context . transcript ) Текст в речь, как следует из названия, преобразует текст в разговорную аудио. Это метод подачи вашего приложения голоса. Мы предоставляем один голос TTS бесплатно, когда вы регистрируетесь в учетной записи Spokestack, но вы можете связаться с нами, чтобы обучить действительно пользовательский голос. Клавиши API TTS такие же, как SpeechRecognizer . Основная инициализация TTS является следующим:
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" )Чтобы продемонстрировать простой обратный вызов TTS, давайте настроем что -то, что читает то, что узнал ASR:
@ pipeline . event
def on_recognize ( context ):
manager . synthesize ( context . transcript )Из корневого каталога проекта:
cd docs
make clean && make htmlЭтот проект распределен с использованием PYPI. Ниже приведена команда для создания для установки.
python setup.py clean --all ; rm -r ./dist
python setup.py sdist bdist_wheelТводник используется для загрузки колеса и распределения источников.
twine upload dist/ * Copyright 2021 Spokestack, Inc.
Лицензировано по лицензии Apache, версия 2.0 («Лицензия»); Вы не можете использовать этот файл, кроме как в соответствии с лицензией. Вы можете получить копию лицензии здесь
Если не требуется применимый закон или не согласен в письменной форме, программное обеспечение, распространяемое по лицензии, распределяется по основам «как есть», без каких -либо гарантий или условий, явных или подразумеваемых. См. Лицензию для конкретного языка, регулирующих разрешения и ограничения по лицензии.