ساخت ربات سخنگو با آردوینو و کتابخانه گفتار

blog
۱۳۹۸-۰۹-۲۷
4 دقیقه

به نام خداوند جان آفرین، حکیم سخن در زبان آفرین.

شاید تا کنون در اجرای پروژه‌هایتان به این فکر افتاده باشید که چگونه اطلاعات خروجی را به جای نمایش دیداری، به‌صورت گفتاری و مثل یک ربات سخنگو به کاربر خود برسانید. در این قسمت از پروژه های آردوینو شما می‌آموزید که تنها با اضافه کردن یک کتابخانه گفتار و بدون استفاده از ماژول‌های جانبی، قابلیت گفتار را به مدار خود اضافه کنید!

با این آموزش سیسوگ همراه باشید.

 

در مورد روش‌های متداول تولید صدا در مدار، قبلاً در ابتدای مقاله “اجرای ملودی موسیقی به وسیله آردوینو و بازر (Buzzer)”  سیسوگ بحث شده است. با استفاده از کتابخانه‌ای که قرار است در این آموزش معرفی شود، شما می‌توانید از طریق واحدهای تایمر/کانتر داخلی میکروکنترلر و ایجاد فرکانس‌های PWM، حروف، کلمات، عبارات و اعداد انگلیسی از پیش تعریف شده را اجرا نمایید. اضافه کردن کلمات دیگر، همچنین تبدیل و تغییر آن برای زبان فارسی خیلی ارزش ندارد و برای این کار، بهتر است از مقاله نامبرده استفاده کنید. این کتابخانه با فریمورک آردوینو نوشته شده است. همان‌طور که پیش از این هم به آن اشاره شد، آردوینو صرفاً یک برد الکترونیکی نیست، بلکه یک فریمورک است که شما به وسیله آن قادر خواهید بود تا به جز بردهای آردوینو، برای تراشه‌های AVR و خیلی از بردهای الکترونیکی دیگر نیز کد بنویسید. اما با این حال، کدهای نوشته شده به زبان ++C هستند و شما می‌توانید با دانش برنامه نویسی خود، به راحتی آن را برای زبان C نیز ترجمه کنید.

 

دانلود و نصب کتابخانه گفتار آردوینو

از طریق منوی

Sketch -> Include Libary -> Manage Libaries…

و یا با استفاده از کلید ترکیبی Ctrl+Shift+I قسمت مدیریت کتابخانه‌ (لایبری)های آردوینو را باز کنید.

مدیریت کتابخانه ها در آردوینو

سپس در کادر جستجو، عبارت Talkie را وارد نمایید تا از طریق جستجوی اینترنتی، کتابخانه را پیدا کند. پس از یافتن تاکی، بر روی دکمه install

کلیک کنید تا فرآیند دانلود و نصب کتابخانه گفتار انجام شود.

جستجو و اضافه کردنکتابخانه گفتار آردوینو

 

آپلود کد بر روی آردوینو

حال یک اسکچ جدید باز کرده و کد زیر را در آن پیست کنید. در این برنامه آردوینو از طریق پایه‌ی A0، مقدار ولتاژ ورودی (صفر تا پنج ولت) را اندازه گرفته و سپس مقدار آن را از طریق پایه‌ی شماره 3 پخش می‌نماید.

در این برنامه ابتدا مقدار ولتاژ از پایه‌ی A0 خوانده شده و سپس با استفاده از توابع کتابخانه گفتار، مقدار ولتاژ از طریق پایه شماره 3 آردوینو پخش می‌شود. همچنین مقدار ولتاژ از طریق پورت سریال هم قابل مشاهده است.

تابع sayNumber از کتابخانه گفتار، یک مقدار عددی را به عنوان ورودی دریافت کرده و آن را به‌صورت گفتاری پخش می‌نماید.

تابع say نیز، در ورودی خود یک حرف، کلمه، عدد یا عبارت را دریافت و سپس آن را اجرا می‌نماید. البته این ورودی باید از قبل تعریف شده باشد.

سورس فایل‌های کتابخانه گفتار درمسیر زیر قرار دارند:

https://github.com/ArminJo/Talkie/tree/master/src

اگر از میان فایل‌های کتابخانه، فایل‌هایی که با پیشوند

Vocab_

هستند را باز کنید، می‌توانید لیستی از کلمات از قبل تعریف شده را ببینید و با اضافه کردن فایل هدر (header) مورد نظر به برنامه خود، از آن کلمات استفاده کنید.

همچنین کتابخانه گفتار، مثال‌های زیادی نیز برای اجرا دارد که می‌توانید آن‌ها را از منو زیر در آردوینو اجرا کنید:

File -> Examples -> Talkie

 

فیلتر و تقویت خروجی

از آنجایی که کتابخانه گفتار آردوینو، خروجی صدا را از طریق ایجاد سیگنال pwm و به فرم مربعی تولید می‌کند، ابتدا باید از یک فیلتر پایین گذر عبور داده شود تا تنها فرکانس صوت و به‌صورت سینوسی باقی بماند. سپس این سیگنال را به مرحله تقویت می‌بریم. در مدار پیشنهادی زیر، ابتدا سیگنال از فیلتر RC عبور کرده و سپس به تقویت کننده با آپ امپ LM386 وارد می‌شود. سپس خروجی را می‌توانید به یک بلندگو متصل کنید.

 

مدار فیلتر و تقویت صورت از ورودی pwm

 

صدای ضبط شده از عملکرد مدار

امیدوارم این آموزش نیز برای شما مفید باشد.

اطلاعات
33
0
لینک و اشتراک
profile

Digi Boy

متخصص الکترونیک

به دانش فزای و به یزدان گرای، که او باد جان تو را رهنمای (فردوسی)

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

profile
فاطمه گفت :
۱۴۰۰-۰۸-۲۹ ۱۲:۴۹

سلام میشه تو محیط های شبیه سازی مثل(پروتوس) انجام داد ؟

profile
Digi Boy گفت :
۱۴۰۰-۰۸-۲۹ ۱۵:۵۷

درود بر شما.
لایبری آردوینو برای پروتئوس هست، فکر می‌کنم شدنی باشه.

profile
فاطمه گفت :
۱۴۰۰-۱۰-۰۱ ۲۱:۳۰

مهندس میشه سخت افزارهای مورد نیازشو بنویسید من این پروژرو تو محیط شبیه سازی میخوام پیاده سازی کنم

profile
Digi Boy گفت :
۱۴۰۰-۱۰-۰۴ ۰۹:۳۷

سخت‌افزار خاصی نیاز نداره، فقط یک آردوینو و قطعاتی که در مدار فیلتر و تقویت استفاده شده، همین‌ها هست و اکثراً هم داخل نرم افزار پروتئوس وجود دارند. احتمال زیاد، حدس می‌زنم توی پروتئوس خیلی خوب اجرا بشه و حتی میتونید خروجی رو هم از اسپیکر کامپیوتر بشنوید، اما تست نکردم.

profile
متین گفت :
۱۳۹۹-۱۰-۰۸ ۱۱:۰۰

سلام.
ببخشید من سه چهار بار مدار تقویت کننده رو بستم ولی کار نمی کنه اما بدون تقویت کنده کار می کنه. یه سوال اینکه اون vcc برای کانکتور شماره 3 چه می خوره؟ اخه به هیج جا وصل نیست.
با تشکر

profile
Digi Boy گفت :
۱۳۹۹-۱۰-۱۰ ۰۹:۰۶

درود بر شما.
هر جا در مدار که برچسب VCC وجود دارد، بهم دیگر متصل هستند.

profile
شروین گفت :
۱۳۹۹-۰۹-۲۰ ۲۳:۳۶

سلام.لطفا می شه بگین خازن های مدار باید چند ولت باشن؟

profile
Digi Boy گفت :
۱۳۹۹-۰۹-۲۲ ۰۹:۲۴

درود بر شما، ولتاژ خازن، حداکثر ولتاژی است که می‌تواند آن خازن تحمل کند. از آنجایی که حداکثر ولتاژ این مدار 5 ولت می‌باشد، فکر می‌کنم اکثر خازن‌های موجود معمولاً تحمل بیشتر ازین مقدار را داشته باشند.
اگر دوست داشتید، این پروژه رو هم بسازید و نتیجه اش رو هم بگید.
ممنون.
https://sisoog.com/2019/11/11/%d8%a7%d8%ac%d8%b1%d8%a7%db%8c-%d9%85%d9%84%d9%88%d8%af%db%8c-%d9%85%d9%88%d8%b3%db%8c%d9%82%db%8c-%d8%a8%d9%87-%d9%88%d8%b3%db%8c%d9%84%d9%87-%d8%a2%d8%b1%d8%af%d9%88%db%8c%d9%86%d9%88-%d9%88-%d8%a8/

profile
تسلا گفت :
۱۳۹۹-۰۹-۱۵ ۱۱:۰۱

سلام.ببخشید چطور می شه کاری کرد که مثلا اگه یه سنسور جسمی رو تشخیص داد مثلا یه حرفی زده بشه؟ ممنون

profile
Digi Boy گفت :
۱۳۹۹-۰۹-۱۶ ۰۹:۱۵

درود بر شما!
خوب اگه برنامه نویسی بلد باشید که کاری نداره. سنسورتون رو مثلاً به یکی از پایه‌های آردوینو متصل می‌کنید، بعد توی برنامه اصلی چک می‌کنید هر موقع حرکتی اتفاق افتاد، توابع گفتار رو صدا می‌زنید! مثلاً سنسور PIR برای آردوینو هست که خروجی ولتاژ منطقی می‌ده و میتونید متصل کنید به آردوینو.

profile
شهریار گفت :
۱۳۹۹-۰۹-۱۴ ۱۹:۳۱

سلام.ببخشید توی این مدار از بلند گو استفاده نمی شه؟ بعد اینکه این کانکتور به کجا وصل می شن؟ باتشکر

profile
Digi Boy گفت :
۱۳۹۹-۰۹-۱۵ ۰۹:۳۶

درود بر شما.
توی متن، اگر دقت کنید نوشته شده که:
“مقدار ولتاژ از طریق پایه شماره 3 آردوینو پخش می‌شود.”
یعنی اینکه آردوینو صدا رو روی این پایه تولید می کنه، اما شما بهتره این خروجی رو از یه فیلتر هم رد کنید و به یک تقویت کننده هم بدید که مدارش رسم شده. شماره 3 که VCC هست و برق مداره، باید به +5 ولت متصل بشه. شماره دو هم به پایه شماره 3 آردوینو و کانکتور شماره 1 هم به زمین.
فکر می‌کنم به کمک یک بازر و بدون نیاز به این مدار هم بتونید صدا رو بشنوید، اما تست نکردم. احتمالاً این مطلب بنده هم به دردتون بخوره:
https://sisoog.com/2019/11/11/%d8%a7%d8%ac%d8%b1%d8%a7%db%8c-%d9%85%d9%84%d9%88%d8%af%db%8c-%d9%85%d9%88%d8%b3%db%8c%d9%82%db%8c-%d8%a8%d9%87-%d9%88%d8%b3%db%8c%d9%84%d9%87-%d8%a2%d8%b1%d8%af%d9%88%db%8c%d9%86%d9%88-%d9%88-%d8%a8/

profile
متین گفت :
۱۳۹۹-۰۹-۱۲ ۰۸:۵۳

سلام.ببخشید اون jp توی شماتیک چی هستن؟ با تشکر

profile
زئوس Zeus گفت :
۱۳۹۹-۰۹-۱۲ ۰۹:۱۵

سلام دوست عزیز
کانکتور هستند برای وصل کردن اتصالات خارجی است

profile
شهریار گفت :
۱۳۹۹-۰۹-۱۰ ۱۳:۳۶

سلام.ببخشید توی شماتیمک،jp چی هست؟ با تشکر

profile
Digi Boy گفت :
۱۳۹۹-۰۹-۱۵ ۰۹:۳۹

این قسمت محل کانکتور هست، اگر روی برد برد می‌بندید، ازین قسمت باید برق مورد نیاز مدار فیلتر و تقویت کننده و همین طور ورودی صدا رو بهش بدید و طرف دیگه هم یه خروجی هست که باید به بلندگو متصل به شه.
توی اون یکی کامنت بیشتر براتون توضیح دادم.
بازم اگر سؤالی بود بپرسید.

profile
سبحان گفت :
۱۳۹۹-۰۷-۲۷ ۱۶:۱۲

سلام .اون ایف های اول برنامه که قبل از ووید ستاپ اومده بود برا چی بود؟؟

profile
Digi Boy گفت :
۱۳۹۹-۰۷-۲۸ ۰۹:۲۳

درود بر شما.
از اونجایی که داخل کتابخونه صدای تعدادی از اعداد انگلیسی پایه‌ای به‌صورت از پیش ضبط شده وجود داره، برنامه سعی میکنه تا بقیه اعداد را با کمک ترکیبی از اون ها به سازه. مثلاً برای اینکه بتونه عدد 1003 رو بگه، میاد یکبار هزار رو میگه، یک بار 3 رو و بقیه صداهایی که لازمه بینش گفته بشه رو هم پخش میکنه. چون عملاً نمیشه گفتار تمام اعداد رو داخل حافظه کم آردوینو ضبط کرد. برای همین، قبل از تابع setup، اومده یک تابعی به نام sayNumber تعریف کرده.
ورودی این تابع یه عدد بزرگه که به کمک اون ایف ها داخل تابع به اعداد ریزتر برای اجرا تبدیل می‌شن. داخل برنامه اصلی، وقتی که می‌خواهیم عددی رو دستگاه بخونه، این تابع رو صدا می‌زنیم.?

profile
علیرضا گفت :
۱۳۹۹-۰۳-۱۱ ۰۸:۵۷

سلام نیاز به بلنگو دارد

profile
مهدی احمدی گفت :
۱۳۹۸-۰۹-۳۰ ۱۱:۱۲

سلام
برای فارسی گویی چطور باید عمل کنیم؟

ممنون

profile
Digi Boy گفت :
۱۳۹۸-۱۰-۰۱ ۰۹:۳۲

سلام.
کتابخانه معرفی شده، همانطور که در متن هم اشاره شد، صرفا برای حروف، کلمات، عبارات و اعداد انگلیسی از پیش تعریف شده مناسب هست و تبدیل و تغییر اون برای زبان فارسی خیلی ارزش نداره.

profile
mahdi گفت :
۱۳۹۸-۰۹-۲۹ ۲۲:۳۶

سلام
میتونید کامل بگید که برای استفاده از صدا های دیگه در برنامه باید چیکار کنم و کد رو کجا قرار بدم.

مثلا میخوام همین صدا رو در برنامه استفاده کنم:

extern const uint8_t sp4_OFF[] PROGMEM={0x69,0xFB}

profile
Digi Boy گفت :
۱۳۹۸-۱۰-۰۱ ۰۹:۳۶

شما هر کجا که میخواهید تابع پخش صدا رو صدا بزنید، میتونید این آرایه رو تعریف بکنید. اما بهتره در خطوط اولیه برنامه (قبل از setup آردوینو) باشه. اگه قصد دارید صدا های زیای رو تعریف کنید، یک فایل جدید بسازید و اون رو داخل برنامتون صدا بزنید. ولی توصیه میکنم از این لایبری فقط برای همان عبارات از پیش تعریف شده استفاده کنید، چون اضافه کردن صدا به این لایبری خیلی سخت هست. لینک زیر رو هم ببینید:
https://github.com/going-digital/Talkie/issues/4
به نظر من برای صدا های دیگه، از آرایه WAV استفاده کنید.

profile
دهقان گفت :
۱۳۹۸-۰۹-۲۹ ۲۲:۰۵

بنام خدا
سلام بر همگی
برنامه ها و کتابخانه هایی که برای نرم افزار آردینو می‌گذارید. برای vs code نیز اجرا کنید.
ممنون میشم.

profile
Digi Boy گفت :
۱۳۹۸-۰۹-۳۰ ۰۹:۱۳

درود بر شما. اگه آموزش بعدی روی آردوینو بود، حتما در محیط VSCODE اون رو اجرا می‌کنم.

profile
Mr.Ahmad گفت :
۱۳۹۸-۰۹-۲۸ ۲۰:۴۲

خیلی عالی بود مرسی
واقعا خسته نباشید

profile
Digi Boy گفت :
۱۳۹۸-۰۹-۳۰ ۰۹:۰۹

درود بر شما. خوشحال هستم که مقاله برای شما مفید بوده.

profile
محمد صادق گفت :
۱۳۹۸-۰۹-۲۸ ۱۳:۵۱

بسیار عالی
واقعا مطالبتون جذاب و بروز هست

profile
Digi Boy گفت :
۱۳۹۸-۰۹-۳۰ ۰۹:۰۶

درود بر شما.
سپاس گزارم.

profile
کامبیز گفت :
۱۳۹۸-۰۹-۲۸ ۱۰:۴۳

خیلی جالب بود ممنون

profile
Digi Boy گفت :
۱۳۹۸-۰۹-۳۰ ۰۹:۰۴

خواهش می‌کنم.

profile
مسعود گفت :
۱۳۹۸-۰۹-۲۷ ۲۰:۵۴

چه کارایی که ازین آردوینو بر نمیاد!

profile
Digi Boy گفت :
۱۳۹۸-۰۹-۲۸ ۰۹:۰۵

?

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله