
欢迎来到Spokestack Python!该库旨在在Python中开发语音接口。这可以包含从Raspberry Pi应用程序(例如传统智能扬声器)到Django Web应用程序的任何内容。可以为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,并建议您使用Debian依赖项安装Windows子系统(WSL)。但是,如果您想从事本机Windows支持,我们将很乐意接受拉动请求。
在Windows 10上使用spokestack的另一个潜在途径是Anaconda。由于la脚的依赖性,这不支持语音(TTS)的文本(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聆听输入设备捕获的音频框架,以确定是否存在语音。如果是这样,则wword模型会处理随后的音频帧,以寻找已训练已识别的关键字。如果找到关键字,则将管道激活并执行语音识别,将后续音频转换为成绩单。 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 Decorator注册函数来激活管道时打印。
@ pipeline . event
def on_activate ( context ):
print ( context . is_active )管道回调最重要的用例之一是访问NLU的ASR成绩单以进行其他处理。访问以下成绩单以下内容:
@ 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 )顾名思义,将文本转换为语音,将文本转换为口语音频。这是给您的应用程序发音的方法。当您注册Spokestack帐户时,我们可以免费提供一个TTS声音,但是您可以与我们联系以训练真正的自定义声音。 TTS API键与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/ * 版权2021 Spokestack,Inc。
根据Apache许可证(版本2.0(“许可”)获得许可;除了符合许可外,您不得使用此文件。您可以在此处获得许可证的副本
除非适用法律要求或以书面形式同意,否则根据许可证分配的软件是按照“原样”分发的,没有任何明示或暗示的任何形式的保证或条件。请参阅许可证,以获取执行许可条款和限制的特定语言。