Menentukan buffer ring dan beberapa fungsi utilitas untuk menyiapkan sampel audio input.
Fungsi ini mempertahankan Buffering Dering untuk menyimpan data audio input. Klien dapat memasukkan data audio input melalui metode `load` dan mengakses sampel audio gabungan melalui metode `getTensorBuffer`.
Perlu diperhatikan bahwa class ini hanya dapat menangani audio input dalam Float (dalam AudioFormat.ENCODING_PCM_16BIT
) atau Short (dalam AudioFormat.ENCODING_PCM_FLOAT
). Secara internal, class ini mengonversi dan menyimpan semua sampel audio 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 | Menggabungkan 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 sampel audio input
src menjadi ENCODING_PCM_FLOAT, lalu menyimpannya di buffer
ring. |
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 sampel audio input
src menjadi ENCODING_PCM_FLOAT, lalu menyimpannya di buffer
ring. |
int |
load(rekaman AudioRecord)
Memuat data terbaru dari
AudioRecord dengan cara yang tidak memblokir. |
void |
load(float[] src)
Menyimpan sampel audio input
src di buffer ring. |
Metode Turunan
Metode Publik
publik statis AudioData buat (format AudioData.AudioDataFormat, int sampleCounts)
Membuat instance AudioRecord
dengan buffer ring yang ukurannya sampleCounts
* format.getNumOfChannels()
.
Parameter
format | AudioData.AudioDataFormat data audio yang diharapkan yang dimuat ke dalam class ini. |
---|---|
sampleCounts | jumlah sampel. |
public static AudioData create (Format AudioFormat, int sampleCounts)
Membuat instance AudioData
dengan buffer ring yang ukurannya sampleCounts
*
format.getChannelCount()
.
Parameter
format | AudioFormat yang diperlukan oleh model TFLite. Menentukan jumlah saluran dan frekuensi sampel. |
---|---|
sampleCounts | jumlah sampel yang akan dimasukkan ke dalam model |
public float[] getBuffer ()
Menampilkan array float yang menyimpan semua sampel audio yang tersedia di AudioFormat.ENCODING_PCM_FLOAT
, yaitu nilai berada dalam rentang [-1, 1].
public int getBufferLength ()
public void load (short[] src)
Mengonversi sampel audio input src
menjadi ENCODING_PCM_FLOAT, lalu menyimpannya di buffer
ring.
Parameter
src | sampel audio input di AudioFormat.ENCODING_PCM_16BIT . Untuk
input multi-saluran, array ini disisipi.
|
---|
public void load (float[] src, int offsetInFloat, int sizeInFloat)
Menyimpan sampel audio input src
di buffer ring.
Parameter
src | sampel audio input di AudioFormat.ENCODING_PCM_FLOAT . Untuk
input multi-saluran, array ini disisipi. |
---|---|
offsetInFloat | posisi awal dalam array src |
sizeInFloat | jumlah nilai float yang akan disalin |
Menampilkan
IllegalArgumentException | untuk format audio yang tidak kompatibel atau ukuran input yang salah |
---|
public void load (short[] src, int offsetInShort, int sizeInShort)
Mengonversi sampel audio input src
menjadi ENCODING_PCM_FLOAT, lalu menyimpannya di buffer
ring.
Parameter
src | sampel audio input di AudioFormat.ENCODING_PCM_16BIT . Untuk
input multi-saluran, array ini disisipi. |
---|---|
offsetInShort | posisi awal dalam array src |
sizeInShort | jumlah nilai pendek yang akan disalin |
Menampilkan
IllegalArgumentException | jika array sumber tidak dapat disalin |
---|
public int load (AudioRecord record)
Memuat data terbaru dari AudioRecord
dengan cara yang tidak memblokir. Hanya mendukung ENCODING_PCM_16BIT dan ENCODING_PCM_FLOAT.
Parameter
kumpulan data | instance AudioRecord |
---|
Hasil
- jumlah nilai audio yang diambil yang berukuran
channelCount * sampleCount
. Jika tidak ada data baru dalam AudioRecord atau terjadi error, metode ini akan menampilkan 0.
Menampilkan
IllegalArgumentException | untuk format encoding audio yang tidak didukung |
---|---|
IllegalStateException | jika gagal membaca dari AudioRecord |
public void load (float[] src)
Menyimpan sampel audio input src
di buffer ring.
Parameter
src | sampel audio input di AudioFormat.ENCODING_PCM_FLOAT . Untuk
input multi-saluran, array ini disisipi.
|
---|