آردوینو arduino, آموزش, پروژه آردوینو, توصیه شده, مقاله

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

ربات سخنگو سیسوگ

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

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

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

 

در مورد روش‌های متداول تولید صدا در مدار، قبلاً در ابتدای مقاله “اجرای ملودی موسیقی به وسیله آردوینو و بازر (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

 

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

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

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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

  1. سبحان گفت:

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

    1. Digi Boy Digi Boy گفت:

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

  2. علیرضا گفت:

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

  3. Mahdi Ahmadi مهدی احمدی گفت:

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

    ممنون

    1. Digi Boy Digi Boy گفت:

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

  4. mahdi گفت:

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

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

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

    1. Digi Boy Digi Boy گفت:

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

  5. دهقان گفت:

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

    1. Digi Boy Digi Boy گفت:

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

  6. Mr.Ahmad گفت:

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

    1. Digi Boy Digi Boy گفت:

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

  7. محمد صادق جعفری محمد صادق گفت:

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

    1. Digi Boy Digi Boy گفت:

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

  8. کامبیز گفت:

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

  9. مسعود گفت:

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