
Bem -vindo ao Python da porta -voz! Esta biblioteca destina -se ao desenvolvimento de interfaces de voz no Python. Isso pode incluir qualquer coisa, desde aplicativos Raspberry Pi, como alto -falantes inteligentes tradicionais a aplicativos da Web do Django. Qualquer coisa incorporada em Python pode receber uma interface de voz.
Depois que as dependências do sistema forem satisfeitas, você pode instalar a biblioteca com o seguinte.
pip install spokestackEsta biblioteca requer uma maneira de executar modelos Tflite. Existem duas maneiras de adicionar essa habilidade. O primeiro é instalar a biblioteca completa do tensorflow.
O pacote completo do tensorflow está instalado com o seguinte:
pip install tensorflowNos casos de uso em que você precisa de uma pegada pequena, como em um Raspberry Pi ou dispositivos incorporados similares, você deseja instalar o intérprete Tflite.
pip install --extra-index-url https://google-coral.github.io/py-repo/ tflite_runtimeSe você não conseguir instalar a roda, pode ser necessário instalar algumas dependências do sistema para entrada e saída de áudio.
brew install lame portaudiosudo apt-get install portaudio19-dev libmp3lame-devAtualmente, não suportamos o Windows 10 nativamente e recomendamos que você instale o Subsistema do Windows para Linux (WSL) com as dependências do Debian. No entanto, se você quiser trabalhar no suporte ao Windows nativo, aceitaremos o prazer de obter solicitações de tração.
Outra avenida potencial para o uso spokestack no Windows 10 é da Anaconda. Isso não tem suporte ao texto na fala (TTS), embora devido à dependência esfarrapada. Portaudio, por outro lado, pode ser instalado via conda .
conda install portaudio A maneira mais rápida de começar a usar spokestack é usando uma das instâncias de pipeline pré-configuradas. Oferecemos vários desses perfis, que se encaixam em muitos casos de uso geral.
from spokestack . profile . wakeword_asr import WakewordSpokestackASR
pipeline = WakewordSpokestackASR . create (
"spokestack_id" , "spokestack_secret" , model_dir = "path_to_wakeword_model"
) Se você deseja controle de granulação fina sobre o que está incluído no pipeline, pode usar SpeechPipeline . Este é o módulo que une VAD (Detecção de Atividade de Voz), Wakeword e ASR (Detecção de Speecão Automatizada). O VAD ouve um quadro de áudio capturado pelo dispositivo de entrada para determinar se está presente a fala. Se for, o modelo Wakeword processa os quadros subsequentes do áudio que procuram a palavra -chave que foi treinada para reconhecer. Se a palavra -chave for encontrada, o pipeline será ativado e realizará o reconhecimento de fala, convertendo o áudio subsequente em uma transcrição. A SpeechPipeline é inicializada assim:
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 () Agora que o pipeline está em execução, torna -se importante acessar os resultados de processos em determinados eventos. Por exemplo, quando a fala é reconhecida, há um evento recognize . Esses eventos permitem que o código seja executado fora do pipeline em resposta. O processo de registro de uma resposta é feito com um retorno de chamada de pipeline, que abordaremos na próxima seção.
Os retornos de chamada do pipeline permitem que o código adicional seja executado quando um evento de fala for detectado. Por exemplo, podemos imprimir quando o pipeline for ativado registrando uma função no pipeline.event Decorator.
@ pipeline . event
def on_activate ( context ):
print ( context . is_active )Um dos casos de uso mais importantes para um retorno de chamada de pipeline é acessar a transcrição do ASR para processamento adicional pela NLU. A transcrição é acessada com o seguinte:
@ pipeline . event
def on_recognize ( context ):
print ( context . transcript )O entendimento da linguagem natural transforma uma expressão em dados estruturados em que uma máquina pode atuar. Para nossos propósitos, isso é detecção de intenções articular e preenchimento de slots. Você pode ler mais sobre os conceitos aqui. Gostamos de pensar nos intenções como a ação que um usuário deseja de um aplicativo e slots como argumentos opcionais para cumprir a ação solicitada. Nosso modelo NLU é inicializado assim:
from spokestack . nlu . tflite import TFLiteNLU
nlu = TFLiteNLU ( "path_to_tflite_model" )Agora que a NLU é inicializada, podemos seguir em frente e adicionar essa parte ao retorno de chamada.
@ pipeline . event
def on_recognize ( context ):
results = nlu ( context . transcript ) O texto da fala, como o nome indica, converte texto em áudio falado. Este é o método para dar voz ao seu aplicativo. Fornecemos uma voz TTS gratuitamente quando você se inscreve em uma conta de porta -voz, mas você pode entrar em contato conosco para treinar uma voz verdadeiramente personalizada. As teclas API TTS são as mesmas que SpeechRecognizer . A inicialização básica do TTS é o seguinte:
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 demonstrar um simples retorno de chamada TTS, vamos configurar algo que lê de volta o que o ASR reconheceu:
@ pipeline . event
def on_recognize ( context ):
manager . synthesize ( context . transcript )Do diretório raiz do projeto:
cd docs
make clean && make htmlEste projeto é distribuído usando Pypi. A seguir, é apresentado o comando para construir para instalação.
python setup.py clean --all ; rm -r ./dist
python setup.py sdist bdist_wheelO barbante é usado para fazer upload da distribuição da roda e da fonte.
twine upload dist/ * Copyright 2021 Spokestack, Inc.
Licenciado sob a licença Apache, versão 2.0 (a "licença"); Você não pode usar esse arquivo, exceto em conformidade com a licença. Você pode obter uma cópia da licença aqui
A menos que exigido pela lei aplicável ou acordada por escrito, o software distribuído pela licença é distribuído "como está", sem garantias ou condições de qualquer tipo, expressa ou implícita. Consulte a licença para o idioma específico que rege as permissões e limitações sob a licença.