Membuat Program AI Chatbot Bersuara Seperti Jarvis Menggunakan Bahasa C++

Program AI Chatbot C++
Program AI Chatbot C++
Membuat Program AI Chatbot Bersuara Seperti Jarvis Menggunakan Bahasa C++ - Pada Postingan terdahulu, saya pernah membuat tutorial serupa yaitu utnuk membuat Chatbot berbasis Artificial Intelligence yang dapat mengeluarkan suara seperti Jarvis, dengan bahasa Python.
Tetapi, kali ini kita akan membuat Chatbot AI dengan menggunakan Software eSpeak sebagai perantara suara yang akan dikeluarkan dan juga C++ sebagai bahasa pemrograman yang digunakan.

Silahkan kalian download terlebih dahulu Software eSpeaknya, kemudian install pada sistem komputer kalian. Proses instalasi eSpeak, sama dengan proses instalasi program lainnya. Jika selesai diinstall, file yang kita butuhkan hanya espeak.exe nya saja.

Kalian cukup copy kemudian paste eSpeak.exe kedalam folder yang sama dimana kalian akan mengerjakan project Chatbot AI kali ini. Hal ini untuk memudahkan proses pemanggilan eSpeak nantinya. Atau jika kalian tidak mau ribet, langsung saja kalian bikin project di tempat default eSpeak kalian.

MEMBUAT PROJECT CHATBOT AI DENGAN C++

Pada tutorial kali ini kita menggunakan IDE Dev-C++ 5.11 untuk membuatnya, kalian juga bisa membuatnya dengan IDE kesayangan kalian masing – masing. Ataupun jika tidak memiliki IDE gunakan saja Text Editor. Langsung saja kita mulai Tutorial membaut Chatbot AI menggunakan C++.

1. Pertama : Silahkan buat terlebih dahulu  project di IDE kalian
Project C++ dengan DevC++
Project C++ dengan Dev-C++
2. Kedua : Kalian pilih empty project untuk tempat kita memulai membuat Chatbot AI dengan C++
Empty Project Dev-C++
Empty Project Dev-C++
3. Ketiga: Save dengan nama folder yang kalian suka, untuk project ini saya menamainya bot. Dan file dengan nama bot.dev
Folder baru Dev-C++
Folder baru Dev-C++
Setelah ketiga cara diatas kalian patuhi, maka kita akan beranjak untuk mulai membuat beberapa file dan kita kan siap untuk mulai menuliskan baris code.

MENULIS CODE UNTUK CHATBOT C++

Biasanya akan ada lembar kerja kosong (biasanya Untitled1) save dengan suara.h, kemudian kalian tuliskan code berikut ini.

#ifndef _SUARA_H
#define _SUARA_H

#include <iostream>

using namespace std;
class suara{
public:
void bicara(string kalimat);
};
#endif

Pada code yang sudah kita tuliskan diatas, code tersebut merupakan class yang berfungsi agar mesin atau program kita mengetahui teks maupun suara keluaran dari kalimat nantinya.
Baca Juga: Tips Sederhana Untuk Menjadi Programmer dan Blogger
Kemudian tambahkan lembar kerja baru (CTRL+N, confirm YES) save dengan suara.cpp, masukkan code dibawah ini.

#include "suara.h"
#include <iostream>
#include <windows.h>

using namespace std;
void suara::bicara(string kalimat){
string perintah = "espeak -vid\""+kalimat+"\""; 
const char* perintahDikirim = perintah.c_str();
cout <<kalimat <<endl;
system(perintahDikirim);
}

Fungsi yang kita buat diatas adalah untuk melakukan konversi atau perubahan pada kalimat yang akan diinput, ataupun yang tersimpan nantinya untuk diubah menjadi audio, atau suara.

Terlihat pada string perintah kita melakukan penggabungan kalimat disana, kemudian di line selanjutnya kita konversi kedalam karakter. Kemudian masih sama saat menggunakan Python, kita akan gunakan CMD untuk memanggil eSpeak. Di kode dapat kita lihat bahwa terdapat parameter -vid yang berguna untuk memberitahu eSpeak bahwa Chatbot AI kita menggunakan suara orang indonesia, ya meskipun gak selalu benar dalam pengucapan.

Selanjutnya tambahkan lembar kerja baru (CTRL+N, confirm YES) save dengan otak.h, lalu berikan code seperti berikut.

#ifndef _OTAK_H
#define _OTAK_H
#include <iostream>
#include <fstream>
#include "suara.h"

using namespace std;

class otak{
public:
void respon(string kalimat);
void bicara(string kalimat);
suara Suara;
};
#endif

Pada code kali ini hanyalah sebagai request dan response nantinya. Disini kita membuat fungsi respon untuk mendapatkan text sekaligus menyimpan text yang diinput nantinya. Kemudian fungsi bicara untuk mengelurakan response dalam bentuk suara.

Kemudian tambahkan lembar kerja baru (CTRL+N, confirm YES) save dengan otak.cpp, seperti biasa langsung coding dengan code berikut.

#include "otak.h"
#include <iostream>
#include <fstream>

using namespace std;

void otak::respon(string kalimat){
fstream ingatan;
ingatan.open("bank/penyimpan.txt", ios::in);
while(!ingatan.eof()){
string ingatanOtak;
getline(ingatan, ingatanOtak);
if(ingatanOtak == kalimat){
string pesanDisampaikan;
getline(ingatan, pesanDisampaikan);
Suara.bicara(pesanDisampaikan);
return;
}
}

ingatan.close();
ingatan.open("bank/penyimpan.txt", ios::out | ios::app );
ingatan<<kalimat<<endl;

Suara.bicara(kalimat);  
string yangAkanDisimpan;
cout<<"KAMU : ";
getline(cin, yangAkanDisimpan); 
ingatan<<yangAkanDisimpan<<endl; 
ingatan.close();
}

void otak::bicara(string kalimat){
this->Suara.bicara(kalimat);
}

Nah,pada code yang sedikit panjang diatas kita membuat inti project kali ini, sebuah otak. Yap, disini kalimat yang diinput akan dicari pasangannya.

Terlihat pada fungsi otak kita akan membuka file bernama penyimpan.txt yang berada didalam folder bank. File ini akan kita buat nantinya. Kemudian isi file ini akan kita eksplor semuanya menggunakan while loop untuk mendapatkan output yang cocok.
Baca Juga: Unik ! Inilah Jadinya Bahasa Program adalah Senjata !
Jika terdeteksi menemukan jawaban yang cocok maka jawaban akan keluar sebagai teks dan juga suara. Namun, bagimana jika pertanyaan yang kita masukkan belum ada pada memori si chatbot ?

Dalam menghandle pertanyaan yang tidak ada pada file memorynya atau dalam tutorial ini namanya adalah penyimpan.txt. ChatBot akan mengambil alih pertanyaan kamu dan mengulangi pertanyaan kamu. Kemudian jawaban yang kamu berikan selanjutnya akan otomatis tersimpan pada line terakhir pada file penyimpan.txt

Langkah terakhir kita tambahkan lembar kerja baru (CTRL+N, confirm YES) save dengan main.cpp, dilanjutkan memasukkan code berikut ini.

#include <iostream>
#include "otak.h"

using namespace std;
main(){
otak BOT;
for(;;){
cout<<"\nKAMU : ";
string kalimat;
getline(cin, kalimat);
cout<<"BOT : ";
BOT.respon(kalimat);
}
}

Pada code diatas kita hanyalah membuat CLI nya atau Command Line Interfacenya yang nanti menampilkan kolom untuk kamu menuliskan kalimat dan kolom chatbot kamu untuk menjawabnya.

COMPILE FILE CHATBOT C++

Setelah semua tertulis, kemudian compile (F11), jika tidak ada error maka akan muncul nama exe sesuai dengan nama dev yang kalian simpan.
Setelah itu buat folder dengan nama yang kalian suka, disini saya menggunakan nama folder BOT
Save file bot C++
Save file bot C++
Didalam folder BOT ada lagi folder dengan nama bank, yang didalamnya berisi file penyimpan.txt
Folder bank C++
Folder bank C++

File Penyimpanan Memori C++
File Penyimpan Memori C++
Kalian bisa menyimpan kalimat kalian ke file penyimpan.txt, sebagai contoh isi di dalam file adalah
Isi Penyimpanan Memori bot C++
Isi Penyimpanan Memori bot C++
Silahkan kalian coba mengeksekusi bot.exe , maka akan tampil ChatBot kalian dalam bentuk CLI sebagai berikut
Tampilan bot C++
Tampilan bot C++

Penutup

Nah, bagaimana tutorial kali ini, cukup melelahkan dan menguras pikiran bukan. Disitulah letak keseruannya. Coding adalah seni bukan ??

Jika kalian suka dengan tutorial C++ kali ini tentang Membuat AI Chatbot Bersuara Seperti Jarvis Menggunakan Bahasa C++   Silahkan kalian komen dibawah, silahkan juga tanyakan jika ada yang bingung tentang tutorial diatas.

Share this

Related Posts

Previous
Prev Post »

34 komentar

komentar
25 Jun, 2017 21:16 delete

Namnya saja Otak Keren mz :)

Reply
avatar
08 Julai, 2017 18:41 delete

punya saya botnya kok gak respon ya ? , awalnya kan ada error di file main.cpp pas di line
for(;;){
cout<<\nKAMU : "; ,

nah saya tambah jadi gini
for(;;){
cout<<:"\nKAMU : "; , sisanya udh sama persis

Reply
avatar
10 Julai, 2017 06:38 delete

Ahhh, maaf - maaf ada kesalahan pengetikan itu

seharusnya jadi
cout<<"\nKamu : ";

kurang di tanda (" "),

Terima Kasih yaa, udah diedit ...

Reply
avatar
23 Julai, 2017 22:04 delete

keren gan
jejak dulu prakteknya nanti

Reply
avatar
10 Ogos, 2017 09:30 delete

gan kenapa kok "failed to read voice 'idselamat pagi'?

Reply
avatar
10 Oktober, 2017 10:25 delete

ini gimna gan kok error ya?
C:\Users\Vildan\AppData\Local\Temp\cc8LzKJU.o main.cpp:(.text+0x74): undefined reference to `otak::respon(std::string)'

Reply
avatar
24 Oktober, 2017 13:35 delete

Gan klo failed to read voice 'id'. Tuh gimana cara ngatasinya

Reply
avatar
Tanpa Nama
16 November, 2017 21:40 delete Ulasan ini telah dialihkan keluar oleh pentadbir blog.
avatar
Tanpa Nama
16 November, 2017 21:41 delete Ulasan ini telah dialihkan keluar oleh pentadbir blog.
avatar
Tanpa Nama
07 Disember, 2017 16:35 delete

failed to read voice 'idhai'/'idselamatpagi'
Mohon Solusinya Min

Reply
avatar
Tanpa Nama
08 Disember, 2017 15:22 delete Ulasan ini telah dialihkan keluar oleh pengarang.
avatar
03 Januari, 2018 20:22 delete

maf ni kok gc ada respon ya dah di printah tpi bot nya gc ngerespon padahal dah di kasi jawabanya

Reply
avatar
03 Januari, 2018 21:08 delete

kok setelah di compile malah muncul ini ya
# Project: Project9
# Makefile created by Dev-C++ 5.7.1

CPP = g++.exe
CC = gcc.exe
WINDRES = windres.exe
OBJ = suara.o otak.o main.o
LINKOBJ = suara.o otak.o main.o
LIBS = -L"C:/Program Files/Dev-Cpp/MinGW64/lib32" -L"C:/Program Files/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib32" -static-libgcc -m32
INCS = -I"C:/Program Files/Dev-Cpp/MinGW64/include" -I"C:/Program Files/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include"
CXXINCS = -I"C:/Program Files/Dev-Cpp/MinGW64/include" -I"C:/Program Files/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include" -I"C:/Program Files/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++"
BIN = bot.exe
CXXFLAGS = $(CXXINCS) -m32
CFLAGS = $(INCS) -m32
RM = rm.exe -f

.PHONY: all all-before all-after clean clean-custom

all: all-before $(BIN) all-after

clean: clean-custom
${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)

suara.o: suara.cpp
$(CPP) -c suara.cpp -o suara.o $(CXXFLAGS)

otak.o: otak.cpp
$(CPP) -c otak.cpp -o otak.o $(CXXFLAGS)

main.o: main.cpp
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)

Reply
avatar
03 Januari, 2018 21:10 delete

dan di bagian ini eror
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)

Reply
avatar
09 Januari, 2018 19:21 delete

Assalamualaikum bang mau nanya, setelah mengikuti tutor di atas ada kendala pas waktu di compile yang muncul cuma Kamu:(kosong tdk ada chatnya) minta solusinya mas?

Reply
avatar
29 Januari, 2018 19:42 delete

kak minta solusi dong aku udah berhasil cuman kok bot nya gk bales bales ya knp :( solusi dong kak

Reply
avatar
31 Oktober, 2018 05:29 delete

Gan itu code yang mau di compile yang pas di bagian akhir disimpannya nama sama exensinya apaan

Reply
avatar
03 Mei, 2019 18:24 delete

mas punya saya ko error
/tmp/cct05SBn.o: In function `main':
main.cpp:(.text+0x7f): undefined reference to `otak::respon(std::__cxx11::basic_string, std::allocator >)'
collect2: error: ld returned 1 exit status

gini mas, mohon bantuannya

Reply
avatar
12 Mei, 2019 17:23 delete

Ini balesnya pake tulisan kaya simi simi ya gak pake suara kan kaya jarvis?

Reply
avatar
16 September, 2019 18:19 delete

Semua dah di lakuin , cuma error di BOT nya gk mau respon setelah kita inputkan kata dari kita

Reply
avatar
24 November, 2019 19:08 delete Ulasan ini telah dialihkan keluar oleh pengarang.
avatar
06 Disember, 2019 20:47 delete

jadi bagi yang errornya failed to read voice 'idhai'/'idselamatpagi' tambahkan di penyimpan.txt "" dan _ contohnya seperti ini ==> "selamat_pagi_ada_yang_bisa_saya_bantu?" di jamin work

Reply
avatar
30 Mac, 2020 12:19 delete

g++.exe -c suara.cpp -o suara.o -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"

g++.exe: error: Files: No such file or directory

g++.exe: error: (x86)/Dev-Cpp/MinGW64/include: No such file or directory
g++.exe: error: Files: No such file or directory
g++.exe: error: (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include: No such file or directory
g++.exe: error: Files: No such file or directory
g++.exe: error: (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include: No such file or directory
g++.exe: error: Files: No such file or directory
g++.exe: error: (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++: No such file or directory

F:\bot\Makefile.win:28: recipe for target 'suara.o' failed

mingw32-make.exe: *** [suara.o] Error 1

error saya di bagian sini mohon bantuan penyelesaianya ya admin atau user yg bisa

Reply
avatar
07 April, 2020 00:46 delete

kalo gada repon nya gimana ya>>

Reply
avatar
11 April, 2020 02:25 delete

bro,kok punya ku ada yang salah ya di script yang kedua,yang suara.YANG INI:
#include "suara.h"
#include
#include
using namespace std;
void suara::bicara(string kalimat){
string perintah = "espeak -vid\""+kalimat+"\"";
const char* perintahDikirim = perintah.c_str();
cout <<kalimat <<endl;
system(perintahDikirim);
}

YANG PALING ATAS ITU #include "suara.h"
kenapa ya???????????????????????????????????????????????????

Reply
avatar
16 April, 2020 00:34 delete

Hallo kakak,ada yang tau kenapa kok tidak ada suaranya pas saya compile&run,gimana ya??

Reply
avatar
18 April, 2020 01:54 delete

Hallo kakak,saya berhasil,cuma 1 masalahnya,kok tidak bersuara ya?padahal ada espeak nya loh

Reply
avatar
adt
11 Mei, 2020 13:22 delete

bang bagi file sumbernya aja repot nih eror trs mohon kerja samanya

Reply
avatar
18 Januari, 2021 23:04 delete

bot nya pas running dan sudah input
misal
kamu : selamt pagi
bot : kosong gknada tulisan gk ada suara

Reply
avatar
27 Januari, 2021 21:16 delete

Ka, Belajar C++ dimna yah?

Reply
avatar
02 Mac, 2022 09:41 delete

punya saya sudah ok.tapi setelah dijalankan tidak ada keluar suara BOTnya. mohon dibantu ?

Reply
avatar

Visitor baik, selalu tinggalkan jejak.
Silahkan komen yang relevan & tidak berlebihan, tidak berbau SARA & Pornografi, tidak mengandung promosi.
^ _ ^ Happy Blogging !