1. Ringkasan
Dalam codelab ini, Anda akan mempelajari cara mengirim file audio melalui Google Cloud Speech to Text API, lalu menampilkan transkrip ke Dokumen Google. Speech to Text API mudah digunakan, dan menerapkan jaringan neural yang canggih untuk memungkinkan developer mengubah audio menjadi teks. Selain itu, fitur ini 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 hasil.
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 terinstal (versi 7 atau yang lebih baru)
- Gradle terinstal (versi 5 atau yang lebih baru)
- Akses ke internet dan browser web
- Akun Google
- Project Google Cloud Platform
2. Menyiapkan project
Buat project cloud Anda
- 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 konsol GCP 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 konsol GCP, buka Credentials
- Membuat kunci OAuth 2.0 dan mendownloadnya sebagai JSON
- Ganti nama file menjadi
credentials.jsondan 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 mengerjakan kode.
3. Menyiapkan kode
Mendapatkan kode contoh
Untuk mendapatkan kode contoh, download file zip ke komputer Anda...
...atau clone repositori GitHub dari command line.
$ git clone git@github.com:googleworkspace/docs-transcript-codelab.git
Anda akan bekerja di file CreateTranscript.java di dalam direktori start. File gradle tidak boleh diubah.
Di direktori Anda, buka folder start, lalu buka file CreateTranscript.java. Scroll ke bawah hingga 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 menentukan bahwa kode Anda 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 sebagaimana mestinya berdasarkan Cakupan API Google OAuth 2.0.
Misalnya, jika Anda tidak menulis ke Dokumen Google, Anda dapat mengubah cakupan menjadi DOCUMENTS_READONLY. Variabel SCOPES diperlukan tidak hanya 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 memberikan izin untuk menggunakan aplikasi.
Mengganti 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 akan melihatnya sudah disetel dengan benar.
- Ubah nama CREDENTIALS_FILE_PATH menjadi nama file kredensial yang didownload (seharusnya ‘/
credentials.json'). Pastikan file ini berada di dalam direktorisrc/main/resourcesfolder 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
Dalam file CreateTranscript.java, temukan deklarasi metode utama dan lihat 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 ini mewakili klien API yang sah, yang menyimpan kredensial Anda dan, dalam hal ini, autentikasi pengguna akhir Anda.
Dalam kode Anda, setiap fungsi 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 yang ditentukan. Jadi, mari salin kode di bawah 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 dalam URL Dokumen.
Selanjutnya, Anda akan melakukan inisialisasi klien Speech-to-Text.
6. Memanggil Speech to Text API
Tugas berikutnya yang ingin Anda lakukan dalam kode adalah mendapatkan transkrip tertulis untuk file audio. Di dalam CreateTranscript.java, temukan fungsi getTranscript().
Pertama, 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 menginisialisasi variabel RecognitionConfig dengan benar.
Di sini, config memberikan informasi tentang cara yang tepat bagi pengenal ucapan Anda untuk memproses permintaan Anda. Anda harus mengedit setLanguageCode() jika, misalnya, file audio Anda dalam bahasa selain Inggris, dan mengubah setSampleRateHertz() jika file audio Anda memiliki frekuensi sampling yang berbeda dalam Hertz (1600 adalah yang 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 transkrip file audio result dan siapkan untuk dimasukkan ke dalam dokumen.
Setiap item dalam hasil adalah transkrip berjenis 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. Menyisipkan teks ke dalam Dokumen
Sekarang Anda akan memasukkan teks transkrip ke dalam Dokumen Google. Untuk melakukan modifikasi pada dokumen, Anda harus menggunakan metode BatchUpdate. BatchUpdate adalah penampung untuk berbagai jenis permintaan penulisan dan di sini Anda akan menggunakan InsertTextRequest.
EndOfSegmentLocation adalah parameter penting yang menentukan di mana dalam Dokumen Anda, Anda ingin mencetak teks. Dalam kode sumber, Anda menyisipkan teks di isi Dokumen.
Mari sisipkan kode di bawah ke dalam fungsi Anda untuk melihat bagaimana hasil Speech-to-Text API yang dipasangkan dengan panggilan ke Docs API dapat memungkinkan kita menyisipkan transkrip file audio dalam Dokumen Google:
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: apa yang ingin Anda cetak (.setText()), serta di mana dalam dokumen Anda ingin melakukannya (.setIndex(1)).
Sekarang Anda telah menyisipkan transkrip file audio ke dalam Dokumen yang dibuat.
8. Menjalankan kode
Sekarang setelah Anda memiliki semua kode yang diperlukan untuk mengambil file audio, mendapatkan transkripnya, dan mencetak transkripnya ke dalam Dokumen Google yang baru dibuat, mari kita mulai!
Karena Anda akan menjalankan kode java menggunakan sistem build gradle, Anda harus memberi tahu file build.gradle tentang apa yang harus di-build dan dijalankan. Dalam project ini dan project lainnya, pastikan Anda menjaga mainClassName tetap konsisten dengan class java yang ingin Anda jalankan.
Bagus! Sekarang Anda siap menjalankan kode. Untuk melakukannya, ketik perintah berikut di command line:
$ gradle run
Autentikasi pengguna akhir
Saat pertama kali menjalankan kode ini, Anda akan melihat URL yang dicetak di terminal, yang meminta Anda untuk login ke akun layanan dan mengizinkan akses ke Google Dokumennya. Setelah mengizinkan akses, Anda akan melihat file baru yang 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 Autentikasi Google, diekstrak dari responsnya, dan kini akan dikirim melalui API yang Anda panggil.
Solusi
Jika kode Anda tidak berfungsi, lihat file CreateTranscript.java di dalam folder finish. File ini memiliki semua kode Anda persis seperti yang diperlukan agar dapat berjalan dengan sukses.
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 digunakan pengguna akhir untuk memberikan otorisasi. Salah satu kemungkinan perluasan adalah Anda dapat membagikan Dokumen ini secara otomatis kepada orang lain menggunakan Drive API.
Dengan menggunakan kode sumber dan file audio yang diberikan, berikut tampilan yang akan Anda lihat:

10. Selamat!
Sekarang Anda telah mempelajari cara membuat Dokumen Google, melakukan panggilan ke Speech-to-Text API, dan menghasilkan transkrip file audio ke Dokumen yang Anda buat.
Kemungkinan Peningkatan
Berikut beberapa ide tentang cara membuat integrasi yang lebih menarik:
- Siapkan kode Anda untuk memantau saat file audio telah ditambahkan ke bucket Google Cloud Storage Drive Anda, dan picu Google Cloud Function untuk menjalankan kode ini
- Bereksperimenlah dengan menyisipkan teks ke dalam Dokumen Google yang tidak kosong
Pelajari Lebih Lanjut
- Baca dokumentasi Developer Google Docs API
- Posting pertanyaan dan temukan jawaban di Stack Overflow dengan tag google-docs-api