Membuat Simple Speech Recognition dengan Python (Part 1) — The Beginning

Zuhdi Fikri
4 min readJun 13, 2021

--

Yeongsil from start-up korean drama

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-environment
source venv/bin/activate

2. Instalasi library speech recognition
pip 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 sr
r = 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_data
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)

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

--

--

Zuhdi Fikri

I am a curious person who learn IT stuff also loves to write