Translating Speech to text


Saya lanjutkan catatan training AI102 Azure. Kali ini tentang translating speech to text. Untuk menerjemahkan speech, digunakan speech recognition untuk mengenali input suara adalah bahasa tertentu, kemudian menerjemahkan transkrip tersebut ke bahasa lain. Tahapan terjemahannya dengan speech SDK mirip dengan speech recognition, dengan tambahan informasi tentang source dan target bahasa:

  1. Menggunakan SpeechConfig untuk menghubungkan ke speech resource menggunakan location dan key
  2. Menggunakan SpeechTranslationConfig utnuk menentukan bahasa speech recognition (input dan target)
  3. Menggunakan AudioConfig untuk mendefinisikan source input dari audio, defaultnya adalah microphone, namun bisa juga file audio
  4. Menggunakan SpeechConfig, SpeechTranslationConfig dan AudioConfig untuk membuat obyek TranslationRecognizer. Obyek ini adalah proxy client dari API speech service translation
  5. Menggunakan metode TranslationRecognizer untuk memanggil fungsi API yang diperlukan. Contohnya metode RecognizeOnceAsync() untuk menggunakan Speech service untuk menerjemahkan sebuah single spoken utterance secara asinkronus.
  6. Memproses respon dari speech service. Pada metode RecognizeOnceAsync, hasilnya adalah obyek SpeechRecognitionResult yang memiliki parameter: Duration, OffsetInTicks, Properties, Reason, ResultId, Text dan Translations.

Setelah semuanya berhasil property Reason telah menghasilkan value RecognizedSpeech, properti text mengandung transkrip dari bahasa asli, dan property Translation mengandung kamus dari hasil terjemahan (menggunakan kode bahasa 2 karakter)

Selanjutnya ada fitur synthesizing translations as speech

TranslationRecognizer menghasilkan transkrip dari input suara, dengan menerjemahkan suara menjadi teks. Kita bisa juga melakukan synthesize translation sebagai speech untuk membuat aplikasi speech-to-speech translations. Ada dua cara untuk melakukannya, yaitu event based synthesis dan manual synthesis

Event-based synthesis digunakan untuk menerjemahkan satu bahasa ke satu bahasa target. Dengan cara ini kita akan menangkap terjemahan sebagai audio stream. Langkahnya adalah:

  1. Menentukan suara yang digunakan untuk terjemahan suara dalam TranslationConfig
  2. Membuat sebuah event handler untuk TranslationRecognizer obyek pada event Synthesizing
  3. Pada event handler, gunakan GetAudio() pada parameter Result untuk mendapatkan byte stream dari audio yang diterjemahkan.

Contoh kode pythonnya bisa dilihat disini:

https://docs.microsoft.com/id-id/azure/cognitive-services/speech-service/get-started-speech-translation?pivots=programming-language-python&tabs=terminal#synthesize-translations

Sinthesis manual adalah cara lain, yang tidak menggunakan event handler. Sintesis manual digunakan untuk menggenerate terjemahan audio pada target satu atau lebih bahasa. Sintesis manual adalah kombinasi dari dua operasi berikut:

  1. Menggunakan TranslationRecognizer untuk menerjemahkan spoken input menjadi transkrip teks pada satu atau lebih bahasa
  2. Iterasi melalui kamus Translations sebagai hasil dari operasi penerjamahan, menggunakan sebuah SpeechSynthesizer untuk mesintesis sebuah audio stream pada setiap bahasa.

Sampai disin dulu semoga bermanfaat!


Silahkan tuliskan tanggapan, kritik maupun saran