Lumikha ng Sariling JARVIS: Gabay sa Pagbuo ng AI Assistant Gamit ang Python
Sa modernong panahon ngayon, ang artificial intelligence (AI) ay hindi na lamang isang konsepto sa mga pelikula o aklat. Ito ay nagiging bahagi na ng ating pang-araw-araw na buhay, mula sa mga voice assistants sa ating mga telepono hanggang sa mga complex algorithms na nagpapagana sa iba’t ibang aplikasyon. Kung ikaw ay interesado sa AI at nais mong subukan ang iyong kakayahan sa programming, bakit hindi mo subukan lumikha ng sarili mong AI assistant, katulad ni JARVIS mula sa Iron Man? Sa artikulong ito, tuturuan kita kung paano gumawa ng basic na bersyon ng JARVIS gamit ang Python. Ang gabay na ito ay detalyado at magbibigay ng step-by-step instructions para sa mga beginners.
**Mga Kinakailangan:**
* **Python 3:** Siguraduhing naka-install ang Python 3 sa iyong computer. Maaari mo itong i-download mula sa opisyal na website ng Python: [https://www.python.org/downloads/](https://www.python.org/downloads/)
* **Text Editor o IDE:** Kailangan mo ng text editor o Integrated Development Environment (IDE) para isulat ang iyong code. Maaari mong gamitin ang Visual Studio Code, PyCharm, Sublime Text, o anumang editor na komportable ka.
* **Mga Libraries:** Kailangan nating i-install ang mga sumusunod na Python libraries gamit ang pip (Python Package Installer).
* `SpeechRecognition`
* `pyttsx3`
* `datetime`
* `wikipedia`
* `webbrowser`
* `os`
* `requests`
**Pag-install ng mga Libraries:**
Buksan ang iyong command prompt o terminal at i-type ang mga sumusunod na command para i-install ang mga libraries:
bash
pip install SpeechRecognition
pip install pyttsx3
pip install datetime
pip install wikipedia
pip install webbrowser
pip install requests
**Hakbang 1: Pag-import ng mga Libraries**
Sa simula ng iyong Python script, kailangan mong i-import ang mga libraries na gagamitin natin.
python
import speech_recognition as sr
import pyttsx3
import datetime
import wikipedia
import webbrowser
import os
import requests
**Hakbang 2: Pag-initialize ng Speech Engine**
Gagamitin natin ang `pyttsx3` para magsalita ang ating AI assistant.
python
engine = pyttsx3.init()
voices = engine.getProperty(‘voices’)
engine.setProperty(‘voice’, voices[0].id) # Maaaring baguhin sa 1 para sa babaeng boses
def speak(audio):
engine.say(audio)
engine.runAndWait()
Sa code na ito, ini-initialize natin ang `pyttsx3` engine at pinipili ang default na boses. Ang function na `speak(audio)` ay gagamitin natin para magsalita ang ating AI assistant.
**Hakbang 3: Pagkuha ng Input gamit ang Speech Recognition**
Ang `SpeechRecognition` library ang gagamitin natin para makinig sa ating mga commands.
python
def take_command():
r = sr.Recognizer()
with sr.Microphone() as source:
print(“Nakikinig…”)
r.pause_threshold = 1
audio = r.listen(source)
try:
print(“Kinikilala…”)
query = r.recognize_google(audio, language=’fil-PH’) # Baguhin sa ‘fil-PH’ para sa Filipino
print(f”User said: {query}\n”)
except Exception as e:
print(“Hindi ko maintindihan…”)
return “None”
return query
Sa function na ito, gumagamit tayo ng `sr.Recognizer()` para makinig sa microphone. Ang `r.pause_threshold = 1` ay nangangahulugang hihintayin ng program ang 1 segundo ng katahimikan bago itigil ang pakikinig. Pagkatapos, susubukan nitong kilalanin ang sinabi gamit ang Google Speech Recognition API. Kung hindi nito maintindihan, magre-return ito ng “None”. Ang `language=’fil-PH’` ay nagtatakda sa wika na Filipino.
**Hakbang 4: Pagbati (Greeting)**
Magdagdag tayo ng simpleng pagbati para sa simula.
python
def wish_me():
hour = int(datetime.datetime.now().hour)
if hour >= 0 and hour < 12:
speak("Magandang umaga po!") elif hour >= 12 and hour < 18:
speak("Magandang hapon po!") else:
speak("Magandang gabi po!") speak("Ako po si [Pangalan ng Assistant mo]. Paano ko po kayo matutulungan?") Ang function na `wish_me()` ay kinukuha ang kasalukuyang oras at nagbibigay ng naaangkop na pagbati. **Hakbang 5: Main Function** Ito ang main function kung saan natin isasama ang lahat ng mga function na ginawa natin. python
if __name__ == "__main__":
wish_me()
while True:
query = take_command().lower() # Logic para sa pagpapatakbo ng mga task base sa query if 'paalam' in query:
speak("Paalam po!")
break elif 'oras ngayon' in query:
strTime = datetime.datetime.now().strftime("%I:%M:%S")
speak(f"Ang oras po ngayon ay {strTime}") elif 'wikipedia' in query:
speak("Naghahanap po sa Wikipedia...")
query = query.replace("wikipedia", "")
try:
results = wikipedia.summary(query, sentences=2)
speak("Ayon sa Wikipedia")
speak(results)
except wikipedia.exceptions.PageError:
speak("Hindi ko po makita ang impormasyon na iyon.")
except wikipedia.exceptions.DisambiguationError as e:
speak("Maraming posibleng kahulugan. Maaari po bang magbigay kayo ng mas detalyadong impormasyon?") elif 'buksan ang youtube' in query:
webbrowser.open("youtube.com") elif 'buksan ang google' in query:
webbrowser.open("google.com") elif 'buksan ang facebook' in query:
webbrowser.open("facebook.com") elif 'magpatugtog ng musika' in query:
music_dir = 'D:\\Music' # Palitan ito ng iyong music directory
songs = os.listdir(music_dir)
if songs:
os.startfile(os.path.join(music_dir, songs[0])) # Nagpapatugtog ng unang kanta
else:
speak("Wala pong kanta sa directory na iyon.") elif 'anong araw ngayon' in query:
now = datetime.datetime.now()
day_name = now.strftime("%A")
speak(f"Ngayon po ay {day_name}.") elif 'maghanap ng' in query:
query = query.replace("maghanap ng", "")
url = f"https://www.google.com/search?q={query}"
webbrowser.open(url)
speak(f"Ito po ang resulta ng paghahanap para sa {query}") elif 'ibalita' in query:
try:
api_url = ("https://newsapi.org/v2/top-headlines?country=ph&apiKey=YOUR_NEWS_API_KEY") #Palitan ang YOUR_NEWS_API_KEY sa valid API key.
news = requests.get(api_url).json()
articles = news["articles"]
speak("Narito po ang mga pangunahing balita ngayon:")
for article in articles[:5]: #Ipakita ang unang limang balita
speak(article["title"])
speak(article["description"])
except Exception as e:
speak("Hindi ko po makuha ang mga balita ngayon.") elif 'calculator' in query or 'compute' in query:
os.startfile("C:\\Windows\\System32\\calc.exe") #Tiyakin na tama ang path sa calculator.exe else:
speak("Hindi ko po maintindihan ang inyong sinabi. Maaari po bang ulitin ninyo?") **Paliwanag ng Code:** * **`if __name__ == "__main__":`**: Ito ang nagpapatakbo ng code kapag direktang pinatakbo ang script.
* **`wish_me()`**: Tinatawag ang function para magbigay ng pagbati.
* **`while True:`**: Isang infinite loop na nagpapatuloy hanggang sa sabihin ng user ang "paalam".
* **`query = take_command().lower()`**: Kinukuha ang command mula sa user at ginagawang lowercase.
* **`if 'paalam' in query:`**: Kapag sinabi ng user ang "paalam", magpapaalam ang AI assistant at ititigil ang program.
* **`elif 'oras ngayon' in query:`**: Ipinapakita ang kasalukuyang oras.
* **`elif 'wikipedia' in query:`**: Naghahanap sa Wikipedia at nagbibigay ng summary.
* **`elif 'buksan ang youtube' in query:`**: Binubuksan ang YouTube sa web browser.
* **`elif 'magpatugtog ng musika' in query:`**: Nagpapatugtog ng musika mula sa isang directory. **Mahalaga:** Kailangan mong palitan ang `music_dir` ng tamang path sa iyong music folder.
* **`else:`**: Kung hindi maintindihan ang command, sasabihin ng AI assistant na hindi niya maintindihan. **Mahalagang Paalala:** * **Wika:** Bagama't sinusuportahan ng Google Speech Recognition API ang Filipino, maaaring hindi ito perpekto. Subukang magsalita nang malinaw at dahan-dahan.
* **API Keys:** Para sa pagkuha ng balita, kailangan mo ng API key mula sa News API ([https://newsapi.org/](https://newsapi.org/)). Palitan ang `YOUR_NEWS_API_KEY` sa code na may valid na API key.
* **Music Directory:** Tiyakin na tama ang path sa iyong music directory sa code.
* **Error Handling:** Ang code na ito ay may basic error handling, ngunit maaari mo pang pagbutihin ito para mas maging robust ang iyong AI assistant.
* **Dependencies:** Siguraduhing na-install mo ang lahat ng kinakailangang libraries. **Pagpapabuti ng iyong AI Assistant:** Ito ay isang basic na halimbawa lamang. Narito ang ilang ideya kung paano mo maaaring pagbutihin ang iyong AI assistant: * **Magdagdag ng mas maraming commands:** Maaari kang magdagdag ng iba't ibang commands para sa iba't ibang gawain, tulad ng pagtatakda ng alarm, pagpapadala ng email, o pagkontrol sa iyong smart home devices.
* **Machine Learning:** Maaari mong isama ang machine learning para mas matuto ang iyong AI assistant mula sa iyong mga interaction at mas maging personalized.
* **Mas Magandang Voice:** Maaari kang gumamit ng ibang text-to-speech engines para sa mas natural na boses.
* **GUI (Graphical User Interface):** Gumawa ng GUI para sa iyong AI assistant para mas maging user-friendly.
* **Natural Language Processing (NLP):** Gamitin ang NLP para mas maintindihan ng iyong AI assistant ang mga kumplikadong sentence at tanong.
* **Pag-integrasyon sa Ibang Serbisyo:** Isama ang iyong AI assistant sa iba't ibang serbisyo tulad ng Google Calendar, Todoist, o Spotify. **Kumpletong Code:** Narito ang kumpletong code para sa iyong reference: python
import speech_recognition as sr
import pyttsx3
import datetime
import wikipedia
import webbrowser
import os
import requests engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id) def speak(audio):
engine.say(audio)
engine.runAndWait() def take_command():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Nakikinig...")
r.pause_threshold = 1
audio = r.listen(source) try:
print("Kinikilala...")
query = r.recognize_google(audio, language='fil-PH')
print(f"User said: {query}\n") except Exception as e:
print("Hindi ko maintindihan...")
return "None" return query def wish_me():
hour = int(datetime.datetime.now().hour)
if hour >= 0 and hour < 12:
speak("Magandang umaga po!") elif hour >= 12 and hour < 18:
speak("Magandang hapon po!") else:
speak("Magandang gabi po!") speak("Ako po si [Pangalan ng Assistant mo]. Paano ko po kayo matutulungan?") if __name__ == "__main__":
wish_me()
while True:
query = take_command().lower() if 'paalam' in query:
speak("Paalam po!")
break elif 'oras ngayon' in query:
strTime = datetime.datetime.now().strftime("%I:%M:%S")
speak(f"Ang oras po ngayon ay {strTime}") elif 'wikipedia' in query:
speak("Naghahanap po sa Wikipedia...")
query = query.replace("wikipedia", "")
try:
results = wikipedia.summary(query, sentences=2)
speak("Ayon sa Wikipedia")
speak(results)
except wikipedia.exceptions.PageError:
speak("Hindi ko po makita ang impormasyon na iyon.")
except wikipedia.exceptions.DisambiguationError as e:
speak("Maraming posibleng kahulugan. Maaari po bang magbigay kayo ng mas detalyadong impormasyon?") elif 'buksan ang youtube' in query:
webbrowser.open("youtube.com") elif 'buksan ang google' in query:
webbrowser.open("google.com") elif 'buksan ang facebook' in query:
webbrowser.open("facebook.com") elif 'magpatugtog ng musika' in query:
music_dir = 'D:\\Music'
songs = os.listdir(music_dir)
if songs:
os.startfile(os.path.join(music_dir, songs[0]))
else:
speak("Wala pong kanta sa directory na iyon.") elif 'anong araw ngayon' in query:
now = datetime.datetime.now()
day_name = now.strftime("%A")
speak(f"Ngayon po ay {day_name}.") elif 'maghanap ng' in query:
query = query.replace("maghanap ng", "")
url = f"https://www.google.com/search?q={query}"
webbrowser.open(url)
speak(f"Ito po ang resulta ng paghahanap para sa {query}") elif 'ibalita' in query:
try:
api_url = ("https://newsapi.org/v2/top-headlines?country=ph&apiKey=YOUR_NEWS_API_KEY")
news = requests.get(api_url).json()
articles = news["articles"]
speak("Narito po ang mga pangunahing balita ngayon:")
for article in articles[:5]:
speak(article["title"])
speak(article["description"])
except Exception as e:
speak("Hindi ko po makuha ang mga balita ngayon.") elif 'calculator' in query or 'compute' in query:
os.startfile("C:\\Windows\\System32\\calc.exe") else:
speak("Hindi ko po maintindihan ang inyong sinabi. Maaari po bang ulitin ninyo?") **Konklusyon:** Sa gabay na ito, natutunan mo kung paano gumawa ng isang simpleng AI assistant gamit ang Python. Bagama't mayroon pa itong mga limitasyon, ito ay isang mahusay na panimula para sa iyong paglalakbay sa mundo ng AI. Sa pamamagitan ng patuloy na pag-aaral at pag-eeksperimento, maaari kang lumikha ng mas complex at mas kapaki-pakinabang na AI assistants na makakatulong sa iyo sa iyong pang-araw-araw na buhay. Huwag matakot na subukan at mag-explore ng mga bagong ideya. Ang mundo ng AI ay puno ng mga posibilidad, at ang langit ang limitasyon!