
مرحبًا بك في Spokestack Python! هذه المكتبة مخصصة لتطوير واجهات صوتية في بيثون. يمكن أن يشمل ذلك أي شيء من تطبيقات Raspberry Pi مثل المتحدثين الذكيين التقليديين إلى تطبيقات الويب Django. يمكن إعطاء أي شيء مدمج في الثعبان واجهة صوتية.
بمجرد تلبية تبعيات النظام ، يمكنك تثبيت المكتبة بما يلي.
pip install spokestackتتطلب هذه المكتبة طريقة لتشغيل نماذج Tflite. هناك طريقتان لإضافة هذه القدرة. الأول هو تثبيت مكتبة TensorFlow الكاملة.
يتم تثبيت حزمة TensorFlow الكاملة مع ما يلي:
pip install tensorflowفي حالات الاستخدام التي تحتاج إلى بصمة صغيرة ، مثل على Raspberry 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. ومع ذلك ، إذا كنت ترغب في العمل على دعم 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/ * حقوق الطبع والنشر 2021 Spokestack ، Inc.
مرخصة بموجب ترخيص Apache ، الإصدار 2.0 ("الترخيص") ؛ لا يجوز لك استخدام هذا الملف إلا في الامتثال للترخيص. يمكنك الحصول على نسخة من الترخيص هنا
ما لم يكن مطلوبًا بموجب القانون المعمول به أو الموافقة على الكتابة ، يتم توزيع البرامج الموزعة بموجب الترخيص على أساس "كما هي" ، دون ضمانات أو شروط من أي نوع ، إما صريحة أو ضمنية. راجع ترخيص الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص.