1. Ringkasan
Dalam codelab ini, Anda akan mempelajari cara mengirim file audio melalui Google Cloud Speech to Text API, lalu meng-output transkrip ke Google Dokumen. Speech to Text API mudah digunakan, dan menerapkan jaringan neural yang canggih untuk memungkinkan developer mengubah audio menjadi teks. Selain itu, didukung oleh Machine Learning.
Anda akan menggunakan Google Docs API untuk membuat dan menulis ke dokumen baru. Anda akan membuat aplikasi command line Java dan menjalankan kode menggunakan sistem build gradle, lalu menggunakan Docs API untuk melihat hasilnya.
Yang akan Anda pelajari
- Cara menggunakan Google Cloud Speech to Text API
- Cara menggunakan Google Docs API untuk membuat dokumen baru
- Cara menggunakan Docs API untuk menulis ke dokumen
Yang Anda butuhkan
- Java diinstal (versi 7 atau yang lebih baru)
- Gradle diinstal (versi 5 atau yang lebih baru)
- Akses ke internet dan browser web
- Akun Google
- Project Google Cloud Platform
2. Menyiapkan project
Membuat project cloud
- Login ke Cloud Console lalu buat project baru atau gunakan kembali project yang sudah ada. (Jika belum memiliki akun Gmail atau Workspace, Anda harus membuatnya.)
Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID
.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.
Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mendapatkan kunci akun layanan untuk Cloud Speech-to-Text API
- Buka GCP Console dan temukan project baru Anda
- Membuat akun layanan
- Mendownload kunci akun layanan sebagai JSON
- Tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur file JSON yang berisi kunci akun layanan Anda. Jika memulai ulang sesi shell, Anda harus menetapkan variabel lagi.
$ export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Contoh:
$ export GOOGLE_APPLICATION_CREDENTIALS="/home/usr/downloads/ServiceAccount.json"
Mendapatkan Kredensial untuk Docs API
- Kembali di GCP Console, buka Credentials
- Membuat kunci OAuth 2.0 dan mendownloadnya sebagai JSON
- Ganti nama file
credentials.json
dan pastikan file tersebut berada di direktorisrc/main/resources/
kode Anda
Mengaktifkan API
- Pilih tab Dashboard, klik tombol Enable APIs and Services, lalu aktifkan 2 API berikut:
- Speech to Text
- Google Dokumen
Sekarang Anda siap untuk melanjutkan dan mulai bekerja dengan kode Anda.
3. Menyiapkan kode
Mendapatkan kode contoh
Untuk mendapatkan kode contoh, download file ZIP ke komputer Anda...
...atau membuat clone repositori GitHub dari command line.
$ git clone git@github.com:googleworkspace/docs-transcript-codelab.git
Anda akan mengerjakan file CreateTranscript.java
di dalam direktori start. File gradle tidak boleh diubah.
Di direktori Anda, buka folder start dan buka file CreateTranscript.java. Scroll ke bawah ke tempat Anda melihat deklarasi class CreateTranscript
.
public class CreateTranscript {
private static final String CREDENTIALS_FILE_PATH = "/credentials.json";
// Specify audio file name below.
private static final String AUDIO_FILENAME = "audioFile.wav";
private static final String TOKENS_DIRECTORY_PATH = "tokens";
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
private static final String APPLICATION_NAME = "CreateTranscript";
private static final List<String> SCOPES = Collections.singletonList(DocsScopes.DOCUMENTS);
Untuk variabel SCOPES
, Anda telah menetapkan bahwa kode akan dapat melihat dan mengelola dokumen Google Dokumen pengguna Anda. Jika kode Anda memerlukan otorisasi di luar atau berbeda dari akses ini, pastikan untuk menyesuaikan variabel ini berdasarkan Cakupan OAuth 2.0 Google API.
Misalnya, jika Anda tidak menulis ke Google Dokumen, Anda dapat mengubah cakupan menjadi DOCUMENTS_READONLY
. Variabel SCOPES
tidak hanya diperlukan agar aplikasi Anda memiliki izin akses yang tepat, tetapi juga untuk menjaga transparansi dengan pengguna. Pengguna akan melihat cakupan spesifik yang Anda minta di halaman verifikasi OAuth tempat mereka harus mengizinkan penggunaan aplikasi.
Ganti Nama Variabel
Pastikan variabel di atas dideklarasikan dengan benar untuk project Anda.
- Pastikan AUDIO_FILENAME disetel ke nama file demo yang Anda kirim ke Speech to Text API. Di file CreateTranscript.java, Anda seharusnya sudah melihatnya disetel dengan benar.
- Ganti nama CREDENTIALS_FILE_PATH menjadi nama file kredensial yang didownload (harus '/
credentials.json'
). Pastikan file ini berada di dalam direktorisrc/main/resources
folder Anda, jadi pastikan untuk membuat direktori ini jika cloning GitHub tidak melakukannya untuk Anda.
Sekarang, Anda dapat mulai menjalankan kode.
4. Melakukan inisialisasi Klien Dokumen
Di file CreateTranscript.java, temukan deklarasi metode utama dan intip isinya:
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Docs service = new Docs.Builder(HTTP_TRANSPORT, JSON_FACTORY,
getCredentials(HTTP_TRANSPORT))
.setApplicationName(APPLICATION_NAME)
.build();
Otorisasi Fungsi
Tugas pertama yang Anda lakukan di sini adalah pembuatan Docs service
(variabel). Layanan tersebut mewakili klien API yang diberi otorisasi, yang menyimpan kredensial Anda dan, dalam hal ini, autentikasi pengguna akhir Anda.
Dalam kode Anda, fungsi apa pun yang melakukan panggilan ke Docs API harus menggunakan variabel service
ini untuk melakukan tugas terkait Dokumen.
5. Membuat Dokumen Google
Anda akan membuat Dokumen Google baru dengan judul tertentu. Jadi, salin kode di bawah ini dalam fungsi createDocument
.
Document doc = new Document().setTitle("Transcript for " +
AUDIO_FILENAME);
doc = service.documents().create(doc).execute();
String documentId = doc.getDocumentId();
return documentId;
Fungsi ini menampilkan ID File Drive dari Dokumen Google. ID yang sama ini dapat ditemukan di URL Dokumen.
Selanjutnya, Anda akan melakukan inisialisasi klien Speech-to-Text.
6. Memanggil Speech to Text API
Tugas selanjutnya yang perlu Anda lakukan dalam kode adalah mendapatkan transkrip tertulis untuk file audio. Di dalam CreateTranscript.java, cari fungsi getTranscript()
.
Pertama-tama, dapatkan jalur file audio dan byte audio:
SpeechClient speech = SpeechClient.create();
Path path = Paths.get(AUDIO_FILENAME);
byte[] data = Files.readAllBytes(path);
ByteString audioBytes = ByteString.copyFrom(data);
Mengonfigurasi Pengenalan Ucapan
Selanjutnya, Anda harus melakukan inisialisasi variabel RecognitionConfig
dengan benar.
Di sini, config
memberikan informasi tentang cara tepatnya pengenal ucapan memproses permintaan Anda. Anda perlu mengedit setLanguageCode()
jika, misalnya, file audio Anda dalam bahasa selain bahasa Inggris, dan mengubah setSampleRateHertz()
jika file audio Anda memiliki frekuensi sampel yang berbeda di Hertz (1600 adalah bahasa optimal).
RecognitionConfig config =
RecognitionConfig.newBuilder()
.setEncoding(AudioEncoding.LINEAR16)
.setLanguageCode("en-US")
.setSampleRateHertz(8000)
.build();
RecognitionAudio audio =
RecognitionAudio.newBuilder().setContent(audioBytes).build();
RecognizeResponse response = speech.recognize(config, audio);
List<SpeechRecognitionResult> results = response.getResultsList();
Menyiapkan Teks
Terakhir, tangani variabel result
transkrip file audio dan siapkan untuk disisipkan ke dalam dokumen.
Setiap item dalam hasil adalah transkrip jenis SpeechRecognitionAlternatives
. Dengan demikian, setiap item berisi dua bagian: transkrip teks dan skor keyakinan API yang sesuai.
List<Request> requests = new ArrayList<>();
for (SpeechRecognitionResult result : results) {
// Using the first + most likely alternative transcript
SpeechRecognitionAlternative alternative =
result.getAlternativesList().get(0);
String toInsert = alternative.getTranscript();
// Add requests array list to return.
requests.add(
new Request()
.setInsertText(
new InsertTextRequest()
.setText(toInsert)
.setEndOfSegmentLocation(new
EndOfSegmentLocation().setSegmentId(""))));
}
return requests;
7. Sisipkan teks ke dalam Dokumen
Sekarang Anda akan menyisipkan teks transkrip ke dalam Google Dokumen. Untuk melakukan perubahan pada dokumen, Anda harus menggunakan metode BatchUpdate
. BatchUpdate
adalah penampung untuk berbagai jenis permintaan tulis dan, di sini, Anda akan menggunakan InsertTextRequest
.
EndOfSegmentLocation
adalah parameter penting yang menentukan di Dokumen Anda mana Anda ingin mencetak teks. Di kode sumber, Anda menyisipkan teks ke isi Dokumen.
Mari masukkan kode di bawah ini ke dalam fungsi Anda untuk melihat bagaimana hasil Speech-to-Text API yang digabungkan dengan panggilan ke Docs API memungkinkan kita menyisipkan transkrip file audio di Google Dokumen:
BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest();
service.documents().batchUpdate(docId,
body.setRequests(insertRequests)).execute();
Membuat permintaan
Saat membuat permintaan BatchUpdate, Anda menetapkan dua spesifikasi yang sangat penting: hal yang ingin dicetak (.setText()
), serta bagian dokumen yang ingin dicetak (.setIndex(1)
).
Kini Anda telah menyisipkan transkrip file audio ke Dokumen yang dibuat.
8. Menjalankan kode
Sekarang setelah Anda memiliki semua kode yang diperlukan untuk mengambil file audio, memperoleh transkripnya, dan mencetak transkripnya ke dalam Google Dokumen yang baru dibuat, mari kita mulai!
Karena akan menjalankan kode java menggunakan sistem build gradle, Anda harus memberi tahu file build.gradle apa yang harus di-build dan dijalankan. Dalam project ini dan lainnya, pastikan Anda menjaga mainClassName
tetap konsisten dengan class java yang ingin dijalankan.
Bagus! Sekarang Anda siap untuk menjalankan kode. Untuk melakukannya, ketik perintah berikut ke command line Anda:
$ gradle run
Autentikasi pengguna akhir
Saat pertama kali Anda menjalankan kode ini, Anda akan melihat URL yang dicetak di terminal, yang meminta Anda untuk login ke akun layanan Anda dan mengizinkan akses ke Google Dokumen-nya. Setelah mengizinkan akses, Anda akan melihat file baru disimpan di direktori Anda.
Di dalam direktori kerja, Anda akan melihat folder yang baru dibuat berjudul tokens, yang berisi file StoredCredential. Ini adalah token autentikasi yang baru saja Anda berikan, yang diminta klien Anda dari Server Google Auth, diekstrak dari responsnya, dan sekarang akan dikirim ke setiap API yang Anda panggil.
Solusi
Jika kode Anda tidak berfungsi, lihat di dalam file CreateTranscript.java di dalam folder CreateTranscript.java. File ini berisi semua kode yang diperlukan agar berhasil dijalankan.
Sekarang mari kita lihat hasilnya.
9. Melihat hasil Anda
Anda baru saja membuat Dokumen Google baru yang berisi transkrip file audio Anda, jadi mari kita lihat.
Dokumen ini dibuat melalui akun yang otorisasinya diberikan oleh pengguna akhir. Satu kemungkinan perluasan adalah Anda dapat secara otomatis membagikan Dokumen ini dengan orang lain menggunakan Drive API.
Dengan menggunakan kode sumber dan file audio yang disediakan, berikut adalah apa yang akan Anda lihat:
10. Selamat!
Anda kini telah mempelajari cara membuat Dokumen Google, melakukan panggilan ke Speech-to-Text API, dan membuat output transkrip file audio ke Dokumen yang telah dibuat.
Kemungkinan Peningkatan
Berikut beberapa ide tentang cara membuat integrasi yang lebih menarik:
- Siapkan kode Anda untuk memproses saat file audio telah ditambahkan ke Drive bucket Google Cloud Storage Anda, dan picu Google Cloud Function untuk menjalankan kode ini
- Cobalah menyisipkan teks ke dalam Dokumen Google yang tidak kosong
Pelajari Lebih Lanjut
- Baca dokumentasi Developer Google Dokumen API
- Posting pertanyaan dan temukan jawaban di Stack Overflow dengan tag google-docs-api