autumn-emoto

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 =================

No preview

Comments (0)

No comments yet. Be the first!

Architecture

No Services Diagrams Yet

Architecture diagrams will be automatically generated when the Project Manager creates tasks for your project.

No completed page designs yet.

Completed design pages will appear here when they are ready to preview.

Main Menu: Hear startup greeting
Main Menu: 1. View menu options
Main Menu: 2. Select voice chat option
Voice Chat: 3. Speak question or remark
Voice Chat: 4. Hear identity answer
Voice Chat: 5. Hear thanks reply
Voice Chat: 6. Hear name answer
Voice Chat: 7. Hear general reply
Voice Chat: 8. Hear unclear speech retry
Main Menu: 9. Return to menu after voice chat
Main Menu: 10. Select photo reader option
Photo Reader: 11. Enter photo file name
Photo Reader: 12. Hear extracted text
Photo Reader: 13. Hear no text found
Photo Reader: 14. Hear read error
Main Menu: 15. Return to menu after photo
Main Menu: 16. Select video reader option
Video Reader: 17. Enter video file name
Video Reader: 18. Hear extracted text
Video Reader: 19. Hear no clear text
Video Reader: 20. Hear open or read error
Main Menu: 21. Return to menu after video
Main Menu: 22. Select study help option
Study Help: 23. Name study topic
Study Help: 24. Hear matched topic answer
Study Help: 25. Hear default encouragement
Main Menu: 26. Return to menu after study help
Main Menu: Select exit option
Main Menu: Hear farewell message
Main Menu: 27. Hear invalid choice message

No completed page designs yet.

Completed design pages will appear here when they are ready to preview.

Main Menu: Hear startup greeting
Main Menu: 1. View menu options
Main Menu: 2. Select voice chat option
Voice Chat: 3. Speak question or remark
Voice Chat: 4. Hear identity answer
Voice Chat: 5. Hear thanks reply
Voice Chat: 6. Hear name answer
Voice Chat: 7. Hear general reply
Voice Chat: 8. Hear unclear speech retry
Main Menu: 9. Return to menu after voice chat
Main Menu: 10. Select photo reader option
Photo Reader: 11. Enter photo file name
Photo Reader: 12. Hear extracted text
Photo Reader: 13. Hear no text found
Photo Reader: 14. Hear read error
Main Menu: 15. Return to menu after photo
Main Menu: 16. Select video reader option
Video Reader: 17. Enter video file name
Video Reader: 18. Hear extracted text
Video Reader: 19. Hear no clear text
Video Reader: 20. Hear open or read error
Main Menu: 21. Return to menu after video
Main Menu: 22. Select study help option
Study Help: 23. Name study topic
Study Help: 24. Hear matched topic answer
Study Help: 25. Hear default encouragement
Main Menu: 26. Return to menu after study help
Main Menu: Select exit option
Main Menu: Hear farewell message
Main Menu: 27. Hear invalid choice message