پیشی را با فرمانهای صوتی هوش مصنوعی از هزارتوهای اسکرچ عبور بده
مسیر را با صدای خود بگویید، پیشی را در دو مأموریت هزارتو هدایت کنید، در صورت تمایل battery را جمع کنید و قبل از تمام شدن زمان به هدف برسید!
با استفاده از قابلیت تشخیص گفتار، پیشی را با صدای خود در هزارتو هدایت کنید. جهتها و عددها را بگویید تا پیشی در خانههای مسیر حرکت کند، از موانع دور بماند و به هدف برسد. هر دو مأموریت را کامل کنید و ببینید چقدر میتوانید امتیاز بگیرید!
سطح
متوسط
زمان تقریبی
۴۰ تا ۵۰ دقیقه
افزونه
تشخیص گفتار
📖 چه چیزی یاد میگیرید
- هوش مصنوعیِ تشخیص گفتار چگونه زبان گفتاری را به متن تبدیل میکند
- تشخیص گفتار چگونه عبارتهای گفتهشده را به متن تبدیل میکند
- چگونه یک عبارت را کلمهبهکلمه بخوانید و چند فرمان را بهترتیب اجرا کنید
- چگونه کلمات مربوط به جهت و عددها، حرکت روی یک شبکه را کنترل میکنند
- چگونه از بلوکهای سفارشی و broadcastها برای سازماندهی بازی استفاده کنید
- چگونه با استفاده از رنگها، موانع، battery و هدف را تشخیص دهید
- چگونه تایمر، امتیاز و صداهای بازخورد را به بازی اضافه کنید
- چگونه فرمانها را شخصیسازی کنید و وقتی تشخیص گفتار دقیق نیست، عملکرد آن را بهتر کنید
🧰 چه چیزهایی لازم دارید
- یک کامپیوتر دارای میکروفون و اتصال اینترنت
- Chrome، Edge یا مرورگر دیگری که از Speech Recognition پشتیبانی کند
- Pishi.ai در اسکرچ (پروژه جدید ایجاد کنید)
- افزونه تشخیص گفتار (راهنمای آن را مشاهده کنید)
- کاراکتر پیشی و دو پسزمینه هزارتو
- رنگهای متفاوت برای مسیرها، موانع، مرز بیرونی، battery و هدف
- صداهایی برای شمارش معکوس، برخوردها، battery و رسیدن به هدف
🛠️ پروژه خود را بسازید
1. دو مأموریت هزارتو بسازید
دو پسزمینه هزارتو با نامهای mission 1 و mission 2 بسازید. هرکدام را به شکل یک شبکه طراحی کنید که فاصله مرکز هر خانه تا مرکز خانه کناری ۵۶ گام باشد؛ درست به اندازه حرکت پیشی.
برای مسیر امن، موانع، مرز بیرونی، battery و هدف از رنگهای متفاوت استفاده کنید. پیشی را روی خانه شروع قرار دهید. گرفتن battery اختیاری است: با جمعکردن آن ۱۰ امتیاز میگیرید، اما پیشی بدون آن هم میتواند مأموریت را تمام کند.
نکته: برای انتخاب دقیق رنگهای پسزمینه در بلوکهای touching color از ابزار قطرهچکان استفاده کنید. حتی کمی تفاوت در رنگ ممکن است باعث شود تشخیص انجام نشود.
2. بازی و فرمانهای صوتی را مقداردهی اولیه کنید
متغیرهایی را که در بلوکها میبینید بسازید، سپس یک بلوک سفارشی با نام initialize ایجاد کنید.
از آن برای انتخاب English (American) در Speech Recognition، رفتن به mission 1، قرار دادن پیشی در نقطه شروع، تنظیم step روی 56 و countdown روی 60 و بازنشانی score و سایر مقادیر بازی استفاده کنید.
این کار به شما اجازه میدهد اگر Speech Recognition در تشخیص یک کلمه مشکل داشت، بعداً آن را تغییر دهید. برای مثال، میتوانید right را به east تغییر دهید.
این کار به شما اجازه میدهد اگر Speech Recognition در تشخیص یک کلمه مشکل داشت، بعداً آن را تغییر دهید. برای مثال، میتوانید “right” را به “east” تغییر دهید.
هر فرمان باید فقط یک کلمه باشد. پروژه گفتار تشخیصدادهشده را کلمهبهکلمه بررسی میکند؛ بنابراین فرمانی مانند go right نمیتواند با یک متغیر فرمان واحد مطابقت داشته باشد.پروژه گفتار تشخیصدادهشده را کلمهبهکلمه بررسی میکند؛ بنابراین فرمانی مانند “go right” نمیتواند با یک متغیر فرمان واحد مطابقت داشته باشد.
3. مأموریت را شروع و فرمانهای صوتی را پردازش کنید
اسکریپت پرچم سبز را با اجرای “initialize”، اعلام مأموریت و broadcast کردن “start timer” شروع کنید. اسکریپت تایمر شمارش معکوس را انجام میدهد و وقتی پیشی آماده شنیدن باشد، “start recognition” را broadcast میکند.
در اسکریپت “start recognition”، تا زمانی که “countdown” به “FINISH” تبدیل نشده است، به شنیدن ادامه دهید. بعد از هر عبارت، متن تشخیصدادهشده را در “message” ذخیره کنید، سپس با استفاده از “next word [final]” هر کلمه تأییدشده را بهترتیب به “run command [text]” بفرستید. پیش از گوش دادن به یک عبارت جدید، “last command” را پاک کنید.
از [final] استفاده کنید، چون اینها کلماتی هستند که Speech Recognition تشخیص آنها را کامل کرده است. کلمات [live] ممکن است هنگام صحبت بازیکن هنوز تغییر کنند؛ بنابراین ممکن است پیشی به کلمهای واکنش نشان دهد که فقط یک حدس موقت بوده است.
برای مثال، در عبارت “move right four times”، بازی کلمات move و times را نادیده میگیرد. “Right” پیشی را یک خانه حرکت میدهد و “four” سه خانه دیگر به حرکت اضافه میکند. عدد را بلافاصله بعد از جهت بگویید — عبارت “move right please four times” باعث تکرار حرکت نمیشود.
نکته برای آزمایش: هنگام تست، متغیر “message” را نمایش دهید تا ببینید Speech Recognition چه چیزی شنیده است.
4. کلمات جهت و عدد را به حرکت تبدیل کنید
بلوکهای سفارشی زیر را بسازید:
- run command [text]
- check repeats [num]
بلوک اول بررسی میکند که آیا کلمه فعلی یک جهت است یا نه.
اگر جهت باشد، پیشی یک خانه حرکت میکند:
“up” و “down” مقدار “y” را تغییر میدهند، در حالی که “left” و “right” مقدار “x” را تغییر میدهند.
“check repeats [num]” کلمات “two”، “three” و “four” را مدیریت میکند. یک جهت از قبل پیشی را یک خانه حرکت داده است؛ بنابراین عدد، حرکتهای باقیمانده را اضافه میکند.
برای مثال، “right three” در مجموع پیشی را سه خانه حرکت میدهد.
بعد از هر خانه، “calculate score” را اجرا کنید تا بررسی شود پیشی کجا قرار گرفته است. مکث کوتاه باعث میشود بازیکن بتواند هر حرکت را ببیند.
اسکریپت همچنین جهت قبلی را در “last command” به خاطر میسپارد تا یک عدد بتواند آن را تکرار کند.
5. امتیاز را محاسبه کنید و مأموریت را تغییر دهید
بلوک سفارشی “calculate score” را بسازید. بعد از هر حرکت، این بلوک با استفاده از بلوکهای “touching color” بررسی میکند که پیشی به چه چیزی رسیده است:
- مرز بیرونی:“10” امتیاز کم کنید و پیشی را به نقطه شروع برگردانید.
- مانع: “5” امتیاز کم کنید؛ پیشی میتواند به حرکت ادامه دهد.
- Battery: اگر “battery collected” برابر “0” است، “10” امتیاز اضافه کنید و سپس آن را روی “1” قرار دهید تا این امتیاز فقط یک بار داده شود.
- هدف: “15” امتیاز بهعلاوه تعداد ثانیههای کامل باقیمانده اضافه کنید.
هنگام رخ دادن هر اتفاق، صدای مناسب آن را پخش کنید. وقتی پیشی در “mission 1” به هدف رسید، “last command” و “battery collected” را بازنشانی کنید، به “mission 2” بروید، پیشی را به نقطه شروع برگردانید و “start timer” را broadcast کنید.
وقتی پیشی در “mission 2” به هدف رسید، “countdown” را روی “FINISH” قرار دهید تا بازی پایان پیدا کند.
6. شمارش معکوس ۶۰ ثانیهای را اضافه کنید و بازی را به پایان برسانید
اسکریپتی بسازید که با “when I receive [start timer]” شروع شود.
این اسکریپت “3”، “2” و “1” را میگوید، صدای سوت را پخش میکند، تایمر Scratch را بازنشانی میکند و “start recognition” را broadcast میکند.
همین روند در ابتدای هر دو مأموریت اجرا میشود.
تا زمانی که تایمر Scratch کمتر از “60” ثانیه است، “countdown” را بهروزرسانی کنید تا زمان باقیمانده را نشان دهد.
وقتی زمان تمام شد، “countdown” را روی “FINISH” قرار دهید.
این کار اسکریپت شنیدن را هم متوقف میکند.
وقتی مأموریت تمام شد، نمایش countdown را مخفی کنید.
سپس پیشی اعلام میکند: “Your Score: [score]”.
🚀 پروژه خود را امتحان کنید!
روی پرچم سبز کلیک کنید و اجازه دسترسی به میکروفون را بدهید. منتظر شمارش معکوس و صدای سوت بمانید، سپس وقتی پیشی میگوید “Listening…”، صحبت کنید. برای مثال، عبارتی مانند “move right three times” را امتحان کنید و بعد مسیر دلخواه خودتان را بگویید.
هر دو مأموریت را آزمایش کنید. آیا میتوانید قبل از تمام شدن زمان به هدف هر دو برسید؟ یک بار battery اختیاری را جمع کنید و بار دیگر مسیر کوتاهتری را بدون گرفتن آن امتحان کنید.
کدام مسیر امتیاز بیشتری میگیرد؟
اگر پیشی به شکل غیرمنتظرهای حرکت کرد، متغیر “message” را نمایش دهید تا ببینید Speech Recognition چه چیزی شنیده است. سعی کنید در محیطی آرامتر صحبت کنید یا فرمان را با یک گزینه یککلمهای دیگر جایگزین کنید.
🤖 این پروژه چگونه کار میکند؟
مأموریت با شمارش معکوس و صدای سوت شروع میشود
↓بازیکن مسیر را با صدای خود میگوید
↓Speech Recognition آن را به کلمات تأییدشده تبدیل میکند
↓Scratch کلمات را بهترتیب میخواند
↓جهتها پیشی را حرکت میدهند؛ عددها جهت قبلی را تکرار میکنند
↓Scratch بعد از هر خانه، رنگ را بررسی میکند
↓بازی امتیاز و مأموریت را بهروزرسانی میکند
کلمات دیگر نادیده گرفته میشوند. پیامهای broadcast هماهنگی بین شمارش معکوس و شنیدن را انجام میدهند و سپس همین روند برای “mission 2” دوباره آغاز میشود.
💡 پروژه را بهتر کنید!
1. فرمانهای جدید را آزمایش کنید
فرمانهای یککلمهای ذخیرهشده در متغیرهای “command …” را تغییر دهید. چند گزینه مختلف را امتحان کنید و ثبت کنید Speech Recognition کدامیک را مطمئنتر تشخیص میدهد. آیا یک عبارت کامل مانند “move right three times” بهتر از “right three” کار میکند؟
2. یک مأموریت چندزبانه بسازید
زبان Speech Recognition را تغییر دهید و کلمات فرمان را با کلماتی از آن زبان جایگزین کنید. هر فرمان را یککلمهای نگه دارید، سپس آزمایش کنید که آیا هزارتو همچنان همانطور که انتظار دارید واکنش نشان میدهد یا نه.
3. یک راهنمای هوش مصنوعی اضافه کنید
از افزونه AI ChatBot استفاده کنید تا وقتی بازیکن گیر میکند، به او یک راهنمایی بدهد. موقعیت پیشی و موانع نزدیکش را به هوش مصنوعی بدهید و از آن بخواهید بهجای کل مسیر، فقط یک جهت پیشنهادی ارائه کند.
4. مأموریت بعدی را تطبیقی کنید
تعداد برخورد با موانع یا مدتزمانی را که بازیکن نیاز دارد ثبت کنید. اگر بازیکنی مشکل دارد، در “mission 2” زمان بیشتری به او بدهید؛ یا برای بازیکنی که سریع مأموریت را تمام میکند، یک چالش اضافه در نظر بگیرید.
🔗 ساختهی خود را به اشتراک بگذارید
هزارتویتان تمام شد؟
تم بازی را تغییر دهید یا یک مسیر جدید طراحی کنید، سپس پروژهتان را با یک دوست یا همکلاسی به اشتراک بگذارید. از او بخواهید هر دو مأموریت را بازی کند و ببینید آیا میتواند رکورد امتیاز شما را بشکند!
