Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Membuat Aplikasi Cerdas Dengan Google Cloud Speech dan Natural Language API

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Imam Firmansyah (you can also view the original English article)

Aplikasi yang benar-benar memahami bahasa alami adalah sesuatu yang sci-fi enthusiasts, programmer, dan peneliti AI telah impikan selama beberapa dekade. Hari ini, berkat kemajuan besar dalam teknologi pembelajaran mesin, mimpi itu lebih dekat dari sebelumnya untuk menjadi kenyataan. Terlebih lagi, layanan berbasis cloud seperti Google Cloud Machine Learning telah membuat teknologi tersebut tersedia secara gratis untuk digunakan semua orang.

Dalam tutorial ini, Anda akan belajar cara menggunakan dua API berorientasi alam yang kuat yang ditawarkan oleh platform Google Cloud Machine Learning: Cloud Speech API dan Cloud Natural Language API. Dengan menggunakannya bersama-sama, Anda dapat membuat aplikasi yang dapat menangani percakapan dalam berbagai bahasa yang digunakan secara luas.

Prasyarat

Untuk mengikuti, Anda perlu:

  • Android Studio 2.2 atau lebih tinggi
  • Akun Google Cloud Platform
  • Perangkat yang menjalankan Android 4.4 atau lebih tinggi

1. Mengapa Menggunakan API Ini?

Aplikasi yang dapat memproses ucapan harus memiliki kemampuan berikut:

  • Itu harus bisa mengekstrak kata-kata individu dari data audio mentah.
  • Itu harus mampu membuat dugaan terpelajar tentang hubungan gramatikal antara kata-kata yang telah diekstraksi.

Cloud Speech dan Cloud Natural Language API memungkinkan Anda menambahkan kemampuan di atas ke aplikasi Android Anda dalam hitungan menit.

Cloud Speech API berfungsi sebagai pengenal ucapan state-of-the-art yang dapat secara akurat mentranskripsikan pidato dalam lebih dari 80 bahasa. Ia juga dapat dengan kuat menangani aksen regional dan kondisi bising.

Pada catatan yang sama, Cloud Natural Language API adalah sistem pemrosesan bahasa yang dapat, dengan tingkat akurasi mendekati-manusia, menentukan kata peran dalam kalimat yang diberikan kepadanya. Saat ini mendukung sepuluh bahasa, dan juga menawarkan analisis entitas dan sentimen.

2. Mengaktifkan API

Sebelum Anda menggunakan API Ucapan dan Bahasa Alami, Anda harus mengaktifkannya di Google Cloud Console. Jadi masuk ke konsol dan arahkan ke API Manager > Library.

Cloud console library

Untuk mengaktifkan API Speech, klik tautan Speech API di bagian Google Cloud Machine Learning. Di halaman yang terbuka berikutnya, tekan tombol Enable.

Enabling Cloud Speech API

Tekan tombol kembali browser Anda untuk kembali ke halaman sebelumnya.

Kali ini, aktifkan API Bahasa Alami dengan mengklik tautan Natural Language API dan menekan tombol Enable pada halaman berikutnya.

Enabling Cloud Natural Language API

Anda akan membutuhkan kunci API ketika berinteraksi dengan API. Jika Anda belum memilikinya, buka tab Credentials, tekan tombol Create credentials, dan pilih API key.

Sekarang Anda akan melihat pop-up yang menampilkan API key Anda. Catat itu sehingga Anda dapat menggunakannya nanti.

API key generated

3. Mengkonfigurasi Proyek Anda

Baik API berbasis JSON dan memiliki titik akhir REST Anda dapat berinteraksi dengan langsung menggunakan pustaka jaringan apa pun. Namun, Anda dapat menghemat banyak waktu — dan juga menulis kode yang lebih mudah dibaca — dengan menggunakan pustaka Google API Client yang tersedia untuk mereka. Jadi buka file build.gradle dari modul app proyek Anda dan tambahkan dependensi compile berikut ke dalamnya:

Selain itu, kami akan melakukan beberapa operasi I/O file dalam tutorial ini. Untuk menyederhanakannya, tambahkan dependensi compile untuk pustaka Commons IO.

Terakhir, jangan lupa untuk meminta izin INTERNET pada file AndroidManifest.xml. Tanpa itu, aplikasi Anda tidak akan dapat terhubung ke server Google.

4. Menggunakan Cloud Speech API

Tak perlu dikatakan bahwa Cloud Speech API mengharapkan data audio sebagai salah satu inputnya. Oleh karena itu, sekarang kami akan membuat aplikasi Android yang dapat mentranskripsikan file audio.

Untuk membuatnya tetap sederhana, kami hanya akan menyalin file FLAC, file yang menggunakan format encoding Audio Lossless Audio Gratis. Anda mungkin sudah memiliki file semacam itu di perangkat Anda. Jika tidak, saya sarankan Anda mengunduh beberapa dari Wikimedia Commons.

Langkah 1: Membuat Layout

Layout aplikasi kami akan memiliki widget Button pengguna dapat menekan untuk menampilkan pemilih file, antarmuka di mana mereka dapat menelusuri dan memilih file audio yang tersedia di perangkat mereka.

Layout juga akan memiliki widget TextView untuk menampilkan transkrip file audio yang dipilih. Dengan demikian, tambahkan kode berikut ke file XML tata letak aktivitas Anda:

Langkah 2: Membuat File Picker

Antarmuka file picker harus ditampilkan ketika pengguna menekan tombol yang kita buat pada langkah sebelumnya, jadi kaitkan objek OnClickListener dengannya. Sebelum Anda melakukannya, pastikan Anda menginisialisasi tombol menggunakan metode findViewById().

Dengan Framework Akses Penyimpanan Android, yang tersedia di perangkat yang menjalankan API level 19 atau lebih tinggi, membuat pemilih file hanya membutuhkan sedikit usaha. Yang perlu Anda lakukan hanyalah membuat intent untuk tindakan ACTION_GET_CONTENT dan meneruskannya ke method startActivityForResult(). Opsional, Anda dapat membatasi file picker hanya untuk menampilkan file FLAC dengan meneruskan tipe MIME yang sesuai ke method setType() dari objek Intent.

Output dari file picker akan menjadi objek Intent lain yang berisi URI dari file yang dipilih pengguna. Untuk dapat mengaksesnya, Anda harus mengganti method onActivityResult() dari class Activity Anda.

Langkah 3: Encode File

Cloud Speech API mengharapkan data audionya menjadi dalam bentuk string Base64. Untuk menghasilkan string semacam itu, Anda dapat membaca isi file yang dipilih pengguna ke dalam array byte dan meneruskannya ke metode utilitas encodeBase64String() yang ditawarkan oleh pustaka Google API Client.

Namun, saat ini Anda hanya memiliki URI file yang dipilih, bukan jalur absolutnya. Itu berarti, untuk dapat membaca file, Anda harus menyelesaikan URI terlebih dahulu. Anda dapat melakukannya dengan meneruskannya ke method openInputStream() dari penyelesai konten activity Anda. Setelah Anda memiliki akses ke aliran input dari file, Anda dapat meneruskannya ke method toByteArray() class IOUtils untuk mengubahnya menjadi array byte. Kode berikut menunjukkan kepada Anda caranya:

Seperti yang Anda lihat pada kode di atas, kami menggunakan thread baru untuk menjalankan semua operasi I/O. Melakukannya penting untuk memastikan bahwa UI aplikasi tidak mengalami proses freeze.

Langkah 4: Mainkan File

Menurut pendapat saya, memutar file suara yang sedang ditranskripsikan, ketika sedang ditranskripsi, adalah ide yang bagus. Tidak perlu banyak usaha, dan itu meningkatkan pengalaman pengguna.

Anda dapat menggunakan class MediaPlayer untuk memutar file suara. Setelah Anda mengarahkannya ke URI file menggunakan method setDataSource(), Anda harus memanggil method prepare() untuk mempersiapkan pemain secara bersamaan. Ketika player sudah siap, Anda dapat memanggil method start() untuk mulai memutar file.

Selain itu, Anda harus ingat untuk melepaskan sumber player setelah selesai memainkan file. Untuk melakukannya, tetapkan objek OnCompletionListener ke situ dan panggil metode release(). Kode berikut menunjukkan kepada Anda caranya:

Langkah 5: Sinkronkan Transcribe File

Pada titik ini, kami dapat mengirim data audio yang disandikan Base64 ke Cloud Speech API untuk mentranskripsikannya. Tapi pertama-tama, saya sarankan agar Anda menyimpan API key yang Anda buat sebelumnya sebagai variabel anggota kelas Activity Anda.

Agar dapat berkomunikasi dengan Cloud Speech API, Anda harus membuat objek Speech menggunakan instance Speech.Builder. Sebagai argumen, konstruktornya mengharapkan transport HTTP dan JSON factory. Selain itu, untuk memastikan bahwa kunci API disertakan dalam setiap permintaan HTTP ke API, Anda harus mengaitkan objek SpeechRequestInitializer dengan pembuat dan meneruskan key ke dalamnya.

Kode berikut membuat objek Speech menggunakan class AndroidJsonFactory sebagai JSON factory dan class NetHttpTransport sebagai HTTP transport:

Cloud Speech API harus diberi tahu bahasa apa yang berisi file audio. Anda dapat melakukannya dengan membuat objek RecognitionConfig dan memanggil method setLanguageCode(). Begini cara Anda mengkonfigurasinya untuk menuliskan hanya bahasa Inggris Amerika:

Selain itu, string Base64-encoded harus dibungkus dalam objek RecognitionAudio sebelum dapat digunakan oleh API.

Selanjutnya, dengan menggunakan objek RecognitionConfig dan RecognitionAudio, Anda harus membuat objek SyncRecognizeRequest. Seperti namanya, ini memungkinkan Anda untuk membuat permintaan HTTP untuk secara sinkron mentranskripsikan data audio. Setelah objek dibuat, Anda dapat meneruskannya sebagai argumen ke method syncrecognize() dan memanggil method Speech.SpeechOperations.Syncrecognize objek execute() untuk benar-benar mengeksekusi permintaan HTTP.

Nilai yang dikembalikan dari method execute() adalah objek SyncRecognizeResponse, yang mungkin berisi beberapa transkrip alternatif. Untuk saat ini, kami akan menggunakan alternatif pertama saja.

Akhirnya, untuk menampilkan transkrip kepada pengguna, Anda dapat meneruskannya ke widget TextView. Tentu saja, karena perubahan pada antarmuka pengguna harus selalu terjadi pada thread UI, pastikan Anda melakukannya setelah memanggil method runOnUiThread() activity Anda.

Anda sekarang dapat menjalankan aplikasi Anda, pilih file FLAC yang berisi ucapan dalam bahasa Inggris Amerika, dan lihat Cloud Speech API menghasilkan transkrip untuknya.

Perlu disebutkan bahwa Cloud Speech API saat ini hanya dapat memproses file audio single-channel. Jika Anda mengirim file dengan beberapa saluran ke sana, Anda akan mendapatkan respon kesalahan.

5. Menggunakan Cloud Natural Language API

Setelah kami memiliki transkrip, kami dapat meneruskannya ke API Cloud Natural Language untuk menganalisisnya. Untuk menjaga tutorial ini tetap singkat, kami hanya akan menjalankan analisis entitas dan sentimen pada transkrip. Dengan kata lain, kita akan menentukan semua entitas yang disebutkan dalam transkrip, seperti orang, tempat, dan profesi, dan juga mengetahui apakah sentimen keseluruhannya negatif, netral, atau positif.

Langkah 1: Perbarui Layout

Untuk memungkinkan pengguna memulai analisis, layout kami harus berisi widget Button lain. Oleh karena itu, tambahkan kode berikut ke file XML layout activity Anda:

Langkah 2: Anotasi Transkrip

Cloud Natural Language REST API menawarkan opsi kenyamanan yang disebut annotateText yang memungkinkan Anda untuk menjalankan baik sentimen dan analisis entitas pada dokumen hanya dengan satu permintaan HTTP. Kami akan menggunakannya untuk menganalisis transkrip kami.

Karena analisis harus dimulai ketika pengguna menekan tombol yang kami buat pada langkah sebelumnya, tambahkan OnClickListener ke situ.

Untuk berinteraksi dengan API menggunakan pustaka Google API Client, Anda harus membuat objek CloudNaturalLanguage menggunakan class CloudNaturalLanguage.Builder. Konstruktornya juga mengharapkan transport HTTP dan JSON factory.

Selain itu, dengan menetapkan instance CloudNaturalLanguageRequestInitializer ke dalamnya, Anda dapat memaksanya memasukkan API key Anda dalam semua permintaannya.

Semua teks yang ingin Anda analisis menggunakan API harus ditempatkan di dalam objek Document. Objek Document juga harus berisi informasi konfigurasi, seperti bahasa teks dan apakah itu diformat sebagai teks biasa atau HTML. Dengan demikian, tambahkan kode berikut:

Selanjutnya, Anda harus membuat objek Features yang menentukan fitur yang ingin Anda analisis. Kode berikut menunjukkan kepada Anda cara membuat objek Features yang mengatakan Anda ingin mengekstrak entitas dan menjalankan analisis sentimen saja.

Anda sekarang dapat menggunakan objek Document dan Features untuk menyusun objek AnnotateTextRequest, yang dapat diteruskan ke method annotateText() untuk membuat objek AnnotateTextResponse.

Perhatikan bahwa kami menghasilkan respons di thread baru karena operasi network tidak diizinkan di thread UI.

Anda dapat mengekstrak daftar entitas dari objek AnnotateTextResponse dengan memanggil method getEntities(). Demikian pula, Anda dapat mengekstrak keseluruhan sentimen transkrip dengan memanggil method getDocumentSentiment(). Untuk mendapatkan skor sentimen yang sebenarnya, Anda juga harus memanggil method getScore(), yang mengembalikan float.

Seperti yang Anda duga, skor sentimen sama dengan nol berarti sentimen bersifat netral, skor yang lebih besar dari nol berarti sentimen positif, dan skor kurang dari nol berarti sentimen negatif.

Apa yang Anda lakukan dengan daftar entitas dan skor sentimen, tentu saja, terserah Anda. Untuk saat ini, mari kita hanya menampilkan keduanya menggunakan instance AlertDialog.

Dengan kode di atas, skor sentimen akan ditampilkan dalam judul dialog, dan daftar entitas akan ditampilkan di tubuhnya.

Jika Anda menjalankan aplikasi sekarang, Anda harus dapat menganalisis konten file audio, serta menyalinnya.

Kesimpulan

Anda sekarang tahu cara menggunakan Cloud Speech dan Cloud Natural Language APIs bersama-sama untuk membuat aplikasi Android yang tidak hanya dapat mentranskripsikan file audio tetapi juga menjalankan entitas dan analisis sentimen di dalamnya. Dalam tutorial ini, Anda juga belajar cara bekerja dengan Kerangka Akses Penyimpanan Android dan pustaka API Klien Google.

Google secara rutin menambahkan fitur baru dan menarik — bersama dengan dukungan untuk lebih banyak bahasa — ke kedua API. Untuk tetap diperbarui tentang mereka, lakukan dengan merujuk ke dokumentasi resmi.

Dan saat Anda berada di sini, periksa beberapa pos kami yang lain di layanan mobile cloud app dan machine learning!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.