هل ترغب في مساعد صوتي صغير يستجيب لأوامرك بدقة، ويعمل على جهازك الخاص، ولن يطلب عن طريق الخطأ اثنتي عشرة حبة أناناس لمجرد أنه لم يسمعك جيدًا؟ إن صنع مساعد ذكاء اصطناعي بنفسك باستخدام Raspberry Pi أمرٌ سهل وممتع ومرن للغاية. كل ما عليك فعله هو توصيل كلمة التفعيل، ونظام التعرف التلقائي على الكلام (ASR)، ومعالج للغة الطبيعية (قواعد أو نموذج لغة)، ووحدة تحويل النص إلى كلام (TTS). أضف بعض البرامج النصية، وخدمة أو اثنتين، وبعض التعديلات الصوتية الدقيقة، وستحصل على مكبر صوت ذكي بحجم الجيب يستجيب لأوامرك.
دعنا نساعدك على الانتقال من الصفر إلى التواصل مع جهاز Raspberry Pi الخاص بك دون أي عناء. سنغطي جميع الجوانب: المكونات، الإعداد، البرمجة، المقارنات، المشاكل المحتملة... كل شيء بالتفصيل. 🌯
مقالات قد ترغب في قراءتها بعد هذه المقالة:
🔗 كيفية دراسة الذكاء الاصطناعي بفعالية
قم بإنشاء خارطة طريق للدراسة، ونفذ مشاريع تدريبية، وتابع التقدم المحرز.
🔗 كيفية تأسيس شركة ذكاء اصطناعي
التحقق من صحة المشكلة، وبناء الحد الأدنى من المنتج القابل للتطبيق، وتشكيل الفريق، وتأمين العملاء الأوائل.
🔗 كيفية استخدام الذكاء الاصطناعي لزيادة الإنتاجية
أتمتة المهام الروتينية، وتبسيط سير العمل، وتعزيز الإنتاج الإبداعي.
🔗 كيفية دمج الذكاء الاصطناعي في أعمالك
تحديد العمليات ذات التأثير الكبير، وتنفيذ المشاريع التجريبية، وقياس عائد الاستثمار، والتوسع.
ما الذي يجعل مساعد الذكاء الاصطناعي الذي تصنعه بنفسك باستخدام Raspberry Pi جيدًا؟ ✅
-
الوضع الافتراضي هو الوضع الخاص – احتفظ بالصوت محليًا قدر الإمكان. أنت من يقرر ما يخرج من الجهاز.
-
معياري – مكونات قابلة للتبديل مثل ليغو: محرك كلمة التنبيه، التعرف التلقائي على الكلام، نموذج التعلم المحدود، تحويل النص إلى كلام.
-
بأسعار معقولة - معظمها مفتوح المصدر، ميكروفونات ومكبرات صوت عادية، وجهاز Raspberry Pi.
-
قابل للاختراق – هل تريد أتمتة المنزل، ولوحات التحكم، والروتينات، والمهارات المخصصة؟ سهل.
-
موثوق - تتم إدارته بواسطة الخدمة، ويتم تشغيله ويبدأ الاستماع تلقائيًا.
-
ممتع – ستتعلم الكثير عن الصوت والعمليات والتصميم القائم على الأحداث.
نصيحة صغيرة: إذا كنت تستخدم جهاز Raspberry Pi 5 وتخطط لتشغيل نماذج محلية ذات متطلبات أعلى، فإن استخدام مبرد خارجي قابل للتركيب يساعد في حالات التحميل المستمر. (عند الشك، اختر المبرد النشط الرسمي المصمم خصيصًا لجهاز Pi 5). [1]
القطع والأدوات التي ستحتاجها 🧰
-
راسبيري باي : يوصى باستخدام باي 4 أو باي 5 لتوفير مساحة كافية.
-
بطاقة microSD : يوصى بسعة 32 جيجابايت أو أكثر.
-
ميكروفون USB : ميكروفون مؤتمرات USB بسيط رائع.
-
مكبر الصوت : مكبر صوت USB أو 3.5 ملم، أو مكبر صوت I2S HAT.
-
الشبكة : إيثرنت أو واي فاي.
-
إضافات اختيارية: علبة، مبرد نشط لجهاز Pi 5، زر ضغط للتحدث، حلقة LED. [1]
نظام التشغيل والإعداد الأساسي
-
قم بتثبيت نظام التشغيل Raspberry Pi OS باستخدام برنامج Raspberry Pi Imager. إنها الطريقة المباشرة للحصول على بطاقة microSD قابلة للتشغيل مع الإعدادات المسبقة التي تريدها. [1]
-
قم بتشغيل الجهاز، ثم اتصل بالشبكة، ثم قم بتحديث الحزم:
sudo apt update && sudo apt upgrade -y
-
أساسيات الصوت : في نظام التشغيل Raspberry Pi OS، يمكنك ضبط الإخراج الافتراضي والمستويات والأجهزة عبر واجهة المستخدم الرسومية أو
أداة raspi-config. يدعم النظام الصوت عبر USB وHDMI في جميع الطرازات؛ ويتوفر إخراج Bluetooth في الطرازات المزودة بتقنية Bluetooth. [1] -
التحقق من الأجهزة:
arecord -l aplay -l
ثم اختبر التسجيل والتشغيل. إذا بدت مستويات الصوت غير طبيعية، فتحقق من إعدادات الخلاطات والإعدادات الافتراضية قبل إلقاء اللوم على الميكروفون.

لمحة سريعة عن الهندسة المعمارية 🗺️
يبدو مخطط الذي يمكنك تنفيذه بنفسك باستخدام Raspberry Pi
كلمة التنبيه ← التقاط الصوت المباشر ← نسخ التعرف التلقائي على الكلام ← معالجة النية أو التعلم الآلي ← نص الاستجابة ← تحويل النص إلى كلام ← تشغيل الصوت ← إجراءات اختيارية عبر MQTT أو HTTP.
-
كلمة التنبيه : برنامج Porcupine صغير الحجم ودقيق ويعمل محليًا مع إمكانية التحكم في حساسية كل كلمة مفتاحية. [2]
-
الكلام (ASR) : Whisper هو نموذج متعدد اللغات وعام الأغراض للتعرف التلقائي على الكلام، تم تدريبه على ما يقارب 680 ألف ساعة؛ وهو يتميز بمقاومته للهجات المختلفة والضوضاء الخلفية. للاستخدام على الجهاز،
ملف whisper.cppمسار استدلال بسيط بلغة C/C++. [3][4] -
العقل : خيارك – نظام إدارة التعلم السحابي عبر واجهة برمجة التطبيقات، أو محرك قواعد، أو استدلال محلي حسب قوة المعالجة.
-
تقنية تحويل النص إلى كلام : يقوم برنامج بايبر بتوليد كلام طبيعي محليًا، بسرعة كافية للحصول على استجابات سريعة على أجهزة ذات مواصفات متواضعة. [5]
جدول مقارنة سريع 🔎
| أداة | الأفضل لـ | سعره معقول | لماذا ينجح؟ |
|---|---|---|---|
| كلمة إيقاظ القنفذ | محفز الاستماع الدائم | المستوى المجاني + | استهلاك منخفض لوحدة المعالجة المركزية، دقة عالية، سهولة في الربط [2] |
| Whisper.cpp | التعرف التلقائي على الكلام المحلي على جهاز Raspberry Pi | المصادر المفتوحة | دقة جيدة، مناسبة لوحدة المعالجة المركزية [4] |
| أسرع - همس | تقنية التعرف التلقائي على الكلام (ASR) أسرع على وحدة المعالجة المركزية/وحدة معالجة الرسومات | المصادر المفتوحة | تحسينات CTranslate2 |
| بايبر تي تي إس | إخراج الكلام المحلي | المصادر المفتوحة | أصوات سريعة، لغات عديدة [5] |
| واجهة برمجة تطبيقات إدارة الأصول القانونية السحابية | منطق ثري | الاستخدام قائم على | يُخفف عبء العمليات الحسابية الثقيلة |
| Node-RED | تنسيق الإجراءات | المصادر المفتوحة | تدفقات مرئية، متوافقة مع MQTT |
بناء حلقة صوتية أولى خطوة بخطوة 🧩
سنستخدم برنامج Porcupine لكلمة التنبيه، وبرنامج Whisper للنسخ الصوتي، ووظيفة "دماغ" بسيطة للرد (استبدلها بنموذج اللغة الذي تختاره)، وبرنامج Piper للكلام. اجعلها بسيطة، ثم كرر العملية.
1) تثبيت التبعيات
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
-
بوركوباين: احصل على حزمة تطوير البرامج/الروابط للغتك واتبع دليل البدء السريع (مفتاح الوصول + قائمة الكلمات الرئيسية + إطارات الصوت →
.process). [2] -
Whisper (مناسب لوحدة المعالجة المركزية): بناء whisper.cpp :
git clone https://github.com/ggml-org/whisper.cpp cd whisper.cpp && cmake -B build && cmake --build build -j ./models/download-ggml-model.sh base.en ./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f your.wav -otxt
يعكس ما سبق البداية السريعة للمشروع. [4]
هل تفضل لغة بايثون؟
مكتبة faster-whisper(CTranslate2) أسرع من لغة بايثون العادية على وحدات المعالجة المركزية المتواضعة.
2) إعداد برنامج Piper TTS
git clone https://github.com/rhasspy/piper cd piper make # نزّل نموذج صوت يعجبك، على سبيل المثال، en_US-amy echo "Hello there." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
تم تصميم Piper لتقنية تحويل النص إلى كلام على الجهاز مع خيارات متعددة للصوت/اللغة. [5]
3) حلقة مساعدة بسيطة في بايثون
مُصمم بشكل مُختصر: ينتظر عبارة تنبيه (مُبدّل)، يُسجل، يُحوّل النص باستخدام whisper.cpp ، يُنشئ ردًا (عنصر نائب)، ثم يتحدث عبر Piper. استبدل العنصر النائب بمنطق LLM أو قاعدة البيانات المُفضلة لديك.
استيراد os، subprocess، wave استيراد sounddevice كـ sd WAKE_WORD = "hey computer" # استبدال بـ Porcupine في الإنتاج [2] RECORD_SECONDS = 6 SAMPLE_RATE = 16000 CHANNELS = 1 WORKDIR = "/home/pi/assistant" ASR_BIN = "/home/pi/whisper.cpp/build/bin/whisper-cli" # [4] ASR_MODEL = "/home/pi/whisper.cpp/models/ggml-base.en.bin" PIPER_BIN = "/home/pi/piper/build/piper" # [5] PIPER_VOICE = "/home/pi/piper/voices/en/en_US-amy-medium.onnx" os.makedirs(WORKDIR, exist_ok=True) def record_wav(path, seconds=RECORD_SECONDS): audio = sd.rec(int(seconds * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=CHANNELS, dtype='int16') sd.wait() with wave.open(path, 'wb') as w: w.setnchannels(CHANNELS); w.setsampwidth(2); w.setframerate(SAMPLE_RATE) w.writeframes(audio.tobytes()) def transcribe(path): cmd = [ASR_BIN, "-m", ASR_MODEL, "-f", path, "-otxt"] subprocess.run(cmd, check=True, cwd=WORKDIR) with open(path.replace().wav", ".txt"), "r", encoding="utf-8") as f: return f.read().strip() def generate_reply(prompt): if "weather" in prompt.lower(): return "لا أستطيع رؤية الغيوم، لكن قد يكون الجو جيدًا. أحضر سترة احتياطًا." return "قلتَ: " + prompt def speak(text): proc = subprocess.Popen([PIPER_BIN, "--model", PIPER_VOICE, "--output_file", f"{WORKDIR}/reply.wav"], stdin=subprocess.PIPE) proc.stdin.write(text.encode("utf-8")); proc.stdin.close(); proc.wait() subprocess.run(["aplay", f"{WORKDIR}/reply.wav"], check=True) print("المساعد جاهز. اكتب عبارة التنبيه للاختبار.") while True: typed = input("> ").strip().lower() if typed == WAKE_WORD: wav_path = f"{WORKDIR}/input.wav" record_wav(wav_path) text = transcribe(wav_path) reply = generate_reply(text) print("المستخدم:", text); print("المساعد:", reply) speak(reply) else: print("اكتب عبارة التنبيه لاختبار الحلقة.")
للكشف الحقيقي عن كلمة التنبيه، قم بدمج كاشف البث الخاص بـ Porcupine (استهلاك منخفض لوحدة المعالجة المركزية، وحساسية عالية لكل كلمة مفتاحية). [2]
ضبط الصوت الذي يُحدث فرقًا حقيقيًا 🎚️
بعض التعديلات البسيطة تجعل مساعدك يبدو أكثر ذكاءً بعشر مرات:
-
مسافة الميكروفون : 30-60 سم هي نقطة مثالية للعديد من ميكروفونات USB.
-
مستويات الصوت : تجنب التشويش عند الإدخال وحافظ على سلاسة التشغيل؛ أصلح التوجيه قبل البحث عن أخطاء برمجية غير مرغوب فيها. في نظام التشغيل Raspberry Pi OS، يمكنك إدارة جهاز الإخراج ومستويات الصوت عبر أدوات النظام أو
raspi-config. [1] -
خصائص الصوت في الغرفة : الجدران الصلبة تسبب صدى؛ وضع حصيرة ناعمة تحت الميكروفون يساعد.
-
عتبة كلمة التنبيه : حساسة للغاية ← تنبيهات وهمية؛ صارمة للغاية ← ستصرخ على البلاستيك. يتيح لك برنامج Porcupine تعديل الحساسية لكل كلمة مفتاحية. [2]
-
الحرارة : تستفيد عمليات النسخ الطويلة على جهاز Raspberry Pi 5 من نظام التبريد النشط الرسمي لتحقيق أداء مستدام. [1]
الانتقال من لعبة إلى جهاز منزلي: خدمات، تشغيل تلقائي، فحوصات صحية 🧯
ينسى البشر تشغيل البرامج النصية. وتنسى الحواسيب أن تكون لطيفة. حوّل حلقتك إلى خدمة مُدارة:
-
إنشاء وحدة systemd:
[الوحدة] الوصف = مساعد صوتي يمكنك صنعه بنفسك بعد = network.target sound.target [الخدمة] المستخدم = pi دليل العمل = /home/pi/assistant ExecStart = /usr/bin/python3 /home/pi/assistant/assistant.py إعادة التشغيل = دائمًا مدة إعادة التشغيل = 3 [التثبيت] مطلوب بواسطة = multi-user.target
-
قم بتفعيله:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
ذيول السجل:
journalctl -u assistant -f
الآن يبدأ التشغيل تلقائيًا عند بدء التشغيل، ويعيد التشغيل عند حدوث عطل، ويتصرف عمومًا كجهاز منزلي. قد يكون الأمر مملًا بعض الشيء، ولكنه أفضل بكثير.
نظام المهارات: اجعله مفيدًا حقًا في المنزل 🏠✨
بمجرد التأكد من ثبات إدخال الصوت وإخراجه، أضف الإجراءات:
-
موجه النوايا : مسارات كلمات مفتاحية بسيطة للمهام الشائعة.
-
المنزل الذكي : انشر الأحداث إلى MQTT أو اتصل بنقاط نهاية HTTP الخاصة بـ Home Assistant.
-
الإضافات : وظائف بايثون سريعة مثل
set_timerوwhat_is_the_timeوplay_radioوrun_scene.
حتى مع وجود نظام إدارة دورة حياة سحابي في الحلقة، قم بتوجيه الأوامر المحلية الواضحة أولاً من أجل السرعة والموثوقية.
المساعدة المحلية فقط مقابل المساعدة السحابية: المفاضلات التي ستشعر بها 🌓
المزايا
: خاص، يعمل دون اتصال بالإنترنت، تكاليف قابلة للتنبؤ.
العيوب: قد تكون النماذج الثقيلة بطيئة على اللوحات الصغيرة. يساعد التدريب متعدد اللغات في Whisper على تعزيز المتانة إذا احتفظت به على الجهاز أو على خادم قريب. [3]
المساعدة السحابية
: قدرة تحليلية قوية، ونطاق سياق أوسع.
عيوبها: نقل البيانات خارج الجهاز، والاعتماد على الشبكة، وتكاليف متغيرة.
غالباً ما يفوز الحل الهجين: كلمة التنبيه + التعرف التلقائي على الكلام المحلي ← استدعاء واجهة برمجة التطبيقات للاستدلال ← تحويل النص إلى كلام محلي. [2][3][5]
استكشاف الأخطاء وإصلاحها: أعطال غريبة وحلول سريعة 👾
-
التفعيل الخاطئ لكلمة التنبيه : قلل الحساسية أو جرب ميكروفونًا مختلفًا. [2]
-
تأخر التعرف التلقائي على الكلام : استخدم نموذج Whisper أصغر أو قم ببناء
whisper.cppباستخدام علامات الإصدار (-j --config Release). [4] -
النص إلى كلام المتقطع : قم بإنشاء عبارات شائعة مسبقًا؛ تأكد من جهاز الصوت ومعدلات العينات.
-
لم يتم الكشف عن أي ميكروفون : تحقق من
برنامج التسجيل (arecord -l)وخلاطات الصوت. -
التباطؤ الحراري : استخدم المبرد النشط الرسمي على جهاز Raspberry Pi 5 للحصول على أداء مستدام. [1]
ملاحظات حول الأمن والخصوصية يجب عليك قراءتها 🔒
-
حافظ على تحديث جهاز Raspberry Pi الخاص بك باستخدام APT.
-
إذا كنت تستخدم أي واجهة برمجة تطبيقات سحابية، فقم بتسجيل ما ترسله وفكر في تنقيح البيانات الشخصية محليًا أولاً.
-
قم بتشغيل الخدمات بأقل قدر من الامتيازات؛ تجنب
استخدام sudoفي ExecStart إلا إذا كان ذلك ضروريًا. -
قم بتوفير وضع مخصص للضيوف أو ساعات الهدوء.
خيارات البناء: امزج وطابق كما لو كنت تُعدّ شطيرة 🥪
-
محلي للغاية : بوركوباين + whisper.cpp + بايبر + قواعد بسيطة. خاص ومتين. [2][4][5]
-
مساعدة سحابية سريعة : Porcupine + (Whisper محلي أصغر أو ASR سحابي) + TTS محلي + LLM سحابي.
-
مركز أتمتة المنزل : أضف تدفقات Node-RED أو Home Assistant للروتينات والمشاهد وأجهزة الاستشعار.
مثال على المهارة: تشغيل الأضواء عبر MQTT 💡
import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "home/livingroom/light/set" def set_light(state: str): client = mqtt.Client() client.connect(MQTT_HOST, 1883, 60) payload = "ON" if state.lower().startswith("on") else "OFF" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # if "turn on the lights" in text: set_light("on")
أضف عبارة صوتية مثل: "شغل مصباح غرفة المعيشة"، وستشعر وكأنك ساحر.
لماذا تنجح هذه التركيبة عمليًا 🧪
-
يتميز برنامج Porcupine بالكفاءة والدقة في اكتشاف كلمات التنبيه على اللوحات الصغيرة، مما يجعل الاستماع الدائم أمراً ممكناً. [2]
-
إن التدريب الواسع والمتعدد اللغات الذي تتمتع به Whisper يجعلها قادرة على التكيف مع البيئات واللهجات المتنوعة. [3]
-
ملف whisper.cppعلى إمكانية استخدام هذه الطاقة على الأجهزة التي تعتمد على وحدة المعالجة المركزية فقط مثل Raspberry Pi. [4] -
يحافظ بايبر على سرعة الاستجابة دون إرسال الصوت إلى خدمة تحويل النص إلى كلام سحابية. [5]
طويل جدًا، لم أقرأه
أنشئ مساعدًا ذكيًا خاصًا ووحداتيًا يعمل بالذكاء الاصطناعي باستخدام Raspberry Pi، وذلك بدمج Porcupine لكلمة التنبيه، وWhisper (عبر whisper.cpp ) للتعرف التلقائي على الكلام، ونظام معالجة صوتية من اختيارك للردود، وPiper لتحويل النص إلى كلام محليًا. قم بتغليفه كخدمة systemd، واضبط الصوت، وقم بتوصيل إجراءات MQTT أو HTTP. إنه أرخص مما تتخيل، وممتع للغاية في الاستخدام. [1][2][3][4][5]
مراجع
-
برامج تبريد راسبيري باي – برنامج تصوير راسبيري باي (تنزيل واستخدام) ومعلومات عن منتج مبرد راسبيري باي 5 النشط
-
برنامج Raspberry Pi Imager: اقرأ المزيد
-
مبرد نشط (راسبيري باي 5): اقرأ المزيد
-
-
كلمة تنبيه القنفذ – SDK والبدء السريع (الكلمات الرئيسية، الحساسية، الاستدلال المحلي)
-
Whisper (نموذج التعرف التلقائي على الكلام) – نموذج متعدد اللغات وقوي للتعرف التلقائي على الكلام، تم تدريبه على مدار 680 ألف ساعة تقريبًا
-
رادفورد وآخرون، التعرف القوي على الكلام عبر الإشراف الضعيف واسع النطاق (Whisper): اقرأ المزيد
-
-
whisper.cpp – استدلال Whisper سهل الاستخدام مع واجهة سطر الأوامر وخطوات البناء
-
بايبر تي تي إس – نظام تحويل النص إلى كلام سريع ومحلي يعتمد على الشبكات العصبية، ويدعم أصواتًا ولغات متعددة.