
歡迎來到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(“許可”)獲得許可;除了符合許可外,您不得使用此文件。您可以在此處獲得許可證的副本
除非適用法律要求或以書面形式同意,否則根據許可證分配的軟件是按照“原樣”分發的,沒有任何明示或暗示的任何形式的保證或條件。請參閱許可證,以獲取執行許可條款和限制的特定語言。