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

Membuat Cerdas Aplikasi Dengan Ucapan Awan Google dan API Bahasa Semula Jadi

by
Difficulty:IntermediateLength:LongLanguages:

Malay (Melayu) translation by Kaustina Nurul Ilmi (you can also view the original English article)

Aplikasi yang benar-benar memahami bahasa asli adalah sesuatu yang peminat sci-fi, programmer, dan penyelidik AI telah impikan selama beberapa dekad. Hari ini, berkat kemajuan besar dalam teknologi pembelajaran mesin, mimpi itu lebih dekat dari sebelumnya untuk menjadi kenyataan. Lebih teruk lagi, awan berasaskan perkhidmatan seperti Google Cloud Machine Learning telah menjadikan teknologi tersebut tersedia secara percuma untuk digunakan semua orang.

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

Prasyarat

Untuk mengikuti, Anda perlu:

  • Android Studio 2.2 atau lebih tinggi
  • Akaun Platform Awan Google
  • Peranti yang menggunakan Android 4.4 atau lebih tinggi

1.Mengapa Menggunakan API ini?

Aplikasi yang boleh memproses ucapan mesti mempunyai keupayaan berikut:

  • Ia mesti dapat mengekstrak kata-kata individu dari data audio mentah.
  • Ia mesti dapat membuat tekaan berpendidikan mengenai hubungan tatabahasa antara kata-kata yang telah diekstrak.

Ia mesti dapat membuat tekaan berpendidikan mengenai hubungan tatabahasa antara kata-kata yang telah diekstrak.

Fungsi API Ucapan Awan sebagai pengenal ucapan yang canggih yang dapat menerjemahkan ucapan dengan tepat di lebih daripada 80 bahasa. Ia juga boleh mengendalikan aksen serantau dan keadaan yang bising.

Pada nota yang sama, API Bahasa Asli Awan adalah sistem pemprosesan bahasa yang boleh, dengan ketepatan hampir manusia, menentukan peranan perkataan dalam kalimat yang diberikan kepadanya. Pada masa ini ia menyokong sepuluh bahasa, dan juga menawarkan analisis entiti dan sentimen.

2. Mengaktifkan API

Sebelum menggunakan API Ucapan dan Bahasa Semula Jadi, anda mesti mengaktifkannya dalam Konsol Awan Google. Oleh itu, pergi ke konsol dan navigasi ke Pengurus API> Perpustakaan .

Cloud console library

Untuk mengaktifkan Ucapan API, klik pautan API Ucapan di bahagian Pembelajaran Mesin Awan Google . Pada halaman seterusnya yang terbuka, tekan butang Aktifkan .

Enabling Cloud Speech API

Tekan butang belakang penyemak imbas anda untuk kembali ke halaman sebelumnya.

Kali ini, aktifkan API Bahasa Semula Jadi dengan mengklik pautan API Bahasa Semula Jadi dan menekan butang Dayakan pada halaman seterusnya.

Enabling Cloud Natural Language API

Anda memerlukan kunci API semasa berinteraksi dengan API. Jika anda belum memilikinya, buka tab Kredensial , tekan butang Bukti kelayakan , dan pilih kekunci API .

Kini anda akan melihat pop timbul yang memaparkan kunci API anda. Perhatikan supaya anda dapat menggunakannya kemudian.

API key generated

3. Konfigurasikan Projek Anda

Kedua-dua API berasaskan JSON dan titik akhir REST boleh berinteraksi langsung dengan mana-mana perpustakaan rangkaian. Bagaimanapun, anda boleh menyimpan banyak masa - dan juga menulis kod yang lebih mudah dibaca - dengan menggunakan perpustakaan Google API Pelanggan yang tersedia kepada mereka. Jadi buka fail build.gradle dari modul app projek anda dan tambahkan kebergantungan compile berikut ke dalamnya:

Di samping itu, kami akan melakukan beberapa operasi fail I / O dalam tutorial ini. Untuk memudahkan ini, tambah kebergantungan compile untuk perpustakaan IO Commons .

Akhirnya, jangan lupa untuk meminta kebenaran INTERNET dalam fail AndroidManifest.xml . Tanpa itu, aplikasi anda tidak akan dapat menyambung ke pelayan Google.

4. Menggunakan API Ucapan Awan

Ia tidak mengatakan bahawa API Speech Cloud menjangkakan data audio sebagai salah satu inputnya. Oleh itu, sekarang kami akan membuat aplikasi Android yang boleh menyalin fail audio.

Untuk memastikannya mudah, kami hanya akan menyalin fail FLAC, fail yang menggunakan format pengekod Audio Audio Lossless Percuma. Anda mungkin sudah mempunyai fail sedemikian pada peranti anda. Jika tidak, saya cadangkan anda memuat turun beberapa dari Wikimedia Commons .

Langkah 1: Buat Layout

Tata letak aplikasi kami akan mempunyai widget Button yang pengguna boleh mengetuk untuk memaparkan pemilih fail, antara muka di mana mereka boleh menyemak imbas dan memilih fail audio yang tersedia pada peranti mereka.

Susun atur juga akan mempunyai widget TextView untuk memaparkan transkrip fail audio yang dipilih. Dengan cara ini, tambahkan kod berikut ke susun atur aktiviti anda fail XML:

Langkah 2: Buat Pemilih Fail

Antara muka pemilih fail mesti dipaparkan apabila pengguna menekan butang yang kami buat dalam langkah sebelumnya, jadi OnClickListener objek OnClickListener dengannya. Sebelum anda melakukan ini, pastikan anda memulakan butang menggunakan kaedah findViewById() .

Dengan Rangka Kerja Akses Simpanan Android, yang tersedia pada peranti yang menjalankan API tahap 19 atau lebih tinggi, membuat pemilih fail hanya memerlukan sedikit usaha. Apa yang perlu anda lakukan ialah mencipta maksud ACTION_GET_CONTENT dan meneruskannya ke kaedah startActivityForResult() Opsyenal, anda boleh mengehadkan pemetik fail sahaja untuk memaparkan fail FLAC dengan melewati jenis MIME yang sepadan dengan kaedah setType() objek Intent .

Output dari pemetik fail akan menjadi objek Intent lain yang mengandungi URI fail terpilih pengguna. Untuk dapat mengaksesnya, anda mesti menggantikan kaedah onActivityResult() kelas Activity anda.

Langkah 3: Kodkan Fail

API Ucapan Awan menjangkakan data audio berada dalam bentuk rentetan Base64. Untuk menghasilkan rentetan seperti itu, anda boleh membaca kandungan fail yang dipilih pengguna ke dalam array byte dan lulus ke kaedah utiliti encodeBase64String() ditawarkan oleh perpustakaan Google API Pelanggan.

Walau bagaimanapun, pada masa ini anda hanya mempunyai URI fail yang dipilih, bukan jalan mutlak. Itu bermakna, untuk dapat membaca fail, anda mesti melengkapkan URI terlebih dahulu. Anda boleh melakukan ini dengan menyampaikannya kepada kaedah openInputStream() kaedah resolver kandungan aktiviti anda. Selepas anda mempunyai akses kepada aliran input dari fail, anda boleh lulus ke kaedah toByteArray() kelas IOUtils untuk menukarnya kepada array byte. Kod berikut menunjukkan cara anda:

Seperti yang anda lihat dalam kod di atas, kami menggunakan thread baru untuk menjalankan semua operasi I / O. Melakukannya adalah penting untuk memastikan bahawa UI aplikasi tidak mengalami proses pembekuan.

Langkah 4: Main Fail

Pada pendapat saya, memainkan fail bunyi yang sedang ditranskripsikan, apabila ia ditranskripsikan, adalah idea yang baik. Ia tidak memerlukan banyak usaha, dan ia meningkatkan pengalaman pengguna.

Anda boleh menggunakan kelas MediaPlayer untuk memainkan fail bunyi. Setelah anda mengarahkannya ke fail URI menggunakan kaedah setDataSource() , anda mesti memanggil kaedah prepare() untuk menyediakan pemain pada masa yang sama. Apabila pemain sudah bersedia, anda boleh memanggil kaedah start() untuk mula memainkan fail.

Di samping itu, anda mesti ingat untuk melepaskan sumber pemain selepas selesai memainkan fail itu. Untuk melakukan ini, tetapkan objek OnCompletionListener kepadanya dan panggil kaedah release() . Kod berikut menunjukkan cara anda:

Langkah 5: Segerakkan Fail Transkripsi

Pada ketika ini, kami boleh menghantar data audio yang dikodkan oleh Base64 kepada API Ucapan Awan untuk menyalinnya. Tetapi pertama sekali, saya cadangkan anda menyimpan kunci API yang anda buat sebelum ini sebagai pembolehubah anggota kelas Activity anda.

Untuk berkomunikasi dengan API Ucapan Awan, anda mesti membuat objek Speech menggunakan contoh Speech.Builder . Sebagai hujah, pembina menjangkakan kilang HTTP dan kilang JSON. Di samping itu, untuk memastikan bahawa kunci API disertakan dalam setiap permintaan HTTP ke API, anda mesti mengaitkan objek SpeechRequestInitializer dengan pengarang dan meneruskan kuncinya.

Kod berikut mencipta objek Speech menggunakan kelas AndroidJsonFactory sebagai kilang JSON dan kelas NetHttpTransport sebagai pengangkutan HTTP:

API Ucapan Awan mesti diberitahu bahasa apa yang mengandungi fail audio. Anda boleh melakukan ini dengan membuat objek RecognitionConfig dan memanggil kaedah setLanguageCode() . Inilah caranya anda mengkonfigurasinya untuk menulis hanya Bahasa Inggeris Amerika:

Di samping itu, rentetan yang dikodkan Base64 mesti dibungkus di objek RecognitionAudio sebelum ia boleh digunakan oleh API.

Seterusnya, menggunakan objek RecognitionConfig dan RecognitionConfig , anda mesti membuat objek SyncRecognizeRequest . Seperti namanya, ini membolehkan anda membuat permintaan HTTP untuk menyalin data audio serentak. Selepas objek dicipta, anda boleh menyebarkannya sebagai hujah kepada kaedah syncrecognize() dan memanggil Speech.SpeechOperations.Syncrecognize kaedah Speech.SpeechOperations.Syncrecognize execute() untuk benar-benar melaksanakan permintaan HTTP.

Nilai yang dikembalikan dari kaedah SyncRecognizeResponse execute() adalah objek SyncRecognizeResponse , yang mungkin mengandungi beberapa transkrip alternatif. Buat masa ini, kami akan menggunakan alternatif pertama sahaja.

Akhirnya, untuk memaparkan transkrip kepada pengguna, anda boleh meneruskannya ke widget TextView . Sudah tentu, kerana perubahan kepada antara muka pengguna mesti selalu berlaku pada thread UI, pastikan anda melakukan ini selepas memanggil kaedah aktiviti runOnUiThread() .

Anda kini boleh menjalankan aplikasi anda, pilih fail FLAC yang mengandungi ucapan dalam Bahasa Inggeris Amerika, dan lihat API Ucapan Awan yang menghasilkan transkrip untuknya.

Perlu menyebut bahawa API Ucapan Awan hanya boleh memproses fail audio satu saluran pada masa ini. Jika anda menghantar fail dengan beberapa saluran di sana, anda akan mendapat respons ralat.

5. Menggunakan API Bahasa Asli Awan

Setelah kami mempunyai transkrip, kami dapat meneruskannya ke API Bahasa Semula Jadi Awan untuk menganalisisnya. Untuk memastikan tutorial ini pendek, kami hanya akan menjalankan analisis entiti dan sentimen pada transkrip. Dalam erti kata lain, kita akan menentukan semua entiti yang disebut dalam transkrip, seperti orang, tempat, dan profesi, dan juga mengetahui sama ada sentimen keseluruhan adalah negatif, neutral atau positif.

Langkah 1: Kemas kini Tata Letak

Untuk membolehkan pengguna memulakan analisis, susun atur kami mesti mengandungi widget Button lain. Oleh itu, tambah kod berikut untuk fail XML aktiviti anda:

Langkah 2: Transkripsi Annotation

REST API Language Natural Cloud menawarkan pilihan kemudahan yang disebut annotateText yang membolehkan anda menjalankan kedua-dua sentimen entiti dan analisis pada dokumen dengan hanya satu permintaan HTTP. Kami akan menggunakannya untuk menganalisis transkrip kami.

Kerana analisis mesti bermula apabila pengguna menekan butang yang kami buat pada langkah sebelumnya, tambahkan OnClickListener kepadanya.

Untuk berinteraksi dengan API menggunakan perpustakaan Google API Pelanggan, anda mesti membuat objek CloudNaturalLanguage menggunakan kelas CloudNaturalLanguage.Builder . Pembina juga menjangka pengangkutan HTTP dan kilang JSON.

Di samping itu, dengan menetapkan contoh CloudNaturalLanguageRequestInitializer ke dalamnya, anda boleh memaksanya untuk memasukkan kunci API anda dalam semua permintaannya.

Semua teks yang anda mahu analisa menggunakan API mesti diletakkan di dalam objek Document . Objek Document juga mesti mengandungi maklumat konfigurasi, seperti bahasa teks dan sama ada ia diformat sebagai teks biasa atau HTML. Oleh itu, tambahkan kod berikut:

Seterusnya, anda mesti mencipta Features Ciri yang menentukan ciri-ciri yang anda mahu analisa. Kod berikut menunjukkan cara untuk membuat objek Features yang mengatakan bahawa anda mahu mengekstrak entiti dan menjalankan analisis sentimen sahaja.

Anda kini boleh menggunakan objek Document dan Features untuk menyusun objek AnnotateTextRequest , yang boleh diteruskan ke kaedah annotateText() untuk membuat objek AnnotateTextResponse .

Perhatikan bahawa kami menjana respons pada thread baru kerana operasi rangkaian tidak dibenarkan pada thread UI.

Anda boleh mengeluarkan senarai entiti dari objek AnnotateTextResponse dengan memanggil kaedah getEntities() . Begitu juga, anda boleh mengekstrak sentimen transkrip keseluruhan dengan memanggil kaedah getDocumentSentiment() . Untuk mendapatkan skor sentimen sebenar, anda juga perlu memanggil kaedah getScore() , yang mengembalikan float .

Seperti yang anda jangkakan, skor sentimen adalah sifar, iaitu sentimen bermakna neutral, skor lebih besar daripada sifar bermakna sentimen positif, dan skor kurang daripada sifar bermakna sentimen negatif.

Apa yang anda lakukan dengan senarai entiti dan skor sentimen, sudah tentu terpulang kepada anda. Buat masa ini, mari kita tunjukkan kedua-duanya menggunakan contoh AlertDialog .

Dengan kod di atas, skor sentimen akan dipaparkan dalam tajuk, dan senarai entiti akan dipaparkan di dalam badannya.

Jika anda menjalankan aplikasi sekarang, anda harus dapat menganalisis kandungan fail audio, dan juga menyalinnya.

Kesimpulannya

Anda kini tahu cara menggunakan Ucapan Awan dan API Bahasa Semula Awan bersama dengan apl Android yang hanya boleh menterjemahkan fail audio tetapi juga menjalankan entiti dan analisis sentimen di atasnya. Dalam tutorial ini, anda juga belajar bagaimana untuk bekerja dengan Rangka Akses Akses Android dan perpustakaan Google Client API.

Google telah kerap menambahkan ciri-ciri baru dan menarik - bersama-sama dengan sokongan untuk lebih banyak bahasa - untuk API kedua-duanya. Untuk terus mengemaskini tentang mereka, sila rujuk dokumentasi rasmi.

Dan semasa anda di sini, lihat beberapa jawatan lain kami di perkhidmatan awan aplikasi mudah alih dan pembelajaran mesin!

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.