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!

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