مكتبة لأداء التعرف على الكلام، مع دعم العديد من المحركات وواجهات برمجة التطبيقات، عبر الإنترنت وغير متصل.
تحديث 2022-02-09 : مرحبًا بالجميع! بدأ هذا المشروع كعرض توضيحي للتكنولوجيا، ولكنه يحتاج هذه الأيام إلى وقت أطول مما أحتاجه لمواكبة جميع العلاقات العامة والقضايا. ولذلك، أود أن أوجه دعوة مفتوحة للمتعاونين - فقط تواصل معنا على [email protected] إذا كنت مهتمًا!
محرك التعرف على الكلام/دعم واجهة برمجة التطبيقات:
البدء السريع: pip install SpeechRecognition
. راجع قسم "التثبيت" لمزيد من التفاصيل.
لتجربته بسرعة، قم بتشغيل python -m speech_recognition
بعد التثبيت.
روابط المشروع:
يوثق مرجع المكتبة كل كائن يمكن الوصول إليه بشكل عام في المكتبة. تم تضمين هذه الوثيقة أيضًا تحت reference/library-reference.rst
.
راجع ملاحظات حول استخدام PocketSphinx للحصول على معلومات حول تثبيت اللغات وتجميع PocketSphinx وإنشاء حزم اللغات من الموارد عبر الإنترنت. تم تضمين هذه الوثيقة أيضًا تحت reference/pocketsphinx.rst
.
يجب عليك تثبيت نماذج Vosk لاستخدام Vosk. هنا نماذج متاحة. يجب عليك وضعها في مجلد النماذج الخاص بمشروعك، مثل "your-project-folder/models/your-vosk-model"
راجع examples/
الدليل في جذر المستودع للحصول على أمثلة الاستخدام:
recognizer_instance.energy_threshold
للحصول على التفاصيل)أولاً، تأكد من حصولك على جميع المتطلبات المدرجة في قسم "المتطلبات".
أسهل طريقة لتثبيت هذا هي استخدام pip install SpeechRecognition
.
بخلاف ذلك، قم بتنزيل التوزيعة المصدرية من PyPI، واستخرج الأرشيف.
في المجلد، قم بتشغيل python setup.py install
.
لاستخدام كافة وظائف المكتبة، يجب أن يكون لديك:
Microphone
)recognizer_instance.recognize_sphinx
)recognizer_instance.recognize_google_cloud
)recognizer_instance.recognize_vosk
)recognizer_instance.recognize_whisper
)recognizer_instance.recognize_openai
)recognizer_instance.recognize_groq
)المتطلبات التالية اختيارية، ولكن يمكنها تحسين الوظيفة أو توسيعها في بعض المواقف:
تتناول الأقسام التالية تفاصيل كل متطلب.
متطلب البرنامج الأول هو Python 3.9+. هذا مطلوب لاستخدام المكتبة.
يكون PyAudio مطلوبًا فقط إذا كنت تريد استخدام إدخال الميكروفون ( Microphone
). يلزم وجود الإصدار 0.2.11+ من PyAudio، حيث أن الإصدارات السابقة عرفت أخطاء في إدارة الذاكرة عند التسجيل من الميكروفونات في مواقف معينة.
إذا لم يتم تثبيته، فسيظل كل شيء في المكتبة يعمل، باستثناء محاولة إنشاء كائن Microphone
سيؤدي إلى ظهور AttributeError
.
تعتبر تعليمات التثبيت الموجودة على موقع PyAudio جيدة جدًا - ومن أجل الراحة، تم تلخيصها أدناه:
pip install SpeechRecognition[audio]
في الوحدة الطرفية.sudo apt-get install python-pyaudio python3-pyaudio
في الوحدة الطرفية.sudo apt-get install portaudio19-dev python-all-dev python3-all-dev && sudo pip install SpeechRecognition[audio]
(استبدل pip
بـ pip3
إذا باستخدام بايثون 3).brew install portaudio
. ثم قم بالتثبيت باستخدام PyAudio باستخدام Pip: pip install SpeechRecognition[audio]
.portaudio19-dev
و python-all-dev
(أو python3-all-dev
في حالة استخدام Python 3) (أو أقرب ما يعادلها) باستخدام مدير الحزم من اختيارك، ثم قم بالتثبيت باستخدام PyAudio باستخدام النقطة: pip install SpeechRecognition[audio]
(استبدل pip
بـ pip3
في حالة استخدام Python 3). يتم تضمين حزم عجلة PyAudio لإصدارات Python 64 بت الشائعة على نظامي التشغيل Windows وLinux للراحة، ضمن دليل third-party/
في جذر المستودع. للتثبيت، ما عليك سوى تشغيل pip install wheel
متبوعًا بـ pip install ./third-party/WHEEL_FILENAME
(استبدل pip
بـ pip3
إذا كنت تستخدم Python 3) في الدليل الجذر للمستودع.
يكون PocketSphinx-Python مطلوبًا فقط إذا كنت تريد استخدام أداة التعرف على Sphinx ( recognizer_instance.recognize_sphinx
).
يتم تضمين حزم عجلة PocketSphinx-Python لإصدار 64 بت Python 3.4 و3.5 على نظام التشغيل Windows للراحة، ضمن دليل third-party/
. للتثبيت، ما عليك سوى تشغيل pip install wheel
متبوعًا بـ pip install ./third-party/WHEEL_FILENAME
(استبدل pip
بـ pip3
إذا كنت تستخدم Python 3) في مجلد SpeechRecognition.
في Linux وأنظمة POSIX الأخرى (مثل OS X)، قم بتشغيل pip install SpeechRecognition[pocketsphinx]
. اتبع الإرشادات الموجودة ضمن "إنشاء PocketSphinx-Python من المصدر" في الملاحظات حول استخدام PocketSphinx للحصول على إرشادات التثبيت.
لاحظ أن الإصدارات المتوفرة في معظم مستودعات الحزم قديمة ولن تعمل مع بيانات اللغة المجمعة. يوصى باستخدام حزم العجلات المجمعة أو البناء من المصدر.
راجع ملاحظات حول استخدام PocketSphinx للحصول على معلومات حول تثبيت اللغات وتجميع PocketSphinx وإنشاء حزم اللغات من الموارد عبر الإنترنت. تم تضمين هذه الوثيقة أيضًا تحت reference/pocketsphinx.rst
.
تكون واجهة برمجة تطبيقات Vosk مطلوبة فقط إذا كنت تريد استخدام أداة التعرف على Vosk ( recognizer_instance.recognize_vosk
).
يمكنك تثبيته باستخدام python3 -m pip install vosk
.
يجب عليك أيضًا تثبيت نماذج Vosk:
فيما يلي نماذج متاحة للتحميل. يجب عليك وضعها في مجلد النماذج الخاص بمشروعك، مثل "your-project-folder/models/your-vosk-model"
مكتبة Google Cloud Speech لـ Python مطلوبة فقط إذا كنت تريد استخدام Google Cloud Speech API ( recognizer_instance.recognize_google_cloud
).
إذا لم يتم تثبيته، فسيظل كل شيء في المكتبة يعمل، باستثناء استدعاء recognizer_instance.recognize_google_cloud
سيؤدي إلى ظهور RequestError
.
وفقًا لتعليمات التثبيت الرسمية، فإن الطريقة الموصى بها لتثبيت هذا هي استخدام Pip: تنفيذ pip install google-cloud-speech
(استبدل pip
بـ pip3
إذا كنت تستخدم Python 3).
مطلوب برنامج تشفير FLAC لتشفير البيانات الصوتية لإرسالها إلى واجهة برمجة التطبيقات. إذا كنت تستخدم نظام التشغيل Windows (x86 أو x86-64)، أو OS X (أجهزة Intel Mac فقط، أو OS X 10.6 أو أعلى)، أو Linux (x86 أو x86-64)، فهذا موجود بالفعل في هذه المكتبة - لا تحتاج إلى تثبيت أي شيء .
بخلاف ذلك، تأكد من أن لديك أداة سطر الأوامر flac
، والتي تكون متاحة غالبًا من خلال مدير حزم النظام. على سبيل المثال، عادةً ما يكون هذا هو sudo apt-get install flac
على مشتقات Debian، أو brew install flac
على OS X مع Homebrew.
يكون Whisper مطلوبًا فقط إذا كنت تريد استخدام Whisper ( recognizer_instance.recognize_whisper
).
يمكنك تثبيته باستخدام python3 -m pip install SpeechRecognition[whisper-local]
.
مكتبة openai مطلوبة فقط إذا كنت تريد استخدام OpenAI Whisper API ( recognizer_instance.recognize_openai
).
يمكنك تثبيته باستخدام python3 -m pip install SpeechRecognition[openai]
.
الرجاء تعيين متغير البيئة OPENAI_API_KEY
قبل استدعاء recognizer_instance.recognize_openai
.
تكون المكتبة groq مطلوبة فقط إذا كنت تريد استخدام Groq Whisper API ( recognizer_instance.recognize_groq
).
يمكنك تثبيته باستخدام python3 -m pip install SpeechRecognition[groq]
.
الرجاء تعيين متغير البيئة GROQ_API_KEY
قبل استدعاء recognizer_instance.recognize_groq
.
حاول زيادة خاصية recognizer_instance.energy_threshold
. هذا هو مدى حساسية أداة التعرف عندما يجب أن يبدأ التعرف. القيم الأعلى تعني أنها ستكون أقل حساسية، وهو أمر مفيد إذا كنت في غرفة صاخبة.
تعتمد هذه القيمة بشكل كامل على الميكروفون أو البيانات الصوتية. لا توجد قيمة واحدة تناسب الجميع، ولكن القيم الجيدة تتراوح عادة من 50 إلى 4000.
تحقق أيضًا من إعدادات مستوى صوت الميكروفون. إذا كان حساسًا للغاية، فقد يلتقط الميكروفون الكثير من الضوضاء المحيطة. إذا كان غير حساس للغاية، فقد يرفض الميكروفون الكلام باعتباره مجرد ضوضاء.
من المحتمل أن يتم تعيين الخاصية recognizer_instance.energy_threshold
على قيمة عالية جدًا بحيث لا يمكن البدء بها، ثم يتم ضبطها للأسفل تلقائيًا عن طريق ضبط عتبة الطاقة الديناميكية. قبل أن تصل إلى مستوى جيد، تكون عتبة الطاقة عالية جدًا بحيث يعتبر الكلام مجرد ضوضاء محيطة.
الحل هو تقليل هذه العتبة، أو الاتصال بـ recognizer_instance.adjust_for_ambient_noise
مسبقًا، مما سيؤدي إلى تعيين العتبة على قيمة جيدة تلقائيًا.
حاول ضبط لغة التعرف على لغتك/لهجتك. للقيام بذلك، راجع الوثائق الخاصة بـ recognizer_instance.recognize_sphinx
، recognizer_instance.recognize_google
، و recognizer_instance.recognize_wit
، recognizer_instance.recognize_bing
، recognizer_instance.recognize_api
، و recognizer_instance.recognize_houndify
، و recognizer_instance.recognize_ibm
.
على سبيل المثال، إذا كانت لغتك/لهجتك هي الإنجليزية البريطانية، فمن الأفضل استخدام "en-GB"
كلغة بدلاً من "en-US"
.
recognizer_instance.listen
؛ على وجه التحديد، عند الاتصال Microphone.MicrophoneStream.read
.يحدث هذا عادةً عند استخدام لوحة Raspberry Pi، والتي لا تتمتع بقدرات إدخال الصوت بمفردها. يؤدي هذا إلى حظر الميكروفون الافتراضي الذي يستخدمه PyAudio ببساطة عندما نحاول قراءته. إذا كنت تستخدم Raspberry Pi، فستحتاج إلى بطاقة صوت USB (أو ميكروفون USB).
بمجرد القيام بذلك، قم بتغيير كافة مثيلات Microphone()
إلى Microphone(device_index=MICROPHONE_INDEX)
، حيث MICROPHONE_INDEX
هو الفهرس الخاص بجهاز الميكروفون.
لمعرفة قيمة MICROPHONE_INDEX
، قم بتشغيل الكود التالي:
import speech_recognition as sr
for index , name in enumerate ( sr . Microphone . list_microphone_names ()):
print ( "Microphone with name " {1} " found for `Microphone(device_index={0})`" . format ( index , name ))
سيؤدي هذا إلى طباعة شيء مثل ما يلي:
تم العثور على ميكروفون يحمل الاسم "HDA Intel HDMI: 0 (hw:0,3)" لـ `Microphone(device_index=0)` تم العثور على ميكروفون يحمل الاسم "HDA Intel HDMI: 1 (hw:0,7)" لـ `Microphone(device_index=1)` تم العثور على ميكروفون باسم "HDA Intel HDMI: 2 (hw:0,8)" لـ `Microphone(device_index=2)` تم العثور على ميكروفون باسم "Blue Snowball: USB Audio (hw:1,0)" لـ `Microphone(device_index=3)` تم العثور على ميكروفون باسم "hdmi" لـ `Microphone(device_index=4)` تم العثور على ميكروفون باسم "نبض" لـ `Microphone(device_index=5)` تم العثور على ميكروفون بالاسم "افتراضي" لـ `Microphone(device_index=6)`
الآن، لاستخدام ميكروفون Snowball، يجب عليك تغيير Microphone()
إلى Microphone(device_index=3)
.
Microphone()
إلى ظهور الخطأ IOError: No Default Input Device Available
.كما يشير الخطأ، لا يعرف البرنامج أي ميكروفون سيستخدم.
للمتابعة، استخدم Microphone(device_index=MICROPHONE_INDEX, ...)
بدلاً من Microphone(...)
أو قم بتعيين ميكروفون افتراضي في نظام التشغيل لديك. يمكنك الحصول على القيم المحتملة لـ MICROPHONE_INDEX
باستخدام الرمز الموجود في إدخال استكشاف الأخطاء وإصلاحها أعلى هذا مباشرةً.
اعتبارًا من الإصدار 3.0 من PyInstaller، أصبح التعرف على الكلام مدعومًا بشكل جاهز. إذا كنت تواجه مشكلات غريبة عند تجميع برنامجك باستخدام PyInstaller، فما عليك سوى تحديث PyInstaller.
يمكنك القيام بذلك بسهولة عن طريق تشغيل pip install --upgrade pyinstaller
.
يعني الخطأ "bt_audio_service_open" أن لديك جهاز صوت Bluetooth، ولكن نظرًا لأن الجهاز الفعلي غير متصل حاليًا، فلا يمكننا استخدامه فعليًا - إذا كنت لا تستخدم ميكروفون Bluetooth، فيمكن تجاهل ذلك بأمان. إذا كنت كذلك، والصوت لا يعمل، فتحقق مرة أخرى للتأكد من توصيل الميكروفون بالفعل. لا يبدو أن هناك طريقة بسيطة لتعطيل هذه الرسائل.
بالنسبة للأخطاء بالنموذج "ALSA lib [...] Unknown PCM"، راجع إجابة StackOverflow هذه. بشكل أساسي، للتخلص من خطأ النموذج "Unknown PCM Cards.pcm.rear"، ما عليك سوى التعليق على pcm.rear cards.pcm.rear
في /usr/share/alsa/alsa.conf
و ~/.asoundrc
و /etc/asound.conf
.
بالنسبة إلى "خادم jack لا يعمل أو لا يمكن بدء تشغيله" أو "فشل الاتصال (2) بـ /dev/shm/jack-1000/default/jack_0 (يخطئ = لا يوجد مثل هذا الملف أو الدليل)" أو "محاولة الاتصال بالخادم "فشل"، وذلك بسبب محاولة ALSA الاتصال بـ JACK، ويمكن تجاهلها بأمان. لست على علم بأي طريقة بسيطة لإيقاف تشغيل هذه الرسائل في الوقت الحالي، إلى جانب تعطيل الطباعة تمامًا أثناء بدء تشغيل الميكروفون.
ChildProcessError
تفيد بأنه لا يمكن العثور على محول FLAC للنظام، على الرغم من تثبيته.لن ينجح تثبيت FLAC لنظام التشغيل OS X مباشرة من التعليمات البرمجية المصدر، لأنه لا يضيف الملفات التنفيذية إلى مسار البحث بشكل صحيح.
يضمن تثبيت FLAC باستخدام Homebrew تحديث مسار البحث بشكل صحيح. أولاً، تأكد من أن لديك Homebrew، ثم قم بتشغيل brew install flac
لتثبيت الملفات الضرورية.
لاختراق هذه المكتبة، تأكد أولاً من حصولك على جميع المتطلبات المدرجة في قسم "المتطلبات".
speech_recognition/__init__.py
.examples/
، ويوجد البرنامج النصي التجريبي في speech_recognition/__main__.py
.speech_recognition/
.reference/
الدليل.third-party/
. لتثبيت/إعادة تثبيت المكتبة محليًا، قم بتشغيل python -m pip install -e .[dev]
في الدليل الجذر للمشروع.
قبل الإصدار، يتم إضافة رقم الإصدار إلى README.rst
و speech_recognition/__init__.py
. يتم بعد ذلك إنشاء علامات الإصدار باستخدام git config gpg.program gpg2 && git config user.signingkey DB45F6C431DE7C2DCD99FF7904882258A4063489 && git tag -s VERSION_GOES_HERE -m "Version VERSION_GOES_HERE"
.
تتم الإصدارات عن طريق تشغيل make-release.sh VERSION_GOES_HERE
لإنشاء حزم مصدر Python، وتوقيعها، وتحميلها إلى PyPI.
لإجراء جميع الاختبارات:
python -m unittest discover --verbose
لتشغيل التحليل الثابت:
python -m flake8 --ignore=E501,E701,W503 speech_recognition tests examples setup.py
للتأكد من أن RST مُشكل بشكل جيد:
python -m rstcheck README.rst reference/ * .rst
ويتم الاختبار أيضًا تلقائيًا بواسطة GitHub Actions، عند كل دفعة.
الملف القابل للتنفيذ flac-win32
هو الملف الثنائي الرسمي لنظام التشغيل Windows FLAC 1.3.2 32 بت.
تم إنشاء الملفات التنفيذية المضمنة flac-linux-x86
و flac-linux-x86_64
من كود مصدر FLAC 1.3.2 مع Manylinux للتأكد من توافقها مع مجموعة واسعة من التوزيعات.
يجب أن تكون الملفات التنفيذية المضمنة في FLAC قابلة للتكرار بت. لإعادة بنائها، قم بتشغيل ما يلي داخل دليل المشروع على نظام يشبه دبيان:
# download and extract the FLAC source code
cd third-party
sudo apt-get install --yes docker.io
# build FLAC inside the Manylinux i686 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_i686:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86 && sudo rm -rf flac-1.3.2/
# build FLAC inside the Manylinux x86_64 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_x86_64:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86_64 && sudo rm -r flac-1.3.2/
يتم استخراج ملف flac-mac
المتضمن القابل للتنفيذ من xACT 2.39، وهو واجهة أمامية لـ FLAC 1.3.2 تتضمن بشكل ملائم ثنائيات لجميع برامج الترميز الخاصة بها. على وجه التحديد، إنها نسخة من xACT 2.39/xACT.app/Contents/Resources/flac
في xACT2.39.zip
.
أوبيري <[email protected]> (أنتوني تشانغ) com.bobsayshilol ارفيندش <[email protected]> (ارفيند تشيمباربو) كيفينسميث <[email protected]> (كيفن سميث) haas85 ديلايت رون <[email protected]> maverickagm كاموشادين <[email protected]> (كاموس هادينس) سبرادين <[email protected]> (سارة برادين) tb0hdan (بوهدان تركينويش) ثينيكس <[email protected]> (ستيف دوجيرتي) beeedy<[email protected]> (برودريك كارلين)
الرجاء الإبلاغ عن الأخطاء والاقتراحات في تعقب المشكلة!
كيفية الاستشهاد بهذه المكتبة (نمط APA):
تشانغ، أ. (2017). التعرف على الكلام (الإصدار 3.11) [البرمجيات]. متاح من https://github.com/Uberi/speech_recognition#readme.
كيفية الاستشهاد بهذه المكتبة (أسلوب شيكاغو):
تشانغ، أنتوني. 2017. التعرف على الكلام (الإصدار 3.11).
تحقق أيضًا من واجهة برمجة تطبيقات Python Baidu Yuyin، التي تعتمد على إصدار أقدم من هذا المشروع، وتضيف دعمًا لـ Baidu Yuyin. لاحظ أن Baidu Yuyin متاح فقط داخل الصين.
حقوق الطبع والنشر 2014-2017 أنتوني تشانغ (أوبيري). الكود المصدري لهذه المكتبة متاح على الإنترنت على GitHub.
يتم توفير ميزة التعرف على الكلام بموجب ترخيص BSD المكون من 3 فقرات. راجع LICENSE.txt
في الدليل الجذر للمشروع لمزيد من المعلومات.
من أجل التيسير، تتضمن جميع التوزيعات الرسمية لـ SpeechRecognition بالفعل نسخة من إشعارات حقوق الطبع والنشر والتراخيص اللازمة. في مشروعك، يمكنك ببساطة أن تقول إنه يمكن العثور على معلومات الترخيص الخاصة بـ SpeechRecognition في الملف README لـ SpeechRecognition، وتأكد من أن SpeechRecognition مرئي للمستخدمين إذا كانوا يرغبون في رؤيته .
يقوم SpeechRecognition بتوزيع التعليمات البرمجية المصدرية والثنائيات وملفات اللغة من CMU Sphinx. هذه الملفات مرخصة من قبل BSD وقابلة لإعادة التوزيع طالما تم الاحتفاظ بإشعارات حقوق الطبع والنشر بشكل صحيح. راجع speech_recognition/pocketsphinx-data/*/LICENSE*.txt
و third-party/LICENSE-Sphinx.txt
للحصول على تفاصيل الترخيص للأجزاء الفردية.
يقوم SpeechRecognition بتوزيع الكود المصدري والثنائيات من PyAudio. هذه الملفات مرخصة من معهد ماساتشوستس للتكنولوجيا (MIT) وقابلة لإعادة التوزيع طالما تم الاحتفاظ بإشعارات حقوق الطبع والنشر بشكل صحيح. راجع third-party/LICENSE-PyAudio.txt
للحصول على تفاصيل الترخيص.
يقوم SpeechRecognition بتوزيع الثنائيات من FLAC - speech_recognition/flac-win32.exe
و speech_recognition/flac-linux-x86
و speech_recognition/flac-mac
. هذه الملفات مرخصة بواسطة GPLv2 وقابلة لإعادة التوزيع، طالما تم استيفاء شروط GPL. تعد ثنائيات FLAC عبارة عن مجموعة من البرامج المنفصلة، لذا فإن قيود GPL هذه لا تنطبق على المكتبة أو برامجك التي تستخدم المكتبة، بل تنطبق فقط على FLAC نفسها. راجع LICENSE-FLAC.txt
للحصول على تفاصيل الترخيص.