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(Rekam 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.
|
|---|