التنفيذ
سيعمل مساعدنا وفقًا للمبدأ التالي:
- باستمرار "الاستماع" إلى الميكروفون
- التعرف على الكلمات على جوجل
- نفّذ الأمر أو استجب
1) تركيب الكلام
أولاً ، سنقوم بتثبيت الأصوات الروسية في نظام windows. للقيام بذلك ، اتبع الرابط وقم بتنزيل الأصوات في SAPI 5 -> القسم الروسي. هناك 4 أصوات ، يمكنك اختيار ما تريد. تثبيت والمضي قدما.
نحتاج إلى توفير مكتبة pyttsx3 لتركيب الكلام:
pip install pyttsx3
ثم يمكنك تشغيل برنامج الاختبار والتحقق مما إذا كان يعمل بشكل صحيح.
import pyttsx3
text = '- '
tts = pyttsx3.init()
rate = tts.getProperty('rate') #
tts.setProperty('rate', rate-40)
volume = tts.getProperty('volume') #
tts.setProperty('volume', volume+0.9)
voices = tts.getProperty('voices')
#
tts.setProperty('voice', 'ru')
#
for voice in voices:
if voice.name == 'Anna':
tts.setProperty('voice', voice.id)
tts.say(text)
tts.runAndWait()
2) التعرف على الكلام
هناك العديد من أدوات التعرف على الكلام ، ولكن يتم الدفع لهم جميعًا. لذلك حاولت إيجاد حل مجاني لمشروعي ووجدته! هذه هي مكتبة التعرف على الكلام.
pip install SpeechRecognition
نحتاج أيضًا إلى مكتبة PyAudio للعمل مع الميكروفون.
pip install PyAudio
يواجه بعض الأشخاص مشكلة في تثبيت PyAudio ، لذا يجب عليك اتباع هذا الرابط وتنزيل إصدار PyAudio الذي تحتاجه. ثم ادخل إلى وحدة التحكم:
pip instal
ثم تقوم بتشغيل برنامج الاختبار. ولكن قبل ذلك ، يجب عليك تصحيح device_index = 1 فيه إلى قيمة فهرس الميكروفون. يمكنك معرفة فهرس الميكروفون باستخدام هذا البرنامج:
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))
اختبار التعرف على الكلام:
import speech_recognition as sr
def record_volume():
r = sr.Recognizer()
with sr.Microphone(device_index = 1) as source:
print('.')
r.adjust_for_ambient_noise(source, duration=0.5) #
print('...')
audio = r.listen(source)
print('.')
try:
query = r.recognize_google(audio, language = 'ru-RU')
text = query.lower()
print(f' : {query.lower()}')
except:
print('Error')
while True:
record_volume()
إذا كان كل شيء على ما يرام ، فانتقل.
إذا كنت تريد أن يتحدث المساعد معك فقط (بدون AI) ، فيمكن القيام بذلك باستخدام أداة DialogFlow المجانية من Google. بعد تسجيل الدخول ، سترى شاشة حيث يمكنك بالفعل إنشاء أول روبوت خاص بك. انقر فوق إنشاء وكيل. توصلنا إلى اسم للبوت (اسم الوكيل) ، وحدد اللغة (اللغة الافتراضية) وانقر فوق إنشاء. تم إنشاء الروبوت!
لإضافة إجابات جديدة لأسئلة مختلفة ، تحتاج إلى إنشاء هدف جديد. للقيام بذلك ، في قسم النوايا ، انقر فوق إنشاء نية. نملأ الحقول "العنوان" وعبارات التدريب ، ثم الإجابات. انقر فوق حفظ. هذا كل شئ.
للتحكم في روبوت في بايثون ، عليك كتابة الكود التالي. في برنامجي ، يصدر الروبوت جميع الإجابات.
import apiai, json, re
import pyttsx3
import speech_recognition as sr
tts = pyttsx3.init()
rate = tts.getProperty('rate')
tts.setProperty('rate', rate-40)
volume = tts.getProperty('volume')
tts.setProperty('volume', volume+0.9)
voices = tts.getProperty('voices')
tts.setProperty('voice', 'ru')
for voice in voices:
if voice.name == 'Anna':
tts.setProperty('voice', voice.id)
def record_volume():
r = sr.Recognizer()
with sr.Microphone(device_index = 1) as source:
print('.')
r.adjust_for_ambient_noise(source, duration=1)
print('...')
audio = r.listen(source)
print('.')
try:
query = r.recognize_google(audio, language = 'ru-RU')
text = query.lower()
print(f' : {query.lower()}')
textMessage( text )
except:
print(' .')
def talk( text ):
tts.say( text )
tts.runAndWait()
def textMessage( text ):
request = apiai.ApiAI(' ').text_request() # API Dialogflow
request.lang = 'ru' #
request.session_id = ' id' # ID (, )
request.query = text #
responseJson = json.loads(request.getresponse().read().decode('utf-8'))
response = responseJson['result']['fulfillment']['speech'] # JSON
# - , -
if response:
request.audio_output = response
talk(response)
else:
talk('. .')
while True:
record_volume()
هذا كل شيء لهذا اليوم. في الجزء التالي سأخبرك كيف تصنع روبوتًا ذكيًا ، أي حتى لا يتمكن من الإجابة فقط ، ولكن أيضًا القيام بشيء ما.