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 tensor = TensorAudio.create(format, modelInputLength) tensor.load(newData) interpreter.run(tensor.getTensorBuffer(), outputBuffer);
Contoh penggunaan lain dengan AudioRecord
val tensor = TensorAudio.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { tensor.load(audioRecord) interpreter.run(tensor.getTensorBuffer(), outputBuffer) }
Class Bertingkat
class | TensorAudio.TensorAudioFormat | Menggabungkan beberapa konstanta yang menjelaskan format sampel audio yang masuk, yaitu jumlah saluran dan frekuensi sampel. |
Metode Publik
statis TensorAudio |
create(format AudioFormat, int sampleCounts)
Membuat instance
TensorAudio dengan buffer ring yang ukurannya sampleCounts *
format.getChannelCount() . |
statis TensorAudio |
create(format TensorAudio.TensorAudioFormat, int sampleCounts)
|
TensorAudio.TensorAudioFormat | |
TensorBuffer |
getTensorBuffer()
Menampilkan float
TensorBuffer yang menyimpan semua sampel audio yang tersedia di AudioFormat.ENCODING_PCM_FLOAT , yaitu |
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
public static TensorAudio create (Format AudioFormat, int sampleCounts)
Membuat instance TensorAudio
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 |
publik statis TensorAudio create (TensorAudio.TensorAudioFormat, int sampleCounts)
Membuat instance AudioRecord
dengan buffer ring yang ukurannya sampleCounts
* format.getChannels()
.
Parameter
format | TensorAudio.TensorAudioFormat data audio yang diharapkan yang dimuat ke dalam class ini. |
---|---|
sampleCounts | jumlah sampel yang akan dimasukkan ke dalam model |
publik TensorBuffer getTensorBuffer ()
Menampilkan float TensorBuffer
yang menyimpan semua sampel audio yang tersedia di AudioFormat.ENCODING_PCM_FLOAT
, yaitu nilai berada dalam rentang [-1, 1].
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.
|
---|