Encoding audio mengacu pada proses penyimpanan dan pengiriman data audio. Dokumentasi di bawah ini menjelaskan cara kerja encoding tersebut dalam kaitannya dengan Speech-to-Text API.
Untuk panduan dalam memilih encoding terbaik bagi aplikasi Anda, lihat Praktik Terbaik.
Encoding audio digital merupakan topik yang kompleks, dan secara umum Anda tidak perlu mengetahui detailnya untuk memproses audio dalam Speech API. Konsep yang disampaikan di sini hanya dimaksudkan sebagai ringkasan umum. Sebagian dari informasi latar belakang ini mungkin berguna bagi Anda untuk memahami cara kerja API, serta bagaimana audio sebaiknya diformulasikan dan diproses di aplikasi Anda.
Format vs. encoding audio
Perhatikan bahwa format audio tidak sama dengan encoding audio. Format file populer seperti .WAV
, misalnya, menentukan format header file audio, tetapi bukan encoding audio itu sendiri. File audio .WAV
sering, tetapi tidak selalu, menggunakan encoding PCM linear; jangan berasumsi bahwa file .WAV
memiliki encoding tertentu sampai Anda memeriksa header-nya.
Namun, FLAC
adalah format file dan encoding, yang terkadang menyebabkan
beberapa kebingungan. File FLAC
harus berisi frekuensi sampel di header FLAC
agar dapat dikirim ke Speech-to-Text API. FLAC
adalah satu-satunya
encoding yang memerlukan data audio untuk menyertakan header; semua encoding audio lainnya
menentukan data audio tanpa header. Saat merujuk ke FLAC
dalam Speech-to-Text API, kita selalu mengacu pada codec. Saat merujuk pada format file FLAC, kita akan menggunakan format "file .FLAC
".
Anda tidak perlu menentukan encoding dan frekuensi sampel untuk file WAV atau FLAC. Jika dihilangkan, Speech-to-Text akan otomatis menentukan encoding dan frekuensi sampel untuk file WAV atau FLAC berdasarkan header file. Jika Anda menentukan nilai encoding atau frekuensi sampel yang tidak cocok dengan nilai di header file, Speech-to-Text akan menampilkan error.
Encoding audio yang didukung untuk Speech-to-Text
Speech-to-Text API mendukung sejumlah encoding yang berbeda. Tabel berikut mencantumkan codec audio yang didukung:
Codec | Nama | Lossless | Catatan Penggunaan |
---|---|---|---|
MP3 |
MPEG Audio Layer III | Tidak | Encoding MP3 adalah fitur Beta dan hanya tersedia di v1p1beta1. Lihat dokumentasi referensi RecognitionConfig untuk mengetahui detailnya. |
FLAC |
Codec Audio Lossless Gratis | Ya | 16-bit atau 24-bit diperlukan untuk streaming |
LINEAR16 |
PCM Linear | Ya | Encoding modulasi kode pulsa linear (PCM) 16-bit. Header harus berisi frekuensi sampel. |
MULAW |
hukum μ | Tidak | Encoding PCM 8-bit |
AMR |
Narrowband Multi-Kecepatan Adaptif | Tidak | Frekuensi sampel harus 8.000 Hz |
AMR_WB |
Wideband Multi-Kecepatan Adaptif | Tidak | Frekuensi sampel harus 16.000 Hz |
OGG_OPUS |
Frame audio yang dienkode Opus dalam container Ogg | Tidak | Frekuensi sampel harus salah satu dari 8.000 Hz, 12.000 Hz, 16.000 Hz, 24.000 Hz, atau 48.000 Hz |
SPEEX_WITH_HEADER_BYTE |
Wideband Speex | Tidak | Frekuensi sampel harus 16.000 Hz |
WEBM_OPUS |
Opus WebM | Tidak | Frekuensi sampel harus salah satu dari 8.000 Hz, 12.000 Hz, 16.000 Hz, 24.000 Hz, atau 48.000 Hz |
Untuk mengetahui informasi selengkapnya tentang codec audio Speech-to-Text, lihat dokumentasi referensi AudioEncoding.
Jika Anda bisa memilih saat mengenkode materi sumber, gunakan encoding lossless
seperti FLAC
atau LINEAR16
untuk pengenalan ucapan yang lebih baik. Untuk panduan
memilih codec yang sesuai untuk tugas Anda, lihat
Praktik Terbaik.
Mengapa melakukan enkode?
Audio tersusun atas bentuk-bentuk gelombang, yang berisi interposisi gelombang dengan frekuensi dan amplitudo yang berbeda-beda. Untuk merepresentasikan bentuk gelombang ini dalam media digital, bentuk gelombang harus diambil sampelnya dengan frekuensi yang (setidaknya) dapat merepresentasikan suara dengan frekuensi tertinggi yang ingin direplikasi, dan juga perlu menyimpan kedalaman bit yang cukup untuk mewakili amplitudo (kenyaringan dan kelembutan) bentuk gelombang yang tepat di seluruh sampel suara.
Kemampuan perangkat pemrosesan suara untuk membuat ulang frekuensi dikenal sebagai respons frekuensi dan kemampuannya untuk menghasilkan kenyaringan dan kelembutan yang tepat dikenal sebagai rentang dinamis. Bersama-sama, kedua istilah ini biasanya disebut fidelitas perangkat suara. Encoding, dalam bentuknya yang paling sederhana, adalah cara merekonstruksi suara menggunakan kedua prinsip dasar ini, serta kemampuan untuk menyimpan dan mengirim data tersebut secara efisien.
Frekuensi sampling
Suara ada sebagai bentuk gelombang analog. Segmen audio digital mendekati gelombang analog ini dengan mengambil sampel amplitudo gelombang analog ini pada frekuensi yang cukup cepat untuk meniru frekuensi intrinsik gelombang. Frekuensi sampel segmen audio digital menentukan jumlah sampel yang diambil dari materi sumber audio (per detik); frekuensi sampel yang tinggi akan meningkatkan kemampuan audio digital untuk merepresentasikan frekuensi tinggi dengan tepat.
Sebagai konsekuensi dari teorema Nyquist-Shannon, umumnya Anda perlu mengambil sampel lebih dari dua kali frekuensi tertinggi gelombang suara yang ingin Anda tangkap secara digital. Untuk merepresentasikan audio dalam rentang pendengaran manusia (20-20.000 Hz), misalnya, format audio digital harus mengambil sampel minimal 40.000 kali per detik (yang merupakan salah satu alasan audio CD menggunakan frekuensi sampel 44.100 Hz).
Kedalaman bit
Kedalaman bit memengaruhi rentang dinamis sampel audio tertentu. Kedalaman bit yang lebih tinggi memungkinkan Anda merepresentasikan amplitudo yang lebih tepat. Jika Anda memiliki banyak suara keras dan lembut dalam sampel audio yang sama, Anda memerlukan kedalaman bit yang lebih tinggi untuk mewakili suara tersebut dengan benar.
Kedalaman bit yang lebih tinggi juga akan mengurangi rasio sinyal terhadap kebisingan dalam sampel audio. Audio musik CD disediakan menggunakan kedalaman bit 16 bit. Audio DVD menggunakan kedalaman bit 24 bit, sementara sebagian besar peralatan telepon menggunakan kedalaman bit 8 bit. (Teknik kompresi tertentu dapat mengompensasi kedalaman bit yang lebih kecil, tetapi cenderung lossy.)
Audio tanpa kompresi
Sebagian besar pemrosesan audio digital menggunakan kedua teknik ini—frekuensi sampling dan kedalaman bit—untuk menyimpan data audio secara langsung. Salah satu teknik audio digital yang paling populer (berkat penggunaan CD) disebut Modulasi Kode Pulsa (Pulse Code Modulation, atau PCM). Audio diambil sampelnya pada interval yang ditetapkan, dan amplitudo gelombang yang diambil sampelnya pada titik tersebut akan disimpan sebagai nilai digital menggunakan kedalaman bit sampel.
PCM Linear (yang menunjukkan bahwa respons amplitudonya seragam secara linear di seluruh sampel) adalah standar yang digunakan dalam CD, dan dalam encoding LINEAR16
Speech-to-Text API. Kedua encoding menghasilkan aliran byte
tidak terkompresi yang sesuai langsung dengan data audio, dan kedua standar tersebut berisi
kedalaman 16 bit. PCM linear menggunakan frekuensi sampel 44.100 Hz dalam CD, yang sesuai untuk rekomposisi musik; namun, frekuensi sampel 16.000 Hz lebih sesuai untuk rekomposisi ucapan.
PCM Linear (LINEAR16
) adalah contoh audio yang tidak dikompresi yang
menyimpan data digital persis seperti yang disyaratkan standar di atas. Dengan membaca aliran byte satu saluran yang dienkode menggunakan PCM Linear, Anda dapat menghitung setiap 16 bit (2 byte), misalnya, untuk mendapatkan nilai amplitudo bentuk gelombang lainnya.
Hampir semua perangkat dapat memanipulasi data digital tersebut secara native. Anda bahkan dapat
meng-crop file audio PCM Linear menggunakan editor teks — tetapi (jelas)
audio yang tidak dikompresi bukanlah cara yang paling efisien untuk memindahkan atau menyimpan audio
digital. Karena alasan itu, sebagian besar audio menggunakan teknik kompresi digital.
Audio terkompresi
Seperti semua data lainnya, data audio biasanya dikompresi untuk mempermudah penyimpanan dan pengiriman. Kompresi dalam encoding audio dapat bersifat lossless atau lossy. Kompresi lossless dapat diekstrak untuk memulihkan data digital ke bentuk aslinya. Kompresi lossy menghilangkan sebagian informasi selama kompresi dan dekompresi, serta diparameterisasi untuk menunjukkan seberapa besar toleransi penghilangan data yang dapat diberikan kepada teknik kompresi.
Kompresi lossless
Kompresi lossless mengompresi data audio digital menggunakan penataan ulang yang kompleks atas data yang telah disimpan, tanpa menurunkan kualitas sampel digital aslinya. Dengan kompresi lossless, saat data diekstrak ke dalam bentuk digital aslinya, tidak ada informasi yang hilang.
Kalau begitu, mengapa teknik kompresi lossless terkadang memiliki parameter pengoptimalan? Parameter ini sering kali mengorbankan ukuran file untuk waktu dekompresi. Misalnya, FLAC
menggunakan parameter tingkat kompresi dari 0 (tercepat) hingga 8 (ukuran file terkecil). Kompresi FLAC tingkat lebih tinggi tidak akan kehilangan informasi apa pun jika dibandingkan dengan kompresi tingkat lebih rendah. Sebagai gantinya, algoritma kompresi hanya perlu mengeluarkan lebih banyak energi komputasi saat mengonstruksi atau mendekonstruksi audio digital asli.
Speech-to-Text API mendukung dua encoding lossless: FLAC
dan LINEAR16
.
Secara teknis, LINEAR16
bukanlah "kompresi lossless" karena sejak awal kompresi memang tidak diperlukan. Jika ukuran file atau kecepatan pengiriman data menjadi pertimbangan penting Anda, pilih FLAC
sebagai pilihan encoding audio.
Kompresi lossy
Di sisi lain, kompresi lossy mengompresi data audio dengan menghilangkan atau mengurangi jenis informasi tertentu selama pengonstruksian data terkompresi. Speech-to-Text API mendukung beberapa format lossy, meskipun sebaiknya dihindari jika Anda memiliki kontrol atas audio, karena kehilangan data dapat memengaruhi akurasi pengenalan.
Codec MP3 yang populer adalah contoh teknik encoding lossy. Semua teknik kompresi MP3 akan menghapus audio dari luar rentang audio manusia yang normal, dan menyesuaikan jumlah kompresi dengan menyesuaikan kecepatan bit codec MP3, atau jumlah bit per detik untuk menyimpan tanggal audio.
Misalnya, CD stereo yang menggunakan PCM Linear 16 bit memiliki kecepatan bit efektif:
44100 * 2 channels * 16 bits = 1411200 bits per second (bps) = 1411 kbps
Kompresi MP3 menghilangkan data digital semacam ini menggunakan kecepatan bit, misalnya 320 kbps, 128 kbps, atau 96 kbps, dengan dampak berupa penurunan kualitas audio. MP3 juga mendukung kecepatan bit variabel, yang dapat mengompresi audio lebih lanjut. Kedua teknik ini kehilangan informasi dan dapat memengaruhi kualitas. Kebanyakan orang dapat membedakan antara musik MP3 berenkode 96 kbps dan 128 kbps.
Bentuk kompresi lain akan memparameterkan beberapa batasan lain.
MULAW adalah encoding PCM 8 bit. Dalam teknik ini, amplitudo sampel dimodulasi secara logaritmik, bukan secara linear. Hasilnya, uLaw mengurangi rentang dinamis efektif audio sehingga dikompresi. Meskipun uLaw diperkenalkan untuk secara khusus mengoptimalkan encoding ucapan, bukan jenis audio lainnya, LINEAR16
16 bit (PCM tanpa kompresi) masih lebih unggul dibandingkan audio terkompresi uLaw 8 bit.
AMR dan AMR_WB memodulasi sampel audio yang dienkode dengan memperkenalkan kecepatan bit variabel pada sampel audio sumber.
Meskipun Speech-to-Text API mendukung beberapa format lossy, Anda harus menghindarinya jika memiliki kontrol atas audio sumber. Penghapusan data melalui kompresi lossy semacam ini mungkin tidak terlalu memengaruhi audio yang didengar oleh telinga manusia, tetapi hilangnya data tersebut bagi mesin pengenalan ucapan dapat menurunkan akurasi secara signifikan.