
ยินดีต้อนรับสู่ Spokestack Python! ไลบรารีนี้มีไว้สำหรับการพัฒนาอินเทอร์เฟซเสียงใน Python ซึ่งอาจรวมถึงอะไรก็ได้ตั้งแต่แอปพลิเคชัน Raspberry Pi เช่นลำโพงอัจฉริยะแบบดั้งเดิมไปจนถึงเว็บแอปพลิเคชัน Django สิ่งใดก็ตาม ที่สร้างขึ้นใน Python สามารถให้อินเทอร์เฟซเสียงได้
เมื่อการพึ่งพาระบบได้รับความพึงพอใจคุณสามารถติดตั้งไลบรารีด้วยสิ่งต่อไปนี้
pip install spokestackห้องสมุดนี้ต้องการวิธีเรียกใช้โมเดล tflite มีสองวิธีในการเพิ่มความสามารถนี้ ครั้งแรกคือการติดตั้งไลบรารี TensorFlow แบบเต็ม
แพ็คเกจ TensorFlow เต็มรูปแบบถูกติดตั้งด้วยสิ่งต่อไปนี้:
pip install tensorflowในกรณีการใช้งานที่คุณต้องการรอยเท้าขนาดเล็กเช่นบนราสเบอร์รี่ PI หรืออุปกรณ์ฝังตัวที่คล้ายกันคุณจะต้องติดตั้ง TFLITE Interpreter
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 อย่างไรก็ตามหากคุณต้องการทำงานในการสนับสนุน 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 (การตรวจจับกิจกรรมด้วยเสียง), WAKEWER และ 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 แต่คุณสามารถติดต่อเราเพื่อฝึกฝนเสียงที่กำหนดเองอย่างแท้จริง คีย์ 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_wheelTwine ใช้เพื่ออัปโหลดการกระจายล้อและแหล่งที่มา
twine upload dist/ * ลิขสิทธิ์ 2021 Spokestack, Inc.
ได้รับใบอนุญาตภายใต้ใบอนุญาต Apache เวอร์ชัน 2.0 ("ใบอนุญาต"); คุณไม่สามารถใช้ไฟล์นี้ยกเว้นตามใบอนุญาต คุณอาจได้รับสำเนาใบอนุญาตที่นี่
เว้นแต่ว่ากฎหมายที่บังคับใช้หรือตกลงเป็นลายลักษณ์อักษรซอฟต์แวร์ที่แจกจ่ายภายใต้ใบอนุญาตจะถูกแจกจ่ายตาม "ตามพื้นฐาน" โดยไม่มีการรับประกันหรือเงื่อนไขใด ๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยนัย ดูใบอนุญาตสำหรับภาษาเฉพาะที่ควบคุมการอนุญาตและข้อ จำกัด ภายใต้ใบอนุญาต