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

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

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

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

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

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

 

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

 

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

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

حمایت از Digi Boy

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

Digi Boy
Digi Boy

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

دیدگاه ها

33 دیدگاه

  • فاطمه
    ۲۹ آبان ۱۴۰۰

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

    • Digi Boy
      Digi Boy
      ۲۹ آبان ۱۴۰۰

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

      • فاطمه
        ۱ دی ۱۴۰۰

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

        • Digi Boy
          Digi Boy
          ۴ دی ۱۴۰۰

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

  • متین
    ۸ دی ۱۳۹۹

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

    • Digi Boy
      Digi Boy
      ۱۰ دی ۱۳۹۹

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

  • شروین
    ۲۰ آذر ۱۳۹۹

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

    • Digi Boy
      Digi Boy
      ۲۲ آذر ۱۳۹۹

      درود بر شما، ولتاژ خازن، حداکثر ولتاژی است که می‌تواند آن خازن تحمل کند. از آنجایی که حداکثر ولتاژ این مدار 5 ولت می‌باشد، فکر می‌کنم اکثر خازن‌های موجود معمولاً تحمل بیشتر ازین مقدار را داشته باشند.
      اگر دوست داشتید، این پروژه رو هم بسازید و نتیجه اش رو هم بگید.
      ممنون.
      https://8bi.ir/51qdy

  • تسلا
    ۱۵ آذر ۱۳۹۹

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

    • Digi Boy
      Digi Boy
      ۱۶ آذر ۱۳۹۹

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

  • شهریار
    ۱۴ آذر ۱۳۹۹

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

    • Digi Boy
      Digi Boy
      ۱۵ آذر ۱۳۹۹

      درود بر شما.
      توی متن، اگر دقت کنید نوشته شده که:
      “مقدار ولتاژ از طریق پایه شماره 3 آردوینو پخش می‌شود.”
      یعنی اینکه آردوینو صدا رو روی این پایه تولید می کنه، اما شما بهتره این خروجی رو از یه فیلتر هم رد کنید و به یک تقویت کننده هم بدید که مدارش رسم شده. شماره 3 که VCC هست و برق مداره، باید به +5 ولت متصل بشه. شماره دو هم به پایه شماره 3 آردوینو و کانکتور شماره 1 هم به زمین.
      فکر می‌کنم به کمک یک بازر و بدون نیاز به این مدار هم بتونید صدا رو بشنوید، اما تست نکردم. احتمالاً این مطلب بنده هم به دردتون بخوره:
      https://8bi.ir/51qdy

  • متین
    ۱۲ آذر ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۱۲ آذر ۱۳۹۹

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

  • شهریار
    ۱۰ آذر ۱۳۹۹

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

    • Digi Boy
      Digi Boy
      ۱۵ آذر ۱۳۹۹

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

  • سبحان
    ۲۷ مهر ۱۳۹۹

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

    • Digi Boy
      Digi Boy
      ۲۸ مهر ۱۳۹۹

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

  • علیرضا
    ۱۱ خرداد ۱۳۹۹

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

  • مهدی احمدی
    ۳۰ آذر ۱۳۹۸

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

    ممنون

    • Digi Boy
      Digi Boy
      ۱ دی ۱۳۹۸

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

  • mahdi
    ۲۹ آذر ۱۳۹۸

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

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

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

    • Digi Boy
      Digi Boy
      ۱ دی ۱۳۹۸

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

  • دهقان
    ۲۹ آذر ۱۳۹۸

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

    • Digi Boy
      Digi Boy
      ۳۰ آذر ۱۳۹۸

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

  • Mr.Ahmad
    ۲۸ آذر ۱۳۹۸

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

    • Digi Boy
      Digi Boy
      ۳۰ آذر ۱۳۹۸

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

  • محمد صادق
    ۲۸ آذر ۱۳۹۸

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

    • Digi Boy
      Digi Boy
      ۳۰ آذر ۱۳۹۸

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

  • کامبیز
    ۲۸ آذر ۱۳۹۸

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

  • مسعود
    ۲۷ آذر ۱۳۹۸

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 11 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک