דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. קטגוריות בהרצה
  3. תכנות
  4. בינה מלאכותית - AI
  5. עזרה הדדית - בינה מלאכותית
  6. SmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!

SmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!

מתוזמן נעוץ נעול הועבר עזרה הדדית - בינה מלאכותית
153 פוסטים 35 כותבים 1.6k צפיות 38 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א.מ.ד.א א.מ.ד.

    אחרי תקופה של פיתוח ושיפור מתמיד, אני שמח לשתף את התוצר המוגמר: SmartiAI Agent for Windows.

    logo.png

    בדומה ל-SmartiAI לאנדרואיד שקיים כבר כמעט שנתיים, סמארטי לווינדוס לוקח את מודלי השפה שלב אחד קדימה והופך אותם לסוכנים אוטונומיים. כלומר, במקום רק לדבר בתוך הצ'אט, סמארטי מסוגל לבצע פעולות רבות על המחשב שלכם בעצמו, אך לעומת סמארטי לאנדרואיד, אין לו רק כלים קבועים וסטטיים: ווינדוס מאפשרת גישה ישירה לשורת הפקודה, וכך סמארטי יכול לכתוב ולבצע פקודות מערכת דינמיות, לכתוב לעצמו כלי פייתון לכל משימה ולהריץ אותם, להתממשק עם המאגר העצום של המיומנויות (skills) של OpenClaw, להתקין כלי MCP, ועוד יכולות רבות!
    סמארטי מסוגל לקבל מהמשתמש משימות מורכבות, לפרק אותן לגורמים ולבצע אותן בשלמות ודיוק, תוך שימוש ביכולות הכמעט בלתי-מוגבלות שלו.
    סמארטי משתמש בלולאות סוכן חכמות, עד לקבלת התוצאה הרצויה.

    06576236-cd58-43eb-977d-e1f2e5eedeb1-image.png


    אז מה בעצם סמארטי יודע לעשות? בערך הכל!

    הנה כמה מהיכולות המרכזיות שהטמעתי בו:

    • בניית כלים באופן עצמאי:
      סמארטי לא מוגבל רק למה שתוכנת מראש. אם תבקשו ממנו משימה שאין לו כלי עבורה, הוא פשוט יכתוב סקריפט פייתון, ישמור אותו לעצמו בתיקייה, ייצור לעצמו קובץ הדרכה לשימוש בכלי, ויריץ אותו. מעכשיו, הכלי הזה קיים אצלו בארגז הכלים לתמיד.

    • חיפוש באינטרנט:
      סמארטי מסוגל לבצע חיפוש מקיף באינטרנט, באמצעות מנוע החיפוש המתקדם של Tavily. יש להנפיק מפתח API בחינם בכתובת https://app.tavily.com/home ולהזין בהגדרות של סמארטי.

    • חיבור למאגר הכלים העולמי (MCP):
      סמארטי מחובר לפרוטוקול השימוש בכלים MCP (Model Context Protocol). אם תבקשו ממנו למשל "תבדוק לי מה מזג האוויר בירושלים" או "מה שער הדולר היום", והוא מזהה שזה מידע שדורש דיוק בזמן אמת – הוא יתחבר אוטומטית למאגר העולמי NPM, יחפש כלי MCP מתאים, יוריד אותו, יקרא את התיעוד שלו בעצמו, ויפעיל אותו, או ישתמש בשרתים שכבר מותקנים אצלו.

    • תמיכה במיומנויות (Skills):
      סמארטי תומך במיומנויות המסייעות לו לנהל ביעילות משימות ותהליכים שונים. מיומנויות הן כמו מדריכים עבור משימות ספציפיות, המנחים את סמארטי איך לפעול, כיצד לבחור כלים, סדר פעולות והחלטות. אפשר להתקין מיומנות באופן ידני, או לאפשר לסמארטי להוריד ממאגר המיומנויות ClawHub המאובטח.

    • שליטה מלאה במערכת ההפעלה:
      סמארטי יודע להריץ פקודות PowerShell, לפתוח תוכנות, לסרוק ולחפש קבצים ובתוכם, לשלוט בהגדרות, ואפילו לצלם את המסך שלכם ולנתח מה קורה בו. סמארטי יכול להתממשק עם תוכנות רבות, לנווט בדפדפן, לשלוט בממשק הווינדוס ועוד כלים רבים.

    • שליטה מלאה באימיילים:
      לסמארטי יש גישה מלאה לאימיילים שלכם. הוא יכול לחפש עבורכם אימייל, לסכם, לשלוח, להעביר לאשפה, לארכב, לסמן כנקרא ועוד.
      כדי לאשר גישה למיילים שלכם, גוגל מאפשרת להנפיק סיסמה ייחודית ומאובטחת לאפליקציה, במקום להזין את הסיסמה הראשית של החשבון שלכם.
      כדי להשיג את הסיסמה, יש להפעיל אימות דו שלבי בחשבון (מומלץ בלי קשר!), ואז להקליד בחיפוש "סיסמאות לאפליקציות", ולהיכנס לתוצאה. במסך שייפתח, תבחרו ב"אחר" ותזינו את שם האפליקציה, ואז תקבלו סיסמה בת 16 תווים. העתיקו אותה והדביקו בהגדרות של סמארטי.

    • הגדרת משימות מתוזמנות:
      אפשר לומר לסמארטי: "בעוד 10 דקות תשלח אימייל ל---", או אפילו יותר חכם: "תבדוק כל 5 דקות אם קובץ X סיים לרדת, וכשזה קורה – תודיע לי". סמארטי יודע להרדים תהליכים ברקע ולהעיר את עצמו לפי הצורך. ניתן לנהל את משימות הרקע דרך "מרכז המשימות" בתפריט.

    • נגישות - זיהוי קולי חכם ודיבור:
      אפשר ללחוץ על כפתור המיקרופון (או להשתמש בקיצור המקשים alt+V מכל מקום במחשב כשהתוכנה מופעלת) ולדבר עם סמארטי כאילו הוא בן אדם רגיל. כשהוא עונה לכם מפנייה קולית, הוא גם יקריא לכם את התשובה בקול (ניתן להשבית בהגדרות, או לקבוע הקראה קולית לכל התשובות).

    • שקיפות מלאה בזמן אמת:
      כשסמארטי עובד, הוא מריץ לולאות של חשיבה ופעולה. כדי שלא תרגישו שהתוכנה תקועה ותדעו בדיוק מה מתרחש מתחת למכסה המנוע, סמארטי מראה לכם פירוט מסודר ומתומצת של שלבי הפעולה בזמן אמת (למשל: "מחפש כלי ברשת..." -> "מוריד קובץ..." -> "מעבד נתונים...").

    • עבודה ברקע:
      סמארטי יושב שקט למטה במגש המערכת. אם ביקשתם ממנו משימה ארוכה ומורכבת, אתם יכולים למזער אותו ולהמשיך לעבוד. כשהוא יסיים, תקפוץ לכם התראת ווינדוס עם התשובה, ולחיצה עליה תקפיץ את סמארטי חזרה לחזית.

    • תמיכה נרחבת בספקים שונים:
      סמארטי תומך במגוון ספקים: OpenAI, Anthropic, Gemini, Groq, OpenRouter וגם מודלים מקומיים דרך LM Studio (כמובן שנדרש כוח מחשוב מקומי חזק לצורך הסקה מקומית של מודלים המתאימים לסוכן AI). לשימוש ביתי ממוצע מספיק אפילו להשתמש במודלים חינמיים הזמינים ע"י הספקים השונים.

    • מנגנון Rate Limit חכם:
      אם שרתי הספקים עמוסים, או שסמארטי הגיע למגבלת הקצב, סמארטי לא זורק שגיאה ונתקע אלא מגדיר השהיות ומנסה שוב לפנות למודל.

    • התאמה מלאה לסינוני רשת:
      הורדות ה-MCP והמיומנויות מותאמות כך שיסמכו על תעודות האבטחה של נטפרי וסינונים אחרים, ולא ייתקעו מאחורי חסימות SSL. יש לאשר את זה בהגדרות תחת "מתקדם>אפשר מצב תאימות חיבור לכלים חיצוניים".

    9f68e1fc-3dd6-4c50-b092-d09fa5486178-image.png ספויילר


    • ניהול חכם של צריכת הטוקנים:
      סמארטי מנהל בחוכמה וביעילות את השימוש בטוקנים, וטוען כלים באופן דינמי רק כשהם נצרכים, מה שמביא לחיסכון עצום בעלויות השימוש.
      ניתן לצפות בכל עת במסך ייעודי על נתוני השימוש לפי מודל וקלט/פלט, כולל פירוט עלויות במודלים נתמכים.
      ניתן גם להגדיר מגבלת שימוש יומית בטוקנים. סמארטי מקבל התראות מקדימות לקראת סיום המכסה בכדי שלא ייקטע באמצע לולאה.

    • תאימות מלאה לכל מחשב:
      הגרסה המלאה להתקנה של סמארטי, כוללת בתוכה סביבות Python ו-Node.js עצמאיות, לפעילות מלאה ללא תלות בהתקנה קיימת במחשב.

    • שליטה מלאה בהגדרות:
      סמארטי מאפשר לכם לשלוט באופן מלא בכל ההגדרות הקשורות, כולל הגבלת מספר לולאות סוכן, ניהול מלא של הכלים והיכולות, ועוד.

    • אבטחה מרבית:
      השקעתי המון באבטחה והבטיחות של סמארטי.
      חסמתי כל פרצה שהעליתי על הדעת, סרקתי פרצות אפשריות באמצעות סוכני ה-AI המתקדמים בשוק, חסמתי הזרקת פרומפטים זדוניים מהרשת או מקבצים, כדי להעניק חוויית שימוש בטוחה ומוגנת.
      גם הסוכן עצמו מכיל מנגנון משוכלל ומקיף של הרשאות לכל פעולה, עם 3 פרופילי בטיחות: אוטונומיה מלאה, בטיחות מקסימלית, ומאוזן, עם טבלת הרשאות מפורטת עבור כל כלי ופעולה, תוך שמירה על עצמאות ואוטונומיה מרבית.
      עם זאת, מאחר ומדובר בתחום דינמי ומתפתח, כמובן אין לי יכולת להבטיח שסמארטי בטוח לשימוש לחלוטין, ולכן יש להשתמש בזהירות, להתקין אך ורק כלים מורשים ובטוחים ולאשר הרשאות בזהירות.
      ניתן גם להשתמש במצב ארגז חול, שמגביל את סמארטי לפעילות בתיקייה אחת ספציפית, אם כי גם זה לא בטוח ב-100%...

    בניתי את סמארטי ב-Python עם ממשק גרפי נקי (PyQt6), עם עזרה גדולה (בעיקר בעיצוב והאינטגרציה עם מאגר המיומנויות) מ-Gemini 3.1 Pro (תודות ל @מישהו12 שדאג לי למנוי פרו חינם...) ו-Codex.


    הפרויקט זמין בקוד פתוח בגיטהאב תחת רישיון MIT.
    ניתן להוריד את גרסת ההתקנה המלאה מהדרייב מכאן (להסיר כוכביות!!!), או מדף השחרורים המתעדכן בגיטהאב (שם יש גם גרסה ניידת בקובץ ZIP), או מהקישור הישיר להורדה מהגיטהאב כאן (פתוח בנטפרי).

    * ייתכן שבמהלך ההתקנה תקפוץ הודעה זו:

    b9bba897-830e-4983-9ae3-5a32f32933b4-image.png

    ניתן להתעלם ולבחור באפשרות האמצעית (דילוג). זה לא ייפגע בפעילות התוכנה כלל.


    כמובן מדובר בגרסה ראשונית. אשמח לשמוע הצעות לשיפור, באגים שנתקלתם בהם, או סתם רעיונות לכלים נוספים שאפשר להוסיף לסמארטי.
    אני ממליץ לעבור מלמעלה על ההגדרות כדי להנות מכל מה שיש לסמארטי להציע, כי ישנם הרבה כלים ויכולות שכבויים כברירת מחדל מסיבות שונות.

    שימוש מהנה ומועיל!

    M מנותק
    M מנותק
    MAKRO
    כתב נערך לאחרונה על ידי
    #123

    @א.מ.ד.
    אני מקבל את השגיאה הזו מידי פעם:

    שגיאה: שגיאת חיבור מול ה-API: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

    א.מ.ד.א תגובה 1 תגובה אחרונה
    0
    • M MAKRO

      @א.מ.ד.
      אני מקבל את השגיאה הזו מידי פעם:

      שגיאה: שגיאת חיבור מול ה-API: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

      א.מ.ד.א מחובר
      א.מ.ד.א מחובר
      א.מ.ד.
      כתב נערך לאחרונה על ידי
      #124

      @MAKRO זה שגיאה בשרת, לא בצד שלך.

      מפתח אפליקציות אנדרואיד
      em0548438097@gmail.com

      המלאךה תגובה 1 תגובה אחרונה
      1
      • לאציל מנותק
        לאציל מנותק
        לאצי
        כתב נערך לאחרונה על ידי
        #125

        @א.מ.ד. עכשיו התקנתי וזה פשוט מדהים! פסיכי לגמרי... (בקטע הטוב 😉 )
        מה זה אומר? היכן אני צריך לאפשר את זה, בהגדרות סמארטי או במחשב?
        3be5ddcf-bc66-4fec-8a1c-8c0b37872608-image.png

        האתר שלי - תוספיקס

        א.מ.ד.א תגובה 1 תגובה אחרונה
        0
        • א.מ.ד.א א.מ.ד.

          @MAKRO זה שגיאה בשרת, לא בצד שלך.

          המלאךה מנותק
          המלאךה מנותק
          המלאך
          כתב נערך לאחרונה על ידי
          #126

          @א.מ.ד. מצוי בAPI חינמי של גוגל.

          תעברו לתשלום כבר!!!!!!😉

          צ תגובה 1 תגובה אחרונה
          2
          • המלאךה המלאך

            @א.מ.ד. מצוי בAPI חינמי של גוגל.

            תעברו לתשלום כבר!!!!!!😉

            צ מנותק
            צ מנותק
            צול גאה
            כתב נערך לאחרונה על ידי
            #127

            @המלאך זה יקר!!!!!!!!!

            המלאךה תגובה 1 תגובה אחרונה
            0
            • צ צול גאה

              @המלאך זה יקר!!!!!!!!!

              המלאךה מנותק
              המלאךה מנותק
              המלאך
              כתב נערך לאחרונה על ידי המלאך
              #128

              @צול-גאה ממש ממש לא.
              ת'אמת זה תלוי מה ההגדרה של המושג 'יקר'.🤔

              צ תגובה 1 תגובה אחרונה
              0
              • המלאךה המלאך

                @צול-גאה ממש ממש לא.
                ת'אמת זה תלוי מה ההגדרה של המושג 'יקר'.🤔

                צ מנותק
                צ מנותק
                צול גאה
                כתב נערך לאחרונה על ידי
                #129

                @המלאך כמה זה אמור לעלות?
                אולי באמת הגיע הזמן להסבר על כל המסלולים כל אחד מספקי הAI

                תגובה 1 תגובה אחרונה
                0
                • המלאךה מנותק
                  המלאךה מנותק
                  המלאך
                  כתב נערך לאחרונה על ידי
                  #130

                  חכו קודם ש @א.מ.ד. יוציא את העדכון הבא שלו לסמארטי.
                  אני די חושש לעבור תחום..
                  הוא גונב לי את כל העבודה..😉 🙂

                  תגובה 1 תגובה אחרונה
                  1
                  • לאציל לאצי

                    @א.מ.ד. עכשיו התקנתי וזה פשוט מדהים! פסיכי לגמרי... (בקטע הטוב 😉 )
                    מה זה אומר? היכן אני צריך לאפשר את זה, בהגדרות סמארטי או במחשב?
                    3be5ddcf-bc66-4fec-8a1c-8c0b37872608-image.png

                    א.מ.ד.א מחובר
                    א.מ.ד.א מחובר
                    א.מ.ד.
                    כתב נערך לאחרונה על ידי
                    #131

                    @לאצי כתב בSmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!:

                    @א.מ.ד. עכשיו התקנתי וזה פשוט מדהים! פסיכי לגמרי... (בקטע הטוב )
                    מה זה אומר? היכן אני צריך לאפשר את זה, בהגדרות סמארטי או במחשב?

                    בהגדרות של סמארטי.

                    מפתח אפליקציות אנדרואיד
                    em0548438097@gmail.com

                    מ תגובה 1 תגובה אחרונה
                    1
                    • א.מ.ד.א א.מ.ד.

                      @לאצי כתב בSmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!:

                      @א.מ.ד. עכשיו התקנתי וזה פשוט מדהים! פסיכי לגמרי... (בקטע הטוב )
                      מה זה אומר? היכן אני צריך לאפשר את זה, בהגדרות סמארטי או במחשב?

                      בהגדרות של סמארטי.

                      מ מנותק
                      מ מנותק
                      מאיר יפה
                      כתב נערך לאחרונה על ידי מאיר יפה
                      #132

                      @א.מ.ד. מטורף מה שהולך פה
                      אולי תוסיף גם פקודת קול כמו “היי סמרטי”, שיפתח ישר הקלטה גם כשהחלון סגור. זה יהיה נדיר. וגם במקום להתחיל הקלטה וללחוץ על המיקרפון, היי סמרטי”, שיפתח ישר הקלטה

                      המלאךה תגובה 1 תגובה אחרונה
                      2
                      • מ מאיר יפה

                        @א.מ.ד. מטורף מה שהולך פה
                        אולי תוסיף גם פקודת קול כמו “היי סמרטי”, שיפתח ישר הקלטה גם כשהחלון סגור. זה יהיה נדיר. וגם במקום להתחיל הקלטה וללחוץ על המיקרפון, היי סמרטי”, שיפתח ישר הקלטה

                        המלאךה מנותק
                        המלאךה מנותק
                        המלאך
                        כתב נערך לאחרונה על ידי
                        #133

                        @מאיר-יפה דובר כבר.
                        לא אפשרי.
                        זה דורש שימוש תמידי בNPU והמערכת מגבילה.
                        גם זה לא קיים בכל מחשב..

                        Y תגובה 1 תגובה אחרונה
                        0
                        • המלאךה המלאך

                          @מאיר-יפה דובר כבר.
                          לא אפשרי.
                          זה דורש שימוש תמידי בNPU והמערכת מגבילה.
                          גם זה לא קיים בכל מחשב..

                          Y מנותק
                          Y מנותק
                          YAHBDK
                          כתב נערך לאחרונה על ידי
                          #134

                          @המלאך כתב בSmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!:

                          לא אפשרי.

                          למה אתה אומר שלא אפשרי?
                          לא אפשרי לעשות מודל שיעבוד על דיבור?
                          שיקשיב לשם שלו ויענה?

                          צ המלאךה 2 תגובות תגובה אחרונה
                          0
                          • Y YAHBDK

                            @המלאך כתב בSmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!:

                            לא אפשרי.

                            למה אתה אומר שלא אפשרי?
                            לא אפשרי לעשות מודל שיעבוד על דיבור?
                            שיקשיב לשם שלו ויענה?

                            צ מנותק
                            צ מנותק
                            צול גאה
                            כתב נערך לאחרונה על ידי
                            #135

                            @YAHBDK

                            למה לא לקרוא עד הסוף?

                            @המלאך כתב בSmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!:

                            זה דורש שימוש תמידי בNPU והמערכת מגבילה.

                            תגובה 1 תגובה אחרונה
                            1
                            • Y YAHBDK

                              @המלאך כתב בSmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!:

                              לא אפשרי.

                              למה אתה אומר שלא אפשרי?
                              לא אפשרי לעשות מודל שיעבוד על דיבור?
                              שיקשיב לשם שלו ויענה?

                              המלאךה מנותק
                              המלאךה מנותק
                              המלאך
                              כתב נערך לאחרונה על ידי
                              #136

                              @YAHBDK כתב בSmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!:

                              למה אתה אומר שלא אפשרי?
                              לא אפשרי לעשות מודל שיעבוד על דיבור?
                              שיקשיב לשם שלו ויענה?

                              זה ידרוש מהמודל לעבוד כל הזמן ברקע.
                              האופציה היחידה לעשות את זה בלי שיקריס את המחשב זה רק שימוש בNPU.
                              לא כל המחשבים תומכים,
                              וגם אלה שתומכים המערכות הפעלה מגבילות את השימוש לתוכנות חיצוניות בNPU.
                              לצערי..

                              Y תגובה 1 תגובה אחרונה
                              1
                              • A מנותק
                                A מנותק
                                aass
                                כתב נערך לאחרונה על ידי
                                #137

                                נראה מדהים!

                                תגובה 1 תגובה אחרונה
                                0
                                • ח חכם בלילה 1

                                  @א.מ.ד.
                                  אולי כדאי להוסיף אפשרות להדביק צילום מסך ואולי אפילו מסמך
                                  זה מאוד יעזור

                                  אגב יש עדכונים אוטומטיים?
                                  דרך התוכנה?

                                  א.מ.ד.א מחובר
                                  א.מ.ד.א מחובר
                                  א.מ.ד.
                                  כתב נערך לאחרונה על ידי
                                  #138

                                  @חכם-בלילה-1 כתב בSmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!:

                                  אולי כדאי להוסיף אפשרות להדביק צילום מסך ואולי אפילו מסמך
                                  זה מאוד יעזור

                                  בעקרון אתה יכול לבקש ממנו לצלם מסך, או לומר לו איפה נמצאת התמונה שאתה רוצה שהוא יראה.

                                  מפתח אפליקציות אנדרואיד
                                  em0548438097@gmail.com

                                  תגובה 1 תגובה אחרונה
                                  0
                                  • המלאךה המלאך

                                    @YAHBDK כתב בSmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!:

                                    למה אתה אומר שלא אפשרי?
                                    לא אפשרי לעשות מודל שיעבוד על דיבור?
                                    שיקשיב לשם שלו ויענה?

                                    זה ידרוש מהמודל לעבוד כל הזמן ברקע.
                                    האופציה היחידה לעשות את זה בלי שיקריס את המחשב זה רק שימוש בNPU.
                                    לא כל המחשבים תומכים,
                                    וגם אלה שתומכים המערכות הפעלה מגבילות את השימוש לתוכנות חיצוניות בNPU.
                                    לצערי..

                                    Y מנותק
                                    Y מנותק
                                    YAHBDK
                                    כתב נערך לאחרונה על ידי
                                    #139

                                    @המלאך

                                    אני מביא מAI אבל אצלי בכל אופן זה עובד לא בדקתי לעומק

                                    """
                                    SmartiAI - Wake Word Detection

                                    מקשיב כל הזמן לשם "סמרטי" / "SmartiAI"
                                    ברגע שמזהה - מתעורר ומקשיב לפקודה

                                    התקנה (הרץ פעם אחת):
                                    pip install SpeechRecognition pyaudio pyttsx3

                                    הרצה:
                                    python smarti_wakeword.py
                                    """

                                    import speech_recognition as sr
                                    import pyttsx3
                                    import threading
                                    import time
                                    import logging

                                    logging.basicConfig(level=logging.INFO, format="[%(asctime)s] %(message)s", datefmt="%H:%M:%S")
                                    log = logging.getLogger("SmartiAI")

                                    ─── הגדרות ───────────────────────────────────────────────

                                    WAKE_WORDS = ["סמרטי", "smarti", "smarty", "סמארטי", "smartiai", "סמרטיאי"]
                                    LANGUAGE_PRIMARY = "he-IL"
                                    LANGUAGE_SECONDARY = "en-US"
                                    LISTEN_TIMEOUT = 4 # שניות להאזנה לפקודה אחרי זיהוי שם
                                    WAKE_TIMEOUT = 2 # שניות להאזנה לשם (קצר = קליל על ה-CPU)

                                    ──────────────────────────────────────────────────────────

                                    class SmartiWakeWord:
                                    def init(self):
                                    self.recognizer = sr.Recognizer()
                                    self.recognizer.energy_threshold = 300
                                    self.recognizer.dynamic_energy_threshold = True
                                    self.recognizer.pause_threshold = 0.6
                                    self.mic = None
                                    self.engine = pyttsx3.init()
                                    self._active = False
                                    self._stop = threading.Event()
                                    self._setup_voice()
                                    self._init_mic()

                                    def _setup_voice(self):
                                        """הגדרת קול בעברית אם אפשר"""
                                        voices = self.engine.getProperty("voices")
                                        for v in voices:
                                            if "hebrew" in v.name.lower() or "he" in v.id.lower():
                                                self.engine.setProperty("voice", v.id)
                                                break
                                        self.engine.setProperty("rate", 160)
                                    
                                    def _init_mic(self):
                                        try:
                                            self.mic = sr.Microphone()
                                            with self.mic as source:
                                                self.recognizer.adjust_for_ambient_noise(source, duration=0.5)
                                            log.info("✅ מיקרופון מוכן")
                                        except Exception as e:
                                            log.error(f"❌ שגיאת מיקרופון: {e}")
                                    
                                    def speak(self, text: str):
                                        """מדבר בקול"""
                                        log.info(f"🔊 {text}")
                                        self.engine.say(text)
                                        self.engine.runAndWait()
                                    
                                    def _recognize(self, audio, lang=LANGUAGE_PRIMARY) -> str | None:
                                        """זיהוי דיבור - מנסה עברית ואנגלית"""
                                        for language in [lang, LANGUAGE_SECONDARY if lang == LANGUAGE_PRIMARY else LANGUAGE_PRIMARY]:
                                            try:
                                                text = self.recognizer.recognize_google(audio, language=language)
                                                if text:
                                                    return text.strip()
                                            except sr.UnknownValueError:
                                                continue
                                            except sr.RequestError as e:
                                                log.error(f"שגיאת שרת: {e}")
                                                return None
                                        return None
                                    
                                    def _is_wake_word(self, text: str) -> bool:
                                        """בודק אם הטקסט מכיל את שם ההפעלה"""
                                        text_lower = text.lower().strip()
                                        for word in WAKE_WORDS:
                                            if word.lower() in text_lower:
                                                return True
                                        return False
                                    
                                    def _listen_for_command(self) -> str | None:
                                        """מקשיב לפקודה אחרי זיהוי שם"""
                                        try:
                                            with self.mic as source:
                                                log.info("👂 מקשיב לפקודה...")
                                                audio = self.recognizer.listen(
                                                    source,
                                                    timeout=LISTEN_TIMEOUT,
                                                    phrase_time_limit=10
                                                )
                                            return self._recognize(audio)
                                        except sr.WaitTimeoutError:
                                            return None
                                    
                                    def _process_command(self, command: str):
                                        """
                                        *** כאן תכניס את הלוגיקה של הבינה המלאכותית שלך ***
                                        לעכשיו - רק מדגים שזה עובד
                                        """
                                        log.info(f"⚡ פקודה התקבלה: {command}")
                                    
                                        # דוגמה בסיסית - תחליף בקריאה למודל שלך
                                        if any(w in command.lower() for w in ["שלום", "hello", "hi"]):
                                            self.speak("שלום! אני כאן, מה אפשר לעשות בשבילך?")
                                        elif any(w in command.lower() for w in ["שעה", "זמן", "time"]):
                                            t = time.strftime("%H:%M")
                                            self.speak(f"השעה היא {t}")
                                        elif any(w in command.lower() for w in ["תודה", "thanks", "thank you"]):
                                            self.speak("בבקשה! אני תמיד כאן")
                                        else:
                                            self.speak(f"קיבלתי: {command}")
                                    
                                        # ─── כאן תוסיף קריאה ל-AI שלך, למשל: ───
                                        # response = my_ai_model.process(command)
                                        # self.speak(response)
                                    
                                    def run(self):
                                        """הלולאה הראשית - מקשיבה לשם ההפעלה"""
                                        if not self.mic:
                                            log.error("אין מיקרופון - עצור")
                                            return
                                    
                                        log.info("=" * 50)
                                        log.info("🤖 SmartiAI פעיל!")
                                        log.info(f"📢 אמור '{WAKE_WORDS[0]}' להפעלה")
                                        log.info(f"🔑 מילות הפעלה: {', '.join(WAKE_WORDS)}")
                                        log.info("=" * 50)
                                    
                                        # סטטיסטיקות
                                        checks = 0
                                        detections = 0
                                    
                                        while not self._stop.is_set():
                                            try:
                                                # ─── שלב 1: האזנה קצרה לשם בלבד ───
                                                with self.mic as source:
                                                    audio = self.recognizer.listen(
                                                        source,
                                                        timeout=WAKE_TIMEOUT,
                                                        phrase_time_limit=WAKE_TIMEOUT
                                                    )
                                    
                                                checks += 1
                                                text = self._recognize(audio)
                                    
                                                if not text:
                                                    continue
                                    
                                                log.debug(f"שמעתי: {text}")
                                    
                                                # ─── שלב 2: האם זו מילת ההפעלה? ───
                                                if self._is_wake_word(text):
                                                    detections += 1
                                                    log.info(f"✨ זוהה! ({detections} פעמים) | שמעתי: '{text}'")
                                                    self.speak("כן?")
                                    
                                                    # ─── שלב 3: מקשיב לפקודה ───
                                                    command = self._listen_for_command()
                                    
                                                    if command:
                                                        threading.Thread(
                                                            target=self._process_command,
                                                            args=(command,),
                                                            daemon=True
                                                        ).start()
                                                    else:
                                                        self.speak("לא שמעתי פקודה, קרא לי שוב")
                                    
                                            except sr.WaitTimeoutError:
                                                # לא נאמר כלום - ממשיך להאזין
                                                pass
                                            except KeyboardInterrupt:
                                                break
                                            except Exception as e:
                                                log.error(f"שגיאה: {e}")
                                                time.sleep(0.5)
                                    
                                        log.info("👋 SmartiAI כובה")
                                    
                                    def stop(self):
                                        self._stop.set()
                                    

                                    ─── הרצה ─────────────────────────────────────────────────

                                    if name == "main":
                                    smarti = SmartiWakeWord()
                                    try:
                                    smarti.run()
                                    except KeyboardInterrupt:
                                    print("\nנסגר...")
                                    smarti.stop()

                                    א.מ.ד.א תגובה 1 תגובה אחרונה
                                    0
                                    • Y YAHBDK

                                      @המלאך

                                      אני מביא מAI אבל אצלי בכל אופן זה עובד לא בדקתי לעומק

                                      """
                                      SmartiAI - Wake Word Detection

                                      מקשיב כל הזמן לשם "סמרטי" / "SmartiAI"
                                      ברגע שמזהה - מתעורר ומקשיב לפקודה

                                      התקנה (הרץ פעם אחת):
                                      pip install SpeechRecognition pyaudio pyttsx3

                                      הרצה:
                                      python smarti_wakeword.py
                                      """

                                      import speech_recognition as sr
                                      import pyttsx3
                                      import threading
                                      import time
                                      import logging

                                      logging.basicConfig(level=logging.INFO, format="[%(asctime)s] %(message)s", datefmt="%H:%M:%S")
                                      log = logging.getLogger("SmartiAI")

                                      ─── הגדרות ───────────────────────────────────────────────

                                      WAKE_WORDS = ["סמרטי", "smarti", "smarty", "סמארטי", "smartiai", "סמרטיאי"]
                                      LANGUAGE_PRIMARY = "he-IL"
                                      LANGUAGE_SECONDARY = "en-US"
                                      LISTEN_TIMEOUT = 4 # שניות להאזנה לפקודה אחרי זיהוי שם
                                      WAKE_TIMEOUT = 2 # שניות להאזנה לשם (קצר = קליל על ה-CPU)

                                      ──────────────────────────────────────────────────────────

                                      class SmartiWakeWord:
                                      def init(self):
                                      self.recognizer = sr.Recognizer()
                                      self.recognizer.energy_threshold = 300
                                      self.recognizer.dynamic_energy_threshold = True
                                      self.recognizer.pause_threshold = 0.6
                                      self.mic = None
                                      self.engine = pyttsx3.init()
                                      self._active = False
                                      self._stop = threading.Event()
                                      self._setup_voice()
                                      self._init_mic()

                                      def _setup_voice(self):
                                          """הגדרת קול בעברית אם אפשר"""
                                          voices = self.engine.getProperty("voices")
                                          for v in voices:
                                              if "hebrew" in v.name.lower() or "he" in v.id.lower():
                                                  self.engine.setProperty("voice", v.id)
                                                  break
                                          self.engine.setProperty("rate", 160)
                                      
                                      def _init_mic(self):
                                          try:
                                              self.mic = sr.Microphone()
                                              with self.mic as source:
                                                  self.recognizer.adjust_for_ambient_noise(source, duration=0.5)
                                              log.info("✅ מיקרופון מוכן")
                                          except Exception as e:
                                              log.error(f"❌ שגיאת מיקרופון: {e}")
                                      
                                      def speak(self, text: str):
                                          """מדבר בקול"""
                                          log.info(f"🔊 {text}")
                                          self.engine.say(text)
                                          self.engine.runAndWait()
                                      
                                      def _recognize(self, audio, lang=LANGUAGE_PRIMARY) -> str | None:
                                          """זיהוי דיבור - מנסה עברית ואנגלית"""
                                          for language in [lang, LANGUAGE_SECONDARY if lang == LANGUAGE_PRIMARY else LANGUAGE_PRIMARY]:
                                              try:
                                                  text = self.recognizer.recognize_google(audio, language=language)
                                                  if text:
                                                      return text.strip()
                                              except sr.UnknownValueError:
                                                  continue
                                              except sr.RequestError as e:
                                                  log.error(f"שגיאת שרת: {e}")
                                                  return None
                                          return None
                                      
                                      def _is_wake_word(self, text: str) -> bool:
                                          """בודק אם הטקסט מכיל את שם ההפעלה"""
                                          text_lower = text.lower().strip()
                                          for word in WAKE_WORDS:
                                              if word.lower() in text_lower:
                                                  return True
                                          return False
                                      
                                      def _listen_for_command(self) -> str | None:
                                          """מקשיב לפקודה אחרי זיהוי שם"""
                                          try:
                                              with self.mic as source:
                                                  log.info("👂 מקשיב לפקודה...")
                                                  audio = self.recognizer.listen(
                                                      source,
                                                      timeout=LISTEN_TIMEOUT,
                                                      phrase_time_limit=10
                                                  )
                                              return self._recognize(audio)
                                          except sr.WaitTimeoutError:
                                              return None
                                      
                                      def _process_command(self, command: str):
                                          """
                                          *** כאן תכניס את הלוגיקה של הבינה המלאכותית שלך ***
                                          לעכשיו - רק מדגים שזה עובד
                                          """
                                          log.info(f"⚡ פקודה התקבלה: {command}")
                                      
                                          # דוגמה בסיסית - תחליף בקריאה למודל שלך
                                          if any(w in command.lower() for w in ["שלום", "hello", "hi"]):
                                              self.speak("שלום! אני כאן, מה אפשר לעשות בשבילך?")
                                          elif any(w in command.lower() for w in ["שעה", "זמן", "time"]):
                                              t = time.strftime("%H:%M")
                                              self.speak(f"השעה היא {t}")
                                          elif any(w in command.lower() for w in ["תודה", "thanks", "thank you"]):
                                              self.speak("בבקשה! אני תמיד כאן")
                                          else:
                                              self.speak(f"קיבלתי: {command}")
                                      
                                          # ─── כאן תוסיף קריאה ל-AI שלך, למשל: ───
                                          # response = my_ai_model.process(command)
                                          # self.speak(response)
                                      
                                      def run(self):
                                          """הלולאה הראשית - מקשיבה לשם ההפעלה"""
                                          if not self.mic:
                                              log.error("אין מיקרופון - עצור")
                                              return
                                      
                                          log.info("=" * 50)
                                          log.info("🤖 SmartiAI פעיל!")
                                          log.info(f"📢 אמור '{WAKE_WORDS[0]}' להפעלה")
                                          log.info(f"🔑 מילות הפעלה: {', '.join(WAKE_WORDS)}")
                                          log.info("=" * 50)
                                      
                                          # סטטיסטיקות
                                          checks = 0
                                          detections = 0
                                      
                                          while not self._stop.is_set():
                                              try:
                                                  # ─── שלב 1: האזנה קצרה לשם בלבד ───
                                                  with self.mic as source:
                                                      audio = self.recognizer.listen(
                                                          source,
                                                          timeout=WAKE_TIMEOUT,
                                                          phrase_time_limit=WAKE_TIMEOUT
                                                      )
                                      
                                                  checks += 1
                                                  text = self._recognize(audio)
                                      
                                                  if not text:
                                                      continue
                                      
                                                  log.debug(f"שמעתי: {text}")
                                      
                                                  # ─── שלב 2: האם זו מילת ההפעלה? ───
                                                  if self._is_wake_word(text):
                                                      detections += 1
                                                      log.info(f"✨ זוהה! ({detections} פעמים) | שמעתי: '{text}'")
                                                      self.speak("כן?")
                                      
                                                      # ─── שלב 3: מקשיב לפקודה ───
                                                      command = self._listen_for_command()
                                      
                                                      if command:
                                                          threading.Thread(
                                                              target=self._process_command,
                                                              args=(command,),
                                                              daemon=True
                                                          ).start()
                                                      else:
                                                          self.speak("לא שמעתי פקודה, קרא לי שוב")
                                      
                                              except sr.WaitTimeoutError:
                                                  # לא נאמר כלום - ממשיך להאזין
                                                  pass
                                              except KeyboardInterrupt:
                                                  break
                                              except Exception as e:
                                                  log.error(f"שגיאה: {e}")
                                                  time.sleep(0.5)
                                      
                                          log.info("👋 SmartiAI כובה")
                                      
                                      def stop(self):
                                          self._stop.set()
                                      

                                      ─── הרצה ─────────────────────────────────────────────────

                                      if name == "main":
                                      smarti = SmartiWakeWord()
                                      try:
                                      smarti.run()
                                      except KeyboardInterrupt:
                                      print("\nנסגר...")
                                      smarti.stop()

                                      א.מ.ד.א מחובר
                                      א.מ.ד.א מחובר
                                      א.מ.ד.
                                      כתב נערך לאחרונה על ידי
                                      #140

                                      @YAHBDK זולל המון חשמל. קראתי לא מזמן על מודל זעיר חסכוני בחשמל, אני ייבדוק אם זה רלוונטי, אבל בגדול זה למתוח את הגבול...

                                      מפתח אפליקציות אנדרואיד
                                      em0548438097@gmail.com

                                      שניאור שמחש תגובה 1 תגובה אחרונה
                                      0
                                      • א.מ.ד.א א.מ.ד.

                                        @YAHBDK זולל המון חשמל. קראתי לא מזמן על מודל זעיר חסכוני בחשמל, אני ייבדוק אם זה רלוונטי, אבל בגדול זה למתוח את הגבול...

                                        שניאור שמחש מחובר
                                        שניאור שמחש מחובר
                                        שניאור שמח
                                        מדריכים עימוד
                                        כתב נערך לאחרונה על ידי שניאור שמח
                                        #141

                                        @א.מ.ד. איך במחשבי אפל זה עובד?
                                        זה כנראה לא יהיה דוגמה, כי הם אלו שיצרו את המחשב והמערכת ההפעלה, אבל מעניין..

                                        עריכה: ג׳ימני פירט לי על הנושא, וגם הביא חצי פתרון, מעניין אם זה באמת נכון ויעיל..
                                        התשובה שלו בספוילר:

                                        זה נראה כמו קסם – המחשב סגור או נמצא בצד, וברגע שאתה אומר "היי סירי", הוא מתעורר לחיים. מאחורי הקסם הזה עומדת הנדסת חומרה ותוכנה מאוד חכמה שמטרתה המובילה היא חיסכון באנרגיה.

                                        כך המערכת הזו עובדת, וזה מה שצריך לדעת אם רוצים ליישם משהו דומה בווינדוס:

                                        איך זה עובד ואיך זה לא זולל את הסוללה?

                                        הסוד טמון בארכיטקטורה דו-שלבית (Two-Stage Architecture) שמפרידה בין "הקשבה למילת ההפעלה" לבין "הבנת הפקודה".

                                        שלב 1: המעבד הקטן והחסכוני (החלק שלא זולל סוללה)

                                        במחשבי אפל (במיוחד אלו עם מעבדי Apple Silicon כמו M1, M2 וכו'), המעבד הראשי (ה-CPU) והחזק פשוט ישן כשאתה לא משתמש במחשב. מי שמקשיב לך הוא שבב קטנטן, ייעודי ודל-הספק שמקבל זרם חשמלי מינימלי ביותר.

                                        • המיקרופון מקליט את השניות האחרונות בלופ קבוע לתוך זיכרון זמני קטן ומבודד (Audio Buffer).
                                        • המעבד הקטן מריץ מודל בינה מלאכותית פשוט מאוד שמכיר רק דבר אחד: את גלי הקול של המילים "היי סירי" בקול שלך.
                                        • בגלל שהשבב הזה כל כך קטן והמשימה שלו ספציפית, הוא צורך מיליוואטים בודדים – כמות אנרגיה אפסית שלא מורגשת בסוללה.

                                        שלב 2: ההתעוררות של המעבד הראשי

                                        רק כאשר המעבד הקטן מזהה בוודאות גבוהה את מילת ההפעלה, הוא שולח אות "התעוררות" (Interrupt) למעבד הראשי (ה-CPU) ולמנוע הבינה המלאכותית החזק (Apple Neural Engine). רק אז המחשב באמת נדלק, מתחיל להקשיב להמשך המשפט ומפעיל את המערכות הכבדות שמנתחות את השפה ומבצעות את הפקודה.

                                        איך נקראת המערכת הזאת?

                                        באפל, רכיב החומרה האחראי על המשימות האלו נקרא AOP (Always-On Processor) – מעבד שנמצא תמיד במצב פעיל.
                                        הקונספט התוכנתי הכללי בתעשייה נקרא Wake-Word Detection (זיהוי מילת הפעלה) או Voice Activation.

                                        האם אפשר לעשות את אותה שיטה במחשבי ווינדוס?

                                        התשובה הקצרה היא: כן, אבל עם אתגר משמעותי בגזרת הסוללה.
                                        כשאתה בונה תוכנה משלך בווינדוס (למשל בפייתון או C#), אתה נתקל בשתי בעיות מרכזיות שאין לאפל (כי אפל מייצרת גם את החומרה וגם את התוכנה):

                                        1. בעיית ה-CPU (זלילת הסוללה)

                                        אם תכתוב תוכנה סטנדרטית שרצה ברקע ומקשיבה למיקרופון, היא תרוץ על המעבד הראשי של המחשב (Intel / AMD / Snapdragon). ברגע שהתוכנה שלך דורשת מהמעבד הראשי לנתח סאונד בכל שנייה, היא מונעת ממנו להיכנס למצבי שינה עמוקים (C-States). התוצאה: המעבד יישאר "ער" והסוללה של הלפטופ תתרוקן במהירות.

                                        2. גישה לחומרה ייעודית

                                        במחשבי ווינדוס מודרניים (במיוחד החדשים עם מעבדי Intel Core Ultra, AMD Ryzen סדרה 8000, או שבבי Snapdragon X Elite) יש רכיבי חומרה ייעודיים בדיוק לזה: NPU (יחידת עיבוד עצבית) או שבבי DSP (מעבדי אותות דיגיטליים) של כרטיס הקול. מיקרוסופט משתמשת בהם עבור הפיצ'רים שלה.
                                        הבעיה היא שלמפתחים עצמאיים קשה מאוד לקבל גישה ישירה ברמת החומרה (Low-level driver) לשבבים החסכוניים האלה כדי להריץ עליהם קוד מותאם אישית בזמן שהמחשב ישן.

                                        איך בכל זאת עושים את זה בצורה הכי יעילה בווינדוס?

                                        כדי לבנות עוזרת קולית משלך שלא תגמור את הסוללה לחלוטין, אתה צריך להשתמש בספריות Local Wake-Word Detection מתקדמות וממוטבות במיוחד, שמסוגלות לרוץ במינימום אחוזי ניצול מעבד (CPU Usage).
                                        האפשרויות המובילות בתעשייה כיום הן:

                                        • Picovoice Porcupine: ספרייה מעולה ומסחרית (עם מסלול חינמי למפתחים) שנחשבת לחסכונית ביותר באנרגיה ומיועדת בדיוק לזיהוי מילת הפעלה מקומית על המעבד בלי לזלול משאבים.
                                        • OpenWakeWord: ספריית קוד פתוח מבוססת Python, יעילה מאוד ומיועדת למערכות כמו Home Assistant.
                                        • Snowboy או PocketSphinx: פתרונות ותיקים יותר, אך פחות מדויקים או חסכוניים מהחדשים.

                                        באיזו שפת תכנות או ספרייה אתה מתכנן להשתמש כדי לבנות את העוזרת הקולית שלך בווינדוס?

                                        "אם לא תנסה, איך תדע?"

                                        א.מ.ד.א תגובה 1 תגובה אחרונה
                                        0
                                        • שניאור שמחש שניאור שמח

                                          @א.מ.ד. איך במחשבי אפל זה עובד?
                                          זה כנראה לא יהיה דוגמה, כי הם אלו שיצרו את המחשב והמערכת ההפעלה, אבל מעניין..

                                          עריכה: ג׳ימני פירט לי על הנושא, וגם הביא חצי פתרון, מעניין אם זה באמת נכון ויעיל..
                                          התשובה שלו בספוילר:

                                          זה נראה כמו קסם – המחשב סגור או נמצא בצד, וברגע שאתה אומר "היי סירי", הוא מתעורר לחיים. מאחורי הקסם הזה עומדת הנדסת חומרה ותוכנה מאוד חכמה שמטרתה המובילה היא חיסכון באנרגיה.

                                          כך המערכת הזו עובדת, וזה מה שצריך לדעת אם רוצים ליישם משהו דומה בווינדוס:

                                          איך זה עובד ואיך זה לא זולל את הסוללה?

                                          הסוד טמון בארכיטקטורה דו-שלבית (Two-Stage Architecture) שמפרידה בין "הקשבה למילת ההפעלה" לבין "הבנת הפקודה".

                                          שלב 1: המעבד הקטן והחסכוני (החלק שלא זולל סוללה)

                                          במחשבי אפל (במיוחד אלו עם מעבדי Apple Silicon כמו M1, M2 וכו'), המעבד הראשי (ה-CPU) והחזק פשוט ישן כשאתה לא משתמש במחשב. מי שמקשיב לך הוא שבב קטנטן, ייעודי ודל-הספק שמקבל זרם חשמלי מינימלי ביותר.

                                          • המיקרופון מקליט את השניות האחרונות בלופ קבוע לתוך זיכרון זמני קטן ומבודד (Audio Buffer).
                                          • המעבד הקטן מריץ מודל בינה מלאכותית פשוט מאוד שמכיר רק דבר אחד: את גלי הקול של המילים "היי סירי" בקול שלך.
                                          • בגלל שהשבב הזה כל כך קטן והמשימה שלו ספציפית, הוא צורך מיליוואטים בודדים – כמות אנרגיה אפסית שלא מורגשת בסוללה.

                                          שלב 2: ההתעוררות של המעבד הראשי

                                          רק כאשר המעבד הקטן מזהה בוודאות גבוהה את מילת ההפעלה, הוא שולח אות "התעוררות" (Interrupt) למעבד הראשי (ה-CPU) ולמנוע הבינה המלאכותית החזק (Apple Neural Engine). רק אז המחשב באמת נדלק, מתחיל להקשיב להמשך המשפט ומפעיל את המערכות הכבדות שמנתחות את השפה ומבצעות את הפקודה.

                                          איך נקראת המערכת הזאת?

                                          באפל, רכיב החומרה האחראי על המשימות האלו נקרא AOP (Always-On Processor) – מעבד שנמצא תמיד במצב פעיל.
                                          הקונספט התוכנתי הכללי בתעשייה נקרא Wake-Word Detection (זיהוי מילת הפעלה) או Voice Activation.

                                          האם אפשר לעשות את אותה שיטה במחשבי ווינדוס?

                                          התשובה הקצרה היא: כן, אבל עם אתגר משמעותי בגזרת הסוללה.
                                          כשאתה בונה תוכנה משלך בווינדוס (למשל בפייתון או C#), אתה נתקל בשתי בעיות מרכזיות שאין לאפל (כי אפל מייצרת גם את החומרה וגם את התוכנה):

                                          1. בעיית ה-CPU (זלילת הסוללה)

                                          אם תכתוב תוכנה סטנדרטית שרצה ברקע ומקשיבה למיקרופון, היא תרוץ על המעבד הראשי של המחשב (Intel / AMD / Snapdragon). ברגע שהתוכנה שלך דורשת מהמעבד הראשי לנתח סאונד בכל שנייה, היא מונעת ממנו להיכנס למצבי שינה עמוקים (C-States). התוצאה: המעבד יישאר "ער" והסוללה של הלפטופ תתרוקן במהירות.

                                          2. גישה לחומרה ייעודית

                                          במחשבי ווינדוס מודרניים (במיוחד החדשים עם מעבדי Intel Core Ultra, AMD Ryzen סדרה 8000, או שבבי Snapdragon X Elite) יש רכיבי חומרה ייעודיים בדיוק לזה: NPU (יחידת עיבוד עצבית) או שבבי DSP (מעבדי אותות דיגיטליים) של כרטיס הקול. מיקרוסופט משתמשת בהם עבור הפיצ'רים שלה.
                                          הבעיה היא שלמפתחים עצמאיים קשה מאוד לקבל גישה ישירה ברמת החומרה (Low-level driver) לשבבים החסכוניים האלה כדי להריץ עליהם קוד מותאם אישית בזמן שהמחשב ישן.

                                          איך בכל זאת עושים את זה בצורה הכי יעילה בווינדוס?

                                          כדי לבנות עוזרת קולית משלך שלא תגמור את הסוללה לחלוטין, אתה צריך להשתמש בספריות Local Wake-Word Detection מתקדמות וממוטבות במיוחד, שמסוגלות לרוץ במינימום אחוזי ניצול מעבד (CPU Usage).
                                          האפשרויות המובילות בתעשייה כיום הן:

                                          • Picovoice Porcupine: ספרייה מעולה ומסחרית (עם מסלול חינמי למפתחים) שנחשבת לחסכונית ביותר באנרגיה ומיועדת בדיוק לזיהוי מילת הפעלה מקומית על המעבד בלי לזלול משאבים.
                                          • OpenWakeWord: ספריית קוד פתוח מבוססת Python, יעילה מאוד ומיועדת למערכות כמו Home Assistant.
                                          • Snowboy או PocketSphinx: פתרונות ותיקים יותר, אך פחות מדויקים או חסכוניים מהחדשים.

                                          באיזו שפת תכנות או ספרייה אתה מתכנן להשתמש כדי לבנות את העוזרת הקולית שלך בווינדוס?

                                          א.מ.ד.א מחובר
                                          א.מ.ד.א מחובר
                                          א.מ.ד.
                                          כתב נערך לאחרונה על ידי
                                          #142

                                          @שניאור-שמח כתב בSmartiAI לווינדוס, סוכן AI שיכול לעשות הכל!:

                                          זה כנראה לא יהיה דוגמה, כי הם אלו שיצרו את המחשב והמערכת ההפעלה, אבל מעניין..

                                          זו אכן התשובה. הם מקצים חומרה מיוחדת וחסכונית שנועדה אך ורק לזה. יש את זה כמעט בהרבה מכשירים היום, לדוגמא ל-"OK גוגל", אבל זה בשימוש רק ע"י מערכת ההפעלה.

                                          מפתח אפליקציות אנדרואיד
                                          em0548438097@gmail.com

                                          תגובה 1 תגובה אחרונה
                                          1

                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • חוקי הפורום
                                          • פופולרי
                                          • לא נפתר
                                          • משתמשים
                                          • חיפוש גוגל בפורום
                                          • צור קשר