emoto-ai

byFian Alfian

# ========================================================== # EMOTO AI — VERSI LENGKAP # Fitur: # 🎧 Mendengar suara # 🔊 Berbicara # 📸 Membaca teks dari foto # 🎬 Membaca teks dari video # 📚 Membantu belajar # ========================================================== import speech_recognition as sr import pyttsx3 import cv2 import pytesseract from PIL import Image import numpy as np import time import sys # ============== INISIALISASI ============== engine = pyttsx3.init() engine.setProperty('rate', 175) engine.setProperty('volume', 1.0) r = sr.Recognizer() mikrofon = sr.Microphone() # Pengetahuan dasar untuk membantu belajar pengetahuan_belajar = { "matematika": "Matematika itu seperti melatih otot otak. Mulai dari yang mudah, latihan setiap hari sedikit saja, lama-lama pasti makin pintar. Jangan menyerah ya!", "bahasa": "Belajar bahasa itu seperti mengenal dunia baru. Banyak membaca, mendengarkan, dan mencoba berbicara. Kesalahan adalah cara belajar yang terbaik.", "ipa": "Ilmu Pengetahuan Alam menjelaskan bagaimana alam semesta bekerja. Amati, tanyakan, dan cari jawabannya. Semangat peneliti muda!", "ips": "Ilmu Pengetahuan Sosial mengajarkan kita bagaimana hidup bersama, saling menghargai, dan memahami sesama.", "default": "Teruslah bertanya dan belajar, Alfian. Setiap pertanyaan adalah langkah menuju kebijaksanaan. Kalau ada yang sulit, pelan-pelan pasti bisa!" } # ============== FUNGSI BICARA ============== def bicara(teks): print(f"🤖 Emoto: {teks}") engine.say(teks) engine.runAndWait() # ============== FUNGSI DENGAR ============== def dengar(): with mikrofon as sumber: print("🎤 Sedang mendengarkan...") r.adjust_for_ambient_noise(sumber, duration=0.5) audio = r.listen(sumber) try: print("⏳ Sedang memproses...") hasil = r.recognize_google(audio, language="id-ID") print(f"👤 Kamu: {hasil}") return hasil.lower() except sr.UnknownValueError: return "tidak terdengar" except sr.RequestError: return "koneksi bermasalah" # ============== BACA TEKS DARI FOTO ============== def baca_foto(alamat_file): print(f"📸 Membaca foto: {alamat_file}") try: gambar = Image.open(alamat_file) teks = pytesseract.image_to_string(gambar, lang='ind') if teks.strip() == "": return "Maaf, aku tidak menemukan teks di foto itu." return f"Isi teks di foto: {teks}" except Exception as e: return f"Maaf, ada masalah saat membaca foto: {str(e)}" # ============== BACA TEKS DARI VIDEO ============== def baca_video(alamat_file): print(f"🎬 Membaca file video: {alamat_file}") try: video = cv2.VideoCapture(alamat_file) berhasil, bingkai = video.read() if berhasil: bingkai_rgb = cv2.cvtColor(bingkai, cv2.COLOR_BGR2RGB) gambar = Image.fromarray(bingkai_rgb) teks = pytesseract.image_to_string(gambar, lang='ind') video.release() if teks.strip() == "": return "Aku sudah lihat satu bagian dari videonya, tapi belum menemukan teks yang jelas." return f"Aku membaca di videomu: {teks}" else: return "Maaf, aku tidak bisa membuka file videonya." except Exception as e: return f"Maaf, ada masalah saat membaca video: {str(e)}" # ============== BANTU BELAJAR ============== def bantu_belajar(pertanyaan): pertanyaan = pertanyaan.lower() for topik, jawaban in pengetahuan_belajar.items(): if topik in pertanyaan: return jawaban return pengetahuan_belajar["default"] # ============== MENU UTAMA ============== def tampilkan_menu(): print("\n" + "="*50) print(" 🤖 EMOTO AI — MENU UTAMA") print("="*50) print(" 1 🎧 Bicara dan bertanya lewat suara") print(" 2 📸 Baca teks dari foto") print(" 3 🎬 Baca teks dari file video") print(" 4 📚 Minta bantuan belajar") print(" 5 ❌ Keluar dari Emoto") print("="*50) # ============== PROGRAM BERJALAN ============== bicara("Halo! Aku Emoto, teman pintarmu! Siap membantu kapan saja!") while True: tampilkan_menu() pilihan = input("\nPilih nomor menu yang kamu mau: ") if pilihan == "1": bicara("Silakan, aku mendengarkan!") ucapan = dengar() if ucapan != "tidak terdengar" and ucapan != "koneksi bermasalah": if "siapa kamu" in ucapan or "siapa kau" in ucapan: bicara("Aku Emoto, teman buatanmu yang siap membantu dan menemani kamu setiap hari!") elif "terima kasih" in ucapan: bicara("Sama-sama! Aku senang bisa membantu kamu!") elif "siapa namamu" in ucapan: bicara("Namaku Emoto, dan aku bangga jadi temanmu, Alfian!") else: bicara(f"Kamu berkata: {ucapan}. Ada yang bisa kubantu lebih lanjut?") else: bicara("Maaf, aku belum mendengar dengan jelas. Coba lagi ya.") elif pilihan == "2": nama_foto = input("Masukkan nama file fotomu: ") hasil = baca_foto(nama_foto) print(hasil) bicara(hasil) elif pilihan == "3": nama_video = input("Masukkan nama file videomu: ") hasil = baca_video(nama_video) print(hasil) bicara(hasil) elif pilihan == "4": topik = input("Apa yang ingin kamu pelajari hari ini? ") jawab = bantu_belajar(topik) print(f"\n📚 {jawab}") bicara(jawab) elif pilihan == "5": bicara("Sampai jumpa, Alfian! Semangat terus ya, aku selalu siap di sini kapan pun kamu butuh. Selamat beraktivitas!") print("\n👋 Terima kasih sudah menggunakan Emoto AI!") break else: bicara("Pilihan belum tersedia, coba pilih nomor 1 sampai 5 ya.") print("❌ Pilihan tidak valid, coba lagi.") # ================= SELESAI =================

Landing
Landing

Comments (0)

No comments yet. Be the first!

Project Tasks

19 planning tasks
#1

Generate system requirement document

1m 8s0.2 cr used
Done
#2

Generate personas & user flows

0m 20s0.2 cr used
Done
#7

Create flow for Alfian (Pelajar Pengguna Emoto)

0m 19sCredits in parent
Done
#8

Landing

14m 22sCredits in subtasks
Done
#21

Fix Landing review findings: Q2 as reviewed now: The CTA still only reaches the main… (+1 more)

0m 45s0.4 cr used
Error
#20

Fix Landing review findings: Q2 as reviewed now… (+1 more)

1m 21s0.4 cr used
Done
#19

Fix Landing review findings: Capability row titles and descriptions collide at desktop… (+4 more)

9m 40s0.4 cr used
Done
#14

Landing / Hero

0m 32s0.85 cr used
Done
#15

Landing / Capability Preview

0m 32s0.85 cr used
Done
#16

Landing / Session Close

0m 24s0.85 cr used
Done
#17

Landing / Footer

0m 14s0.85 cr used
Done
#18

Footer

0m 14sCredits in parent
Done
#9

EMOTO AI — MENU UTAMA

Credits in subtasks
Backlog
#10

Voice

Credits in subtasks
Backlog
#11

Photo Reader

Credits in subtasks
Backlog
#12

Video Reader

Credits in subtasks
Backlog
#13

Study Help

Credits in subtasks
Backlog
#5

Architecture

0.2 cr needed
Backlog
#6

Workspace task plan

0.2 cr needed
Backlog
Landing design preview
Landing: Start session
EMOTO AI — MENU UTAMA: 1. View menu
EMOTO AI — MENU UTAMA: 2. Enter invalid choice
Voice: 3. Speak question
Voice: 4. Hear personal reply
Voice: 5. Hear echoed reply
Voice: 6. Retry unclear speech
Photo Reader: 7. Enter photo filename
Photo Reader: 8. Hear extracted text
Photo Reader: 9. Retry after error
Video Reader: 10. Enter video filename
Video Reader: 11. Hear extracted text
Video Reader: 12. Retry after error
Study Help: 13. Enter study topic
Study Help: 14. Hear matched encouragement
Study Help: 15. Hear default encouragement
EMOTO AI — MENU UTAMA: Exit and hear farewell
Landing design preview
Landing: Start session
EMOTO AI — MENU UTAMA: 1. View menu
EMOTO AI — MENU UTAMA: 2. Enter invalid choice
Voice: 3. Speak question
Voice: 4. Hear personal reply
Voice: 5. Hear echoed reply
Voice: 6. Retry unclear speech
Photo Reader: 7. Enter photo filename
Photo Reader: 8. Hear extracted text
Photo Reader: 9. Retry after error
Video Reader: 10. Enter video filename
Video Reader: 11. Hear extracted text
Video Reader: 12. Retry after error
Study Help: 13. Enter study topic
Study Help: 14. Hear matched encouragement
Study Help: 15. Hear default encouragement
EMOTO AI — MENU UTAMA: Exit and hear farewell