Menentukan buffer ring dan beberapa fungsi utilitas untuk menyiapkan sampel audio input.
Komponen ini mempertahankan Ring Buffer untuk menampung memasukkan data audio. Klien dapat memberikan data audio input melalui metode `load` dan mengakses sampel audio gabungan melalui metode `getTensorBuffer`.
Perhatikan bahwa class ini hanya dapat menangani audio input di Float (dalam AudioFormat.ENCODING_PCM_16BIT
) atau Short (dalam AudioFormat.ENCODING_PCM_FLOAT
). Secara internal, ia mengonversi dan menyimpan semua audio
sampel dalam encoding PCM Float.
Penggunaan standar di Kotlin
val audioData = AudioData.create(format, modelInputLength) audioData.load(newData)
Contoh penggunaan lain dengan AudioRecord
val audioData = AudioData.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { audioData.load(audioRecord) }
Class Bertingkat
class | AudioData.AudioDataFormat | Membungkus beberapa konstanta yang menjelaskan format sampel audio yang masuk, yaitu jumlah saluran dan frekuensi sampel. |
Metode Publik
statis AudioData |
create(format AudioData.AudioDataFormat, int sampleCounts)
Membuat instance
AudioRecord dengan buffer ring yang ukurannya sampleCounts * format.getNumOfChannels() . |
statis AudioData | |
float[] |
getBuffer()
Menampilkan array float yang menyimpan semua sampel audio yang tersedia di
AudioFormat.ENCODING_PCM_FLOAT , yaitu |
int | |
AudioData.AudioDataFormat | |
void |
load(short[] src)
Mengonversi contoh audio input
src menjadi ENCODING_PCM_FLOAT, lalu menyimpannya di dalam cincin
{i>buffer <i}(penyangga). |
void |
load(float[] src, int offsetInFloat, int sizeInFloat)
Menyimpan sampel audio input
src di buffer ring. |
void |
load(short[] src, int offsetInShort, int sizeInShort)
Mengonversi contoh audio input
src menjadi ENCODING_PCM_FLOAT, lalu menyimpannya di dalam cincin
{i>buffer <i}(penyangga). |
int |
load(Rekaman AudioRecord)
Memuat data terbaru dari
AudioRecord dengan cara yang tidak memblokir. |
void |
beban(float[] src)
Menyimpan sampel audio input
src di buffer ring. |
Metode Turunan
Metode Publik
publik statis AudioData buat (FormatAudioData.AudioDataFormat, int sampleCounts)
Membuat instance AudioRecord
dengan buffer ring yang ukurannya sampleCounts
* format.getNumOfChannels()
.
Parameter
format | AudioData.AudioDataFormat data audio yang diharapkan dimuat ke class ini. |
---|---|
sampleCounts | jumlah sampel. |
publik statis AudioData buat (Format AudioFormat, int sampleCounts)
Membuat instance AudioData
dengan buffer ring yang ukurannya sampleCounts
*
format.getChannelCount()
.
Parameter
format | AudioFormat yang diperlukan oleh model TFLite. Mendefinisikan
jumlah saluran dan frekuensi sampel. |
---|---|
sampleCounts | jumlah sampel yang akan dimasukkan ke dalam model |
publik float[] getBuffer ()
Menampilkan array float yang menyimpan semua sampel audio yang tersedia di AudioFormat.ENCODING_PCM_FLOAT
, artinya nilai berada dalam rentang [-1, 1].
publik Int getBufferLength ()
publik kosong muat (singkat[] src)
Mengonversi contoh audio input src
menjadi ENCODING_PCM_FLOAT, lalu menyimpannya di dalam cincin
{i>buffer <i}(penyangga).
Parameter
src | memasukkan sampel audio di AudioFormat.ENCODING_PCM_16BIT . Sebagai
input multisaluran, array tersebut akan disisipkan.
|
---|
publik kosong muat (float[] src, int offsetInFloat, int sizeInFloat)
Menyimpan sampel audio input src
di buffer ring.
Parameter
src | memasukkan sampel audio di AudioFormat.ENCODING_PCM_FLOAT . Sebagai
input multisaluran, array tersebut akan disisipkan. |
---|---|
offsetInFloat | posisi awal dalam array src |
sizeInFloat | jumlah nilai {i>float<i} yang akan disalin |
Menampilkan
IllegalArgumentException | untuk format audio yang tidak kompatibel atau ukuran input yang salah |
---|
publik kosong muat (short[] src, int offsetInShort, int sizeInShort)
Mengonversi contoh audio input src
menjadi ENCODING_PCM_FLOAT, lalu menyimpannya di dalam cincin
{i>buffer <i}(penyangga).
Parameter
src | memasukkan sampel audio di AudioFormat.ENCODING_PCM_16BIT . Sebagai
input multisaluran, array tersebut akan disisipkan. |
---|---|
offsetInShort | posisi awal dalam array src |
sizeInShort | jumlah nilai singkat yang akan disalin |
Menampilkan
IllegalArgumentException | jika array sumber tidak dapat disalin |
---|
publik Int muat (Rekaman AudioRecord)
Memuat data terbaru dari AudioRecord
dengan cara yang tidak memblokir. Hanya
mendukung ENCODING_PCM_16BIT dan ENCODING_PCM_FLOAT.
Parameter
rekaman | instance AudioRecord |
---|
Hasil
- jumlah nilai audio yang direkam yang ukurannya adalah
channelCount * sampleCount
. Jika tidak ada data baru di AudioRecord atau terjadi error, metode ini akan menampilkan 0.
Menampilkan
IllegalArgumentException | untuk format encoding audio yang tidak didukung |
---|---|
IllegalStateException | jika gagal membaca dari AudioRecord |
publik kosong muat (float[] src)
Menyimpan sampel audio input src
di buffer ring.
Parameter
src | memasukkan sampel audio di AudioFormat.ENCODING_PCM_FLOAT . Sebagai
input multisaluran, array tersebut akan disisipkan.
|
---|