Pengantar encoding audio

Encoding audio mengacu pada proses penyimpanan dan pengiriman data audio. Dokumentasi di bawah ini menjelaskan cara kerja encoding tersebut. Untuk panduan dalam memilih encoding terbaik bagi aplikasi Anda, baca 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.

Konfigurasi Decoding

Parameter yang diperlukan untuk mendekode audio yang diteruskan ditentukan dalam decoding_config.

Jika audio Anda menggunakan salah satu format yang didukung oleh AutoDetectDecodingConfig, sebaiknya tetapkan kolom auto_decoding_config agar Speech-to-Text dapat menentukan parameter yang tepat untuk Anda.

Sebaliknya, tentukan parameter decoding secara eksplisit dengan menetapkan kolom explicit_decoding_config. Parameter ini biasanya dapat diketahui dengan melihat setelan yang digunakan untuk merekam audio.

Mengapa melakukan enkode?

Audio tersusun atas bentuk-bentuk gelombang, yang berisi interposisi gelombang dengan frekuensi dan amplitudo yang berbeda-beda. Agar dapat direpresentasikan dalam media digital, bentuk gelombang ini harus disampel pada tingkat yang dapat (setidaknya) merepresentasikan suara dengan frekuensi tertinggi yang ingin direplikasi, dan suara tersebut juga harus menyimpan kedalaman bit yang cukup untuk merepresentasikan amplitudo (kenyaringan dan kelembutan) yang tepat dari bentuk gelombang di seluruh sampel suara.

Kemampuan perangkat pemrosesan suara untuk membuat ulang frekuensi disebut respons frekuensi, sedangkan kemampuannya untuk menciptakan kenyaringan dan kelembutan yang tepat disebut 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 memperkirakan gelombang analog ini dengan mengambil sampel amplitudo gelombang analog tersebut pada tingkat yang cukup cepat untuk menirukan frekuensi intrinsik gelombang. Frekuensi sampel segmen audio digital menentukan jumlah sampel yang akan diambil dari materi sumber audio (per detik). Frekuensi sampel yang tinggi 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 dengan lebih tepat. Jika Anda memiliki banyak suara keras dan lembut dalam sampel audio yang sama, Anda memerlukan kedalaman bit yang lebih besar untuk merepresentasikan 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 24 bit, sedangkan sebagian besar peralatan telefoni menggunakan kedalaman 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). Sampel audio diambil pada interval yang ditentukan, dan amplitudo dari gelombang yang dijadikan sampel pada titik ini akan disimpan sebagai nilai digital menggunakan kedalaman bit sampel tersebut.

PCM linear (yang menunjukkan bahwa respons amplitudo seragam secara linear di seluruh sampel) adalah standar yang digunakan dalam CD, dan dalam encoding LINEAR16 Speech-to-Text API. Kedua encoding ini menghasilkan aliran byte tanpa kompresi yang berkaitan langsung dengan data audio, dan keduanya memiliki 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 adalah contoh audio tanpa kompresi karena data digital disimpan dalam kondisi persis seperti yang diimplikasikan oleh standar di atas. Dengan membaca aliran byte satu saluran yang dienkode menggunakan PCM linear, Anda dapat membagi setiap 16 bit (2 byte), misalnya, untuk mendapatkan nilai amplitudo lain dari bentuk gelombang tersebut. Hampir semua perangkat dapat memanipulasi data digital tersebut secara native. Anda bahkan dapat memangkas file audio PCM linear menggunakan editor teks, tetapi (tentu saja) audio tanpa kompresi bukanlah cara paling efisien untuk mengirim atau menyimpan audio digital. Karena alasan itulah, 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 menghilangkan audio dari luar rentang pendengaran normal manusia, dan menyesuaikan kompresi dengan mengatur kecepatan bit efektif codec MP3, atau jumlah bit per detik untuk menyimpan data 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, sebaiknya Anda 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.