กลับไปหน้ารวมไฟล์
artificial-existences-705eb3.md

【IMPORTANT】 เรียนศาสตราจารย์ Alvaro: โปรดตรวจสอบไฟล์ที่เราอัปโหลดบน Canvas ด้วย มีไฟล์โค้ด (โค้ดที่เราอัปโหลดที่นี่เป็นเหมือนบทเรียน ไม่มี prompt และข้อมูลส่วนตัว), วิดีโอสาธิต และรูปภาพรายละเอียดอื่น ๆ หรือปัญหา

โปรเจกต์ Arduino ของเราเป็นการจัดแสดงงานศิลปะที่มีหุ่นยนต์ง่าย ๆ สองตัวเป็นแกนหลัก ที่สนทนากันไม่รู้จบ พูดคุยและถกเถียงในหัวข้อต่าง ๆ เช่น ปรัชญาอัตถิภาวนิยม, มนุษยชาติ, ความรัก และอื่น ๆ วัตถุประสงค์คือเพื่อกระตุ้นความคิดและการใคร่ครวญ เสริมสร้างความอยากรู้อยากเห็นทางปัญญา ผ่านการสังเกตบทสนทนาและการสำรวจประเด็นเหล่านี้

แนวคิดเริ่มต้นมาจากการระดมสมองที่เราพิจารณาสร้างหุ่นยนต์ที่สามารถให้เสียงตอบกลับตามอินพุตของผู้ชม โดยมีเป้าหมายเพื่อนำเสนอการสนับสนุนในลักษณะที่สนุกสนานและโต้ตอบได้ อย่างไรก็ตาม หลังจากทำการวิจัยเพิ่มเติมและปรึกษาหารือ เราก็ได้แนวคิดที่น่าสนใจและสร้างสรรค์ยิ่งขึ้น เราตัดสินใจใช้ Artificial Intelligence (AI) ในการสร้างการตอบกลับและการโต้แย้ง นำไปสู่แนวคิดของหุ่นยนต์สองตัวที่สนทนากันไม่รู้จบ

เนื่องจากข้อจำกัดด้านทรัพยากรและเวลา เราจึงต้องปรับโปรเจกต์ของเราให้สำเร็จในเวอร์ชันเบื้องต้นของงานศิลปะ เราช่วยเหลือกันตลอดกระบวนการ โดย Quentin มุ่งเน้นไปที่ฟังก์ชันการสนทนา API AI text-to-speech หลัก รวมถึงส่วนประกอบฮาร์ดแวร์ (ESP32 และ Speaker) และการสร้างวิดีโอสาธิต Nielsen ทำงานในส่วนของฟังก์ชัน LED eyes, การนำเสนอ, ข้อเสนอ, รายงานที่เป็นลายลักษณ์อักษร, การวิจัยวัสดุ, การจัดหา, การผลิตวิดีโอขั้นสุดท้าย และตัวหุ่นยนต์

ส่วนประกอบของเรา: 1x esp32 board, 1x amplifier, 1x Speaker, 2x API (AI conversation & text to speech) , 4x LED 8x8, กระดาษแข็ง/กระดาษหนา (ตัวหุ่นยนต์) ,Arduino Kit ,สายไฟยาว 1m สำหรับระยะห่างระหว่างดวงตา โดยเฉพาะระหว่างหุ่นยนต์

ไดอะแกรมของส่วนประกอบ

LED (ดวงตา)

โมเดลแนวคิด

เป้าหมายของเราคือการรวมสามส่วนหลักเหล่านี้เข้าด้วยกันอย่างราบรื่น ส่วนแรกคือการสร้างบทสนทนาโดยใช้ OpenAI API ส่วนที่สองมุ่งเน้นไปที่การแปลงบทสนทนาเป็นเสียงโดยใช้เทคโนโลยี text-to-speech (TTS) ส่วนที่สามเกี่ยวข้องกับการควบคุมไฟ LED (ดวงตาของหุ่นยนต์) โดยการรวมองค์ประกอบเหล่านี้เข้าด้วยกัน เรามุ่งมั่นที่จะสร้างสรรค์งานศิลปะที่น่าดึงดูดใจซึ่งกระตุ้นความคิดและการสำรวจสำหรับผู้ชม

โค้ดถูกแบ่งออกเป็นสามส่วนหลัก ส่วนแรกคือการสร้างบทสนทนาโดยใช้ OpenAI API ส่วนที่สองคือการแปลงบทสนทนาเป็นเสียงโดยใช้ text-to-speech (TTS) ส่วนที่สามคือการควบคุมไฟ LED (ดวงตาของหุ่นยนต์)

ในระหว่างกระบวนการพัฒนา เราใช้ ESP32 ซึ่งมีฟังก์ชัน WiFi ในตัวสำหรับการส่งคำขอ API หลังจากทดสอบคำขอ API และ prompts โดยใช้ Postman ก็ได้ผลลัพธ์การตอบสนองที่สมบูรณ์ อย่างไรก็ตาม ข้อจำกัดของ API ทำให้ต้องมีการปรับเปลี่ยน ช่วงเวลาการสร้างบทสนทนาต้องตั้งไว้ที่ 20 วินาที เพื่อหลีกเลี่ยงการเกินขีดจำกัดการร้องขอ API เพื่อให้แน่ใจว่าช่วงเวลาบทสนทนาของหุ่นยนต์สุดท้ายเหมาะสม prompts ได้รับการปรับเปลี่ยนให้สร้างการตอบสนองประมาณ 10-15 วินาที เพื่อป้องกันการหยุดชั่วคราวที่นานเกินไปหรือสั้นเกินไประหว่างบทสนทนา

เมื่อโค้ดการสร้างบทสนทนาเสร็จสมบูรณ์ ขั้นตอนต่อไปคือ TTS มีการพิจารณาสองทางเลือก: การใช้ Google's Text-to-Speech API หรือการค้นหา local TTS library บน GitHub เนื่องจาก amplifier ที่เลือกคือ PAM8302 ซึ่งไม่ใช่ตัวเลือกฮาร์ดแวร์ที่เหมาะสม ตัวเลือก library ที่มีจึงถูกจำกัด

ตัวเลือกแรกคือ Google's TTS API ซึ่งให้ผลลัพธ์ที่เกือบสมบูรณ์แบบพร้อมความสามารถในการเปลี่ยนอารมณ์และโทนเสียง ทำให้ได้เสียงพูดที่เป็นธรรมชาติและคล่องแคล่วราวกับมนุษย์ อย่างไรก็ตาม ข้อเสียหลักคือค่าใช้จ่ายที่เกี่ยวข้องกับการใช้ API ซึ่งเป็นความท้าทายสำหรับนักศึกษามหาวิทยาลัยสองคน ด้วยเหตุนี้ จึงมีการตัดสินใจที่จะสำรวจตัวเลือก local library หลังจากทบทวน TTS libraries หลายตัว ก็พบสองประเภท

ประเภทแรกใช้ Google Text-to-Speech โดยไม่จำเป็นต้องใช้ API key โดยอาศัยการใช้ประโยชน์จากฟังก์ชันอ่านออกเสียงของ Google Translate ด้วยการสร้าง URL เพื่ออ่านข้อความ อย่างไรก็ตาม ความพยายามเหล่านี้ล้มเหลว น่าจะเนื่องมาจากปัญหาความเข้ากันได้กับ PAM8302 amplifier และการขาดการรองรับสำหรับ I2C interface หลังจากแก้ไขปัญหา ก็ได้เลือกวิธีการทางเลือก ซึ่งเกี่ยวข้องกับการจัดเก็บการออกเสียงของตัวอักษรภาษาอังกฤษแต่ละตัวและรวบรวมการออกเสียงคำในระหว่าง TTS วิธีนี้ไม่จำเป็นต้องมีการเชื่อมต่ออินเทอร์เน็ต ใช้หน่วยความจำน้อยลง และในตอนแรก แผนคือการใช้ ESP32 boards สองตัว (หนึ่งตัวสำหรับการสร้างข้อความและอีกตัวสำหรับ TTS) อย่างไรก็ตาม ข้อเสียคือคุณภาพเสียงที่ได้แย่มาก มีการออกเสียงที่ไม่ถูกต้องซึ่งทำให้เข้าใจเนื้อหายาก ถึงกระนั้น ก็ไม่มีทางเลือกอื่น จึงได้นำวิธีนี้มาใช้

ความท้าทายที่ใหญ่ที่สุดเกิดขึ้นหลังจากเขียนโค้ด แม้จะมั่นใจว่าฮาร์ดแวร์และโค้ดทำงานถูกต้อง แต่ TTS ก็ยังไม่ทำงาน ปัญหาคือ library ที่เลือกไม่สามารถจัดการประโยคที่ยาวกว่าหกคำได้ นี่เป็นอุปสรรคสำคัญ

prompt ที่ใช้สร้าง "Endless Conversation" ที่เราต้องการ (ในไฟล์โค้ด prompt ใช้เพื่อแสดงให้เห็นว่า Speaker สามารถทำงานได้)

โมเดลแนวคิดสุดท้าย

โมเดลสุดท้าย

เช่นเดียวกับหลาย ๆ คนที่มีความคิดสร้างสรรค์ไร้ขีดจำกัด แต่ขาดแพลตฟอร์มในการแสดงออก หุ่นยนต์สองตัวนี้จึงพูดได้เพียงคำง่าย ๆ เช่น "hello" และ "hi" ในฐานะนักศึกษามหาวิทยาลัยสองคน เราตัดสินใจว่าหากวันหนึ่งเรามีฐานะร่ำรวยหรือคิดค้นวิธีแก้ปัญหาใหม่ได้ เราจะทำให้โปรเจกต์นี้สมบูรณ์และสมบูรณ์แบบ :)

แหล่งอ้างอิง-แนวคิด:

1.Amplifier & Voice Output: https://www.youtube.com/watch?v=SCAKQsGt9wI

2.LED 8X8: https://www.youtube.com/watch?v=2rZWN1IcZpA&t=359s

3.API reference: https://www.youtube.com/watch?v=23_ttll2EWU

4.Text to Speech library: https://github.com/jscrane/TTS

รายละเอียดทางเทคนิคเพิ่มเติม

พฤติกรรมการสร้างสรรค์

"Artificial Existences" สำรวจแนวคิดของชีวิตดิจิทัลและการเคลื่อนที่แบบอัตโนมัติ

  • Algorithm พฤติกรรม: ใช้โมเดลทางคณิตศาสตร์เช่น Boids (flocking behavior) หรือ Cellular Automata ที่ถูกนำมาใช้ใน Arduino firmware เพื่อสร้างรูปแบบแสงหรือการเคลื่อนไหวที่คาดเดาไม่ได้และดูเป็นธรรมชาติ
  • การรับข้อมูลจาก Sensor: Environmental sensors (Light, Sound, หรือ Proximity) ทำหน้าที่เป็น "สิ่งกระตุ้น" สำหรับสิ่งมีชีวิตดิจิทัลเหล่านี้ โดยส่งผลต่อสถานะภายในและพฤติกรรมที่เกิดขึ้น

การทำให้เป็นฮาร์ดแวร์

การ "ดำรงอยู่" มักจะปรากฏให้เห็นผ่าน NeoPixel (W

ข้อมูล Frontmatter ดั้งเดิม

title: "Artificial Existences"
description: "Robots that hold endless conversations, using esp32 and Open AI API"
author: "quentinsong"
category: "Internet of Things, BT & Wireless"
tags:
  - "Robots"
views: 1328
likes: 1
price: 2450
difficulty: "Intermediate"
components:
  - "1x Cardboard"
  - "4x Mini LED 8x8 Matrix"
  - "1x PAM8302"
  - "1x esp32 WROOM32"
tools: []
apps:
  - "1x Arduino IDE 2.0 (beta)"
downloadableFiles:
  - "https://projects.arduinocontent.cc/2088602e-3b03-48ed-804f-1bad6749e99f.ino"
documentationLinks: []
passwordHash: "7c809224fa5f591187f2b82a477c22f2724ee67f584615ef6ee62110d300c78b"
encryptedPayload: "U2FsdGVkX19lc3UrKqAsKHdgjzTT3Rpb5uqkHGPf5M/3YCycXDpsC8d1cvA8yJuju6VnAMzD06KavWWEXUp5mOOuuERTyd8n6sBJOCjQgNM="
seoDescription: "Create Robots with endless conversations using ESP32 and Open AI API. Explore the Artificial Existences project."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/artificial-existences-705eb3_cover.png"
lang: "th"