Membuat Simple Speech Recognition dengan Python (Part 1) — The Beginning
Saya baru saja selesai menonton drama korea yang sempat viral beberapa bulan kebelakang yang plot ceritanya membahas tentang dunia Start-up, apalagi kalau bukan drama korea “Start-up”. Ya, saya menonton drama korea padahal saya lebih condong lebih suka culture jepang. Drama ini menampilkan sebuah gadget(?) bernama `yeongsil` yang dimiliki oleh Han Ji-Pyeong diperankan oleh Kim Seon-ho.
Gadget ini cukup unik dan menarik perhatian saya karena cara dia berinteraksi dengan penggunanya cukup mudah, hanya dengan memanggil namanya “Yeongsil” seketika alat tersebut aktif dan siap diberi perintah. Tanpa saya sadari ternyata gadget ini sudah ada di dunia nyata yaitu Google Home dan Amazon Alexa. Maka dari itu saya penasaran bagaimana caranya kita dapat membuat sebuah alat yang dapat mengenali suara dan melakukan perintah dari suara yang kita keluarkan, layaknya jarvis di film Iron Man.
Bab 1: Persiapan
Langkah awal pertama kali yang saya lakukan adalah mencari tutorial bagaimana cara membuat Speech Recognition dengan menggunakan bahasa pemrograman Python. Ketemulah dengan channel youtube `Traversy Media` (Thanks Brad!), jika ingin menuju ke videonya saya cantumkan di bawah. Pada praktiknya saya coba improvisasi sedikit agar sesuai dengan sistem.
Percobaan saya lakukan di sistem operasi Ubuntu 20.40 LTS, jadi bagi yang menggunakan sistem operasi yang berbeda diharap menyesuaikan. Baik kita mulai dengan instalasi hal yang dibutuhkan.
Instalasi dependency
Kita mulai dengan instalasi dependency pada linux agar dapat menerima masukan berupa suara dari microphone.
Ketikkan perintah di bawah pada terminal:sudo apt install python3-pip
sudo apt install python-pyaudio python3-pyaudio
Membuat python virtual-environment
Agar proyek yang kita buat lebih rapi, akan lebih baik kalau kita buat virtual-environment. Karena jika terjadi kesalahan atau trouble dengan package yang diinstal dengan mudah dapat kita hapus tanpa mempengaruhi environment global.
Ketikkan perintah di bawah pada terminal:python3 -m venv venv
<- perintah ini akan membuat virtual-environment di direktori saat ini
Menginstall library speech recognition
Selanjutnya kita install library pendukung untuk pemrosesan speech to text.
1. Mengaktifkan virtual-environmentsource venv/bin/activate
2. Instalasi library speech recognitionpip install SpeechRecognition
<- dibeberapa sistem 'pip' diganti dengan 'pip3'
Let’s Code!
Baiklah saatnya kita mulai mengoding, ketikkan perintah di bawah ini lalu simpan dengan nama speech.py
import webbrowser
import speech_recognition as srr = sr.Recognizer()
mic = sr.Microphone()def record_audio(ask=False):
with mic as source:
if ask:
print(ask)
audio = r.listen(source)
try:
voice_data = r.recognize_google(audio, language="en")
except sr.UnknownValueError :
print("Sorry i didn't recognize that")
return voice_datadef respond(voice_data):
if "your name" in voice_data:
print("My name is yeongsil")
if "search" in voice_data:
search = record_audio("What do you want to search?")
url = f"https://www.google.com/search?q={search}"
webbrowser.get().open(url)
print("Here's what i found for " + search)
if "go to somewhere" in voice_data:
search = record_audio("Where do you want to go?")
url = f"https://www.google.co.id/maps/search/{search}"
webbrowser.get().open(url)
print("Here's what i found for " + search)
get_voice = record_audio()
respond(get_voice)
Penjelasan dari code di atas
Import Library
import webbrowser
import speech_recognition as sr
Perintah ini akan mengimport library webbrowser
dan library speech_recognition
yang dinisialisasi dengan nama sr
. Library pertama digunakan untuk melakukan aksi pada webbrowser dan library kedua adalah library utama yang akan membantu kita mengubah suara menjadi teks.
Instance Library
r = sr.Recognizer()
mic = sr.Microphone()
Selanjutnya, kita buat instance dari library speech_recognition
. Di sini ada 2 instance, yang pertama digunakan untuk fungsi pengenalan suara dan yang ke dua digunakan untuk mengaktifkan dukungan input dari mikrofon.
Recognize Speech Function
def record_audio(ask=False):
with mic as source:
if ask:
print(ask)
audio = r.listen(source)
try:
voice_data = r.recognize_google(audio, language="en")
except sr.UnknownValueError :
print("Sorry i didn't recognize that")
return voice_data
Membuat fungsi record_audio
yang berfungsi untuk menerima masukan. Fungsi ini yang akan mengubah speech atau suara menjadi teks. Perhatikan pada line x, di sini kita menggunakan pemrosesan dari google dengan pengenalan suara berbahasa inggris. Jika suara yang kita masukkan tidak jelas, maka blok except
akan memunculkan teks kesalahan.
Kalau ingin mengganti dengan bahasa yang lain, ganti value pada parameter language
dengan bahasa yang diinginkan. Misal bahasa korea language="ko"
, jepang language="jpn"
, support bahasa lain dapat ditemukan di link ini (https://developers.google.com/admin-sdk/directory/v1/languages)
Respond Function
def respond(voice_data):
if "your name" in voice_data:
print("My name is yeongsil")
if "search" in voice_data:
search = record_audio("What do you want to search?")
url = f"https://www.google.com/search?q={search}"
webbrowser.get().open(url)
print("Here's what i found for " + search)
if "go to somewhere" in voice_data:
search = record_audio("Where do you want to go?")
url = f"https://www.google.co.id/maps/search/{search}"
webbrowser.get().open(url)
print("Here's what i found for " + search)
Fungsi sebelumnya(record_audio
) akan mengembalikan nilai berupa string atau teks yang akan diterima pada fungsi respond
. Fungsi respond
ini berisi 3 perintah yang dijalankan apabila ditemukan kata yang sesuai, ada perintah 'siapa namamu?', cari sesuatu di google, dan cari tempat di google maps.
Run the function
get_voice = record_audio()
respond(get_voice)
Dan yang terakhir adalah bagian untuk menjalankan kedua fungsi di atas tadi.
Run the program
Untuk menjalankan program, kita dapat mengetikkan perintah berikut di terminal:python speech.py
<- dibeberapa sistem 'python' diganti dengan 'python3'
Lalu cobalah beri perintah dengan suara, seperti:
1. “What is your name?”
2. “Search” lalu keyword yang akan dicari.
3. “I want to go to somewhere” lalu keyword tempat yang akan dicari
Selamat mencoba!
Sumber
Traversy Media Youtube Channel — https://youtu.be/x8xjj6cR9Nc