بناء مساعد صوتي بالذكاء الاصطناعي: من التعرف على الكلام إلى الاستجابة
المساعدون الصوتيون أصبحوا في كل مكان. يوضح هذا الدليل كيفية بناء مساعد صوتي خاص بك من الصفر.
نظرة عامة على البنية
المساعد الصوتي له أربعة مكونات:
- تحويل الكلام إلى نص (STT): تحويل الصوت إلى نص
- فهم اللغة الطبيعية (NLU): فهم القصد
- توليد الاستجابة: توليد الرد المناسب
- تحويل النص إلى كلام (TTS): تحويل الرد إلى كلام
- STT: Whisper يدعم 100+ لغة
- NLU: GPT-4 يعمل بالعربية والفرنسية
- TTS: Google TTS يدعم العربية والفرنسية
- جدولة المواعيد
- تذكير الأدوية
- فرز الأعراض
- المعلومات الصحية
- استخدم WebSocket للتواصل في الوقت الفعلي
- انشر STT على مثيلات GPU لزمن استجابة منخفض
- خزّن الاستجابات الشائعة مؤقتاً للسرعة
- راقب الدقة ورضا المستخدمين
- أضف كشف كلمة التنبيه ("مرحباً أيها المساعد")
- طبق محادثات متعددة الجولات
- أضف إجراءات مخصصة (إرسال بريد إلكتروني، التحكم في المنزل الذكي)
- دعم التبديل بين اللغات
الخطوة 1: التعرف على الكلام
import speech_recognition as sr
def listen():
recognizer = sr.Recognizer()
with sr.Microphone() as source:
print("جارٍ الاستماع...")
audio = recognizer.listen(source)
try:
text = recognizer.recognize_whisper(audio, language="arabic")
return text
except sr.UnknownValueError:
return "لم يمكن فهم الصوت"
except sr.RequestError:
return "تعذر طلب النتائج"
الخطوة 2: التعرف على القصد
def understand_intent(text):
import openai
response = openai.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "صنف القصد من رسالة المستخدم هذه: طقس، تذكير، بحث، عام"},
{"role": "user", "content": text}
]
)
return response.choices[0].message.content.strip()
الخطوة 3: توليد الاستجابة
def generate_response(intent, text):
if intent == "weather":
# استدعاء API الطقس
return "الطقس اليوم مشمس مع درجة حرارة عظمى 25 درجة."
elif intent == "reminder":
# منطق تعيين التذكير
return "لقد قمت بتعيين تذكير لك."
else:
# محادثة عامة
response = openai.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": text}]
)
return response.choices[0].message.content
الخطوة 4: تحويل النص إلى كلام
from gtts import gTTS
import pygame
def speak(text, lang='ar'):
tts = gTTS(text=text, lang=lang)
tts.save('response.mp3')
pygame.mixer.init()
pygame.mixer.music.load('response.mp3')
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
continue
دعم متعدد اللغات
للمساعدات الصوتية بالعربية أو الفرنسية:
حالة استخدام واقعية: مساعد طبي
بنيت شركة ناشئة في مجال التكنولوجيا الصحية في الدار البيضاء مساعداً صوتياً بالدارجة لـ:
يعالج المساعد 1,000+ مكالمة يومياً بالعربية المغربية.