Programming

Cara Membangun Virtual Assistant Sederhana Menggunakan Phyton

artificial inteligence
Written by Techfor Id

Seperti yang pernah kamu dengar sebelumnya, Virtual Assistant ialah asisten virtual yang bisa memahami perintah suara yang dikatakan oleh pengguna dan mengeksekusi program sesuai perintah yang diminta mereka.

Misalnya saja kalau kamu ingin mencari tahu lokasi “restoran keluarga terdekat” maka Virtual Assistant akan menampilkan hasil lokasi restoran berdasarkan lokasi terdekat kamu saat ini.

Beberapa contoh Virtual Assistant yang sudah dikenal banyak orang diantaranya Google Voice dari perusahaan Google, Cortana dari Microsoft, dan Siri dari Apple. Ketiganya merupakan barisan terdepan dalam pengembangan Virtual Assistant saat ini.

Untuk kamu yang ingin mulai mencoba membangun Virtual Assistant, tenang saja. Hal ini tidak sulit, kamu hanya perlu memahami bahasa pemrograman Phyton dan bisa langsung membuat Virtual Assistant versi sederhana

Membuat virtual Assistant Sederhana

Pada program ini kamu akan belajar cara membuat versi simpelnya saja. Code yang akan ditampilkan pun hanya sebatas versi default yang bisa kamu edit bebas sesuka hati nanti.

Perintah yang akan dibuat nantinya meliputi :

  • Mengatakan ucapan sapa secara acak kepada pengguna, tentu jika si pengguna menggunakan kata sapaan yang sudah diprogram.
  • Mengambil data tanggal (Date) untuk si pengguna.
  • Mengambil data waktu (Time) untuk si pengguna.
  • Mengambil data informasi tentang seseorang untuk si pengguna.

Sebagai contoh, ketika si pengguna mengucapkan “Pukul berapa Saat ini ?”, Virtual Assistant nantinya akan menjawab pertanyaan tersebut.

Oleh karena itu, penting untukmu untuk membuat terlebih dahulu rekaman suara(mp3) yang berisi jawaban dari pertanyaan yang ingin kamu program nanti.

Pertama-tama, kamu perlu menginstall beberapa Package  pyadio SpeechRecognition gTTS dan  wikipedia .

pip install pyaudio

pip install SpeechRecognition

pip install gTTS

pip install wikipedia

Mengimport Libraries & Packages

Selanjutnya kamu harus mengimport Libraries  warnings  dan speech_recognition   yang akan digunakan untuk menangkap dan mengenali suara pengguna.

Libraries  os akan memungkinkan kita untuk berinteraksi dengan Sistem Operasi. Libraries  gtts akan membantu mengonversi teks ke ucapan. Libraries  wikipedia akan memungkinkan kita mendapatkan informasi tentang seseorang dari Wikipedia.

Libraries datetime akan memungkinkan kita untuk mendapatkan tanggal dan waktu saat ini. Libraries  calendar akan memungkinkan kita mendapatkan hari dalam seminggu, dan Libraries random akan digunakan untuk pengacakan :

# Import the libraries
import speech_recognition as sr
import os
from gtts import gTTS
import datetime
import warnings
import calendar
import random
import wikipedia 

Kemudian kita akan mengabaikan semua pesan warning apapun yang mungkin muncul ketika mengeksekusi program ini dengan perintah berikut :

# Ignore any warning messages
warnings.filterwarnings(‘ignore’)

Membuat Helpful Function

Helpful Function nantinya digunakan agar tampilan code terlihat lebih rapih dan mengeksekusi perintah tertentu.

Pertama kita membutuhkan fungsi yang dapat menerima audio (perintah suara) dan mengenali ucapan, kemudian mengembalikan ucapan itu sebagai string (teks). Mari kita sebut fungsi ini recordAudio ().

# Record audio and return it as a string
def recordAudio():    
    # Record the audio
    r = sr.Recognizer()
    with sr.Microphone() as source:  
       print(‘Say something!’)
       audio = r.listen(source)
    
    # Speech recognition using Google’s Speech Recognition
    data = ”
    try:
        data = r.recognize_google(audio)
        print(‘You said: ‘ + data)
    except sr.UnknownValueError:
        print(‘Google Speech Recognition could not understand’)
    except sr.RequestError as e:
        print(‘Request error from Google Speech Recognition’)     return data

Mari buat sebuah fungsi untuk program untuk merespon kembali ke pengguna dengan suara dan menyebutnya asistenResponse (). Fungsi ini akan mengambil string (teks) dan mengubahnya menjadi audio. Ia juga akan meminta fungsi ini mencetak teks ke layar untuk tujuan pengujian.

# Function to get the virtual assistant response
def assistantResponse(text):
    print(text)    # Convert the text to speech
    myobj = gTTS(text=text, lang=’en’, slow=False)
    
    # Save the converted audio to a file    
    myobj.save(‘assistant_response.mp3’)    # Play the converted file
    os.system(‘start assistant_response.mp3’)

Selanjutnya, kita akan membuat fungsi untuk mengambil beberapa teks dan memeriksa apakah kata bangun diberikan dalam teks itu. Untuk program ini saya membuat dua kata bangun “oke komputer” dan “hai komputer”, mirip dengan kata bangun asisten Google “hai Google” dan “oke Google”.

Jika kata bangun terdeteksi dari teks maka fungsi akan mengembalikan True jika tidak maka akan mengembalikan False.

# A function to check for wake word(s)
def wakeWord(text):
    WAKE_WORDS = [‘hey computer’, ‘okay computer’]
    text = text.lower()  # Convert the text to all lower case words  # Check to see if the users command/text contains a wake word    
    for phrase in WAKE_WORDS:
        if phrase in text:
            return True  # If the wake word was not found return false
    return False

Membuat fungsi untuk mengembalikan tanggal hari ini sebagai string. Misalnya, ia akan mengembalikan “Hari ini Senin tanggal 21 Oktober” jika hari ini memang Senin 21 Oktober. Mari kita panggil fungsi ini getDate ().

def getDate():

now = datetime.datetime.now()
my_date = datetime.datetime.today()
weekday = calendar.day_name[my_date.weekday()]# e.g. Monday
monthNum = now.month
dayNum = now.day
month_names = [‘January’, ‘February’, ‘March’, ‘April’, ‘May’,
‘June’, ‘July’, ‘August’, ‘September’, ‘October’, ‘November’,
‘December’]
ordinalNumbers = [‘1st’, ‘2nd’, ‘3rd’, ‘4th’, ‘5th’, ‘6th’,
‘7th’, ‘8th’, ‘9th’, ’10th’, ’11th’, ’12th’,
’13th’, ’14th’, ’15th’, ’16th’, ’17th’,
’18th’, ’19th’, ’20th’, ’21st’, ’22nd’,
’23rd’, ’24th’, ’25th’, ’26th’, ’27th’,
’28th’, ’29th’, ’30th’, ’31st’]

return ‘Today is ‘ + weekday + ‘ ‘ + month_names[monthNum – 1] + ‘ the ‘ + ordinalNumbers[dayNum – 1] + ‘.’

Selanjutnya, kita akan membuat fungsi yang menerima teks dan mengembalikan respons salam acak sebagai teks kepada pengguna, jika pengguna mengucapkan masukan salam seperti ‘halo’ atau ‘hai’ misalnya fungsi tersebut akan mengembalikan salam acak seperti ‘apa kabar ‘. Fungsi ini akan disebut greeting ().

# Function to return a random greeting response
def greeting(text):
    # Greeting Inputs
    GREETING_INPUTS = [‘hi’, ‘hey’, ‘hola’, ‘greetings’, ‘wassup’, ‘hello’]     # Greeting Response back to the user
    GREETING_RESPONSES = [‘howdy’, ‘whats good’, ‘hello’, ‘hey there’]     # If the users input is a greeting, then return random response
    for word in text.split():
        if word.lower() in GREETING_INPUTS:
            return random.choice(GREETING_RESPONSES) + ‘.’    # If no greeting was detected then return an empty string
    return ”

Terakhir namun tidak kalah pentingnya kita akan membuat fungsi untuk mendapatkan nama depan dan belakang seseorang dari teks setelah mendeteksi perintah kunci, ‘siapa’.

Setelah kami mendeteksi kata ‘siapa’ diikuti dengan kata ‘adalah’ maka kami akan mengembalikan dua kata berikutnya sebagai satu string (dua kata berikutnya haruslah nama depan orang tersebut diikuti dengan nama belakang orang itu).

Misalnya jika pengguna mengatakan ‘Who is LeBron James?’, Maka fungsi tersebut akan mengambil teks tersebut dan hanya mengembalikan ‘LeBron James’. Kami akan menggunakan fungsi ini nanti untuk mendapatkan ringkasan dua kalimat tentang orang tersebut dari Wikipedia. Fungsi ini akan disebut getPerson ()

# Function to get a person first and last name
def getPerson(text):
 wordList = text.split()# Split the text into a list of words      for i in range(0, len(wordList)):
   if i + 3 <= len(wordList) – 1 and wordList[i].lower() == ‘who’ and wordList[i + 1].lower() == ‘is’:
            return wordList[i + 2]+ ‘ ‘ + wordList[i + 3]

Membuat Program Utama

Semua asisten virtual paling populer (Asisten Google, Amazon Alexa, & Apel Siri) terus mendengarkan percakapan kamu dan menunggu untuk menjalankan perintah hanya setelah mendengar kata bangun (Wake Words) seperti ‘Oke Google’, ‘Alexa’, atau ‘Hai Siri’.

Ini berarti kita harus memiliki program yang secara konsisten mendengarkan kata bangun, jadi kita akan membutuhkan putaran terus menerus yang berjalan selamanya untuk merekam audio.

Setelah kata bangun diucapkan, kita akan memeriksa untuk melihat apakah pengguna mengucapkan salam, ‘tanggal’, ‘waktu’, atau ‘siapa’, dan meminta komputer merespons sesuai dengan audio.

while True:
    # Record the audio
    text = recordAudio()
    response = ” #Empty response string
     
    # Checking for the wake word/phrase
    if (wakeWord(text) == True):
         # Check for greetings by the user
         response = response + greeting(text)         # Check to see if the user said date
        if (‘date’ in text):
            get_date = getDate()
            response = response + ‘ ‘ + get_date         # Check to see if the user said time
        if(‘time’ in text):
            now = datetime.datetime.now()
            meridiem = ”
            if now.hour >= 12:
                meridiem = ‘p.m’ #Post Meridiem (PM)
                hour = now.hour – 12
            else:
                meridiem = ‘a.m’#Ante Meridiem (AM)
                hour = now.hour           # Convert minute into a proper string
              if now.minute < 10:
                minute = ‘0’+str(now.minute)
              else:
                minute = str(now.minute)             response = response + ‘ ‘+ ‘It is ‘+ str(hour)+ ‘:’+minute+’ ‘+meridiem+’ .’
                
        # Check to see if the user said ‘who is’
        if (‘who is’ in text):
            person = getPerson(text)
            wiki = wikipedia.summary(person, sentences=2)            
            response = response + ‘ ‘ + wiki
       
       # Assistant Audio Response
       assistantResponse(response)

Selamat, kita sudah berhasil membuat program Virtual Assistant Sederhana.

Sumber : https://medium.com/@randerson112358/build-a-virtual-assistant-using-python-2b0f78e68b94

About the author

Techfor Id

Leave a Comment

Open chat
Tanya Sekarang Aja 🤩
Hi ini Windy, dari Techforid🤩

Windy bisa membantu kamu memahami layanan Techforid
Seperti :

1. Kursus Online By Expert
2. Partnership Event dan Konten
3. Layanan liputan multimedia
4. Dan hal lain yg ingin kamu tau

Kirim saja pesan ini serta berikan salah satu nomor di atas atau beritahukan Windy lebih jelas agar dapat membantu Kamu [Klik Open Chat]