עבור לתוכן

שאלה על יכולת של C#

Featured Replies

פורסם

שלום לכולם!

האם יש בC# אפשרות כלשהיל"זיהוי קול"? נגיד במשחק סיימון אמר[ - האנגלית התחרבשה לי פה] (6 צבעים כל צבע מפיק צליל שונה) האם יש דרך כלשהי (כולל הורדת תוספות מהאינטרנט) שהתוכנה בהפעלתה "תחכה" שיופעלו צלילים ותוכל לזהות את הצלילים השונים (אני מקווה שהייתי מובן) - תחשבו על דוגמא של simon

. says

האם יש אפשרות לתכנת תוכנה (או האם קיימת אחת) שבעצם תהיה "בלתי מנוצחת" ב simon says?

תודה רבה לעוזרים!!!

מצטער על החפירה...

פורסם

הכל אפשרי :) במקרה הזה, זה יחסית פשוט.

(אני מניח שאתה מתכוון למשחק כמו זה שבלינק הזה: http://www.mathsisfun.com/games/simon-says-game.html)

הנושא שמתעסק בדברים כאלו נקרא עיבוד אותו דיגיטלי - digital signal processing.

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

פורסם
  • מחבר

תודה על העזרה המהירה!!!

טוב, קצת הסתבכתי בנסיון להבין איך משתמשים ב הזהDSP

אבל בכל מקרה יש בעייה כי לפי מה שהבנתי זה מזהה קבצים מוקלטים ואני מכוון שזה יזהה במעין לייב, למשל במשחקון flash שהבאת, האם יש אפשרות לתכנת תוכנה שפשוט תשים את המיקרופון שלך ליד הרמקולים והמחשב כבר ישחק לבד??

תודה רבה לעוזרים!!!

עריכה:

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

ננסה להבין משהו מגוגל... עזרה מפורטת למקרה שמישהו הבין איך עושים את זה תתקבל בברכה!!

פורסם

exercise - החיפוש שהבאת לא ממש רלוונטי. פותח הת'רד ביקש ליצור תוכנה שתזהה צלילים, ולא קולות אנושיים. לכן voice recognition לא רלוונטי.

mt_nro:

DSP זה לא תוכנה ספציפית, זה נושא שלם באלקטרוניקה. אתה יכול לקרוא על זה קצת בויקיפדיה (יש גם בעברית).

בשביל לעשות מה שאתה רוצה, אתה צריך שהתוכנה שלך תבצע את הפעולות הבאות:

1. להקליט הצלילים שהמשחק מוציא.

2. לנתח את הקול המוקלט ולהוציא ממנו את התדרים, וככה לדעת את הטון המדוייק של הצליל שהושמע.

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

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

פורסם
  • מחבר

דווקא אני לא חושב שתיקשור עם המשחק הוא הבעייתי אפשר פשוט לעשות את זה פשוט בעזרת מקארו לא? או שאני לא בכיוון??

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

1. לא מספיק שהתוכנה תדע רק להבחין בין 6 הצלילים השונים (ע"י פחות משנייה ראשונה של כל צליל)??

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

תודה רבה שניצל התותח!! :xyxthumbs:

פורסם

זה מאוד תלוי בסוג הצלילים.

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

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

בלי ידע בסיס באותות, קשה לי להאמין שתשיג תוצאות.

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

פורסם
  • מחבר

אם זה נגיד אקורדים שונים בגיטרה (רק שהם ממש שונים אחד מהשני) יש לי סיכוי בלי ידע מוקדם בעיבוד אותות??

והמשחקון פלאש (לא תוכנה) משמיע לכל "כפתור" את אותו צליל כל פעם...

פורסם

הנה אלטרנטיבה שאולי תענה על הדרישות שלך ועוקפת את עניין העיבוד קול.

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

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

אם כך,

א) צלם את המכשיר בעזרת web cam ודאג שיוקרן למסך.

ב) כתוב/הורד תוכנה שקוראת את המסך באותו מקום ותזהה בהתאם לחיווי הויזואלי איזה צליל הופק.

הערות

א) אם אתה רוצה לרמות בסיימון אז יש דרכים הרבה יותר קלות.

ב) בטוח שיש קוד חינמי מוכן לתפוס (grab/scrape) את המסך. תוכנות כאלו מספקות לך גישה למטריצה של הפיקסלים על המסך. יצא לי לכתוב תוכנה כזו וזה לא היה מסובך יותר מידי. (ספציפית אחת שקוראת את הלוח של minesweeper ומנסה לפתור).

שניצל צודק לגבי הענין של לגרום לתוכנה ללחוץ על הסיימון - זה החלק הקשה. אבל כאן אני מציע לך לבנות או להשיג מכונת זמן (בטח יש ב ebay). בעתיד בטוח יש רובוטים חכמים שיוכלו ללחוץ על המכשיר. תגנוב אחד ותחזור להוה.

פורסם

אתה מדבר על משחק על המחשב, או המשחק הקלאסי ? אם זה לא על המחשב איך אתה בדיוק רוצה לשלוט על הלחיצה על המקשים ?

פורסם
  • מחבר

טוב אני רוצה לרמות בסיימון אבל לא הבנתי בדיוק למה אתה מתכוון ב grab/scrape

יש חיווי ויזואלי אבל אם נגיד משהו זז אקראית ליד אין דרך למרכז את המקום שבו הוא יקליט ואליו הוא "יסתכל"

ובקשר ללחיצת הכפתורים אין תוכנות של מאקרו או משהו כזה שלוחצת על כפתורים? אין אפשרות אולי בעזרת איזה תוכנת מקלדת וירטואלית, שכחתי לציין פרט חשוב: במשחק לא לוחצים עם העכבר אלא עם הספרות 1-6...

עזרה??? (תודה רבה לככווללםם)

פורסם

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

פורסם
  • מחבר

זה בדיוק מה שאני לא יודע איך עושים (הכוונה למשחקון פלאש במחשב ולא למשחק פיזי כלשהוא)

כשאתה אומר את זה זה נשמע פשוט...

אפשר עזרה?

פורסם

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

GetWindowRect

ואז לבדוק את הצבע ב X Y של החיווים האלו ע"י

GetPixel

של

GetDesktopWindow

ולבסוף "ללחות" על המקשים ע"י

keybd_event

פורסם
  • מחבר

תודה על הפירוט הרב,אני ינסה "לשחק" עם זה מאוחר יותר, רק עוד 3 בעיות: איך אני יכול להגיד לו להסתכל ב"חלון" של האינטרנט אקספלורר??

איך אני יכול שהוא יזהה האם זה ישר מזהה את הצבע של הפיקסל וצריך לשאול משהו בסגנון של if(pixel1==black) ??

3.

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

וואו זה מסובך ומצטער אם אני עולה לך על העצבים...

תודה ממש ממש רבה לעוזרים!!

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים