Definisce un ring buffer e alcune funzioni di utilità per preparare i campioni audio di input.
Conserva un buffer di squillo per conservare i dati audio in input. I client potrebbero fornire dati audio di input con i metodi "load" e accedere ai campioni audio aggregati tramite il metodo "getTensorBuffer".
Tieni presente che questa classe può gestire solo audio di input in Float (in AudioFormat.ENCODING_PCM_16BIT
) o Short (in AudioFormat.ENCODING_PCM_FLOAT
). Internamente converte e memorizza tutti i campioni audio con la codifica Float PCM.
Utilizzo tipico a Kotlin
val tensor = TensorAudio.create(format, modelInputLength) tensor.load(newData) interpreter.run(tensor.getTensorBuffer(), outputBuffer);
Un altro esempio di utilizzo con AudioRecord
val tensor = TensorAudio.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { tensor.load(audioRecord) interpreter.run(tensor.getTensorBuffer(), outputBuffer) }
Corsi nidificati
classe | TensorAudio.TensorAudioFormat | Include alcune costanti che descrivono il formato dei campioni audio in arrivo, ovvero il numero di canali e la frequenza di campionamento. |
Metodi pubblici
statico TensorAudio |
create(Formato AudioFormat, int sampleCounts)
Crea un'istanza
TensorAudio con un buffer circolare la cui dimensione è sampleCounts *
format.getChannelCount() . |
statico TensorAudio |
create(formato TensorAudio.TensorAudioFormat, int sampleCounts)
Crea un'istanza
AudioRecord con un buffer circolare la cui dimensione è sampleCounts * format.getChannels() . |
TensorAudio.TensorAudioFormat | |
TensorBuffer |
getTensorBuffer()
Restituisce un valore
TensorBuffer in virgola mobile che contiene tutti i campioni audio disponibili in AudioFormat.ENCODING_PCM_FLOAT , ad esempio |
void |
load(short[] src)
Converte i campioni audio di input
src in ENCODING_PCM_FLOAT, quindi li memorizza nel buffer
circolare. |
void |
load(float[] src, int offsetInFloat, int sizeInFloat)
Memorizza i campioni audio di input
src nel buffer della suoneria. |
void |
load(short[] src, int offsetInShort, int sizeInShort)
Converte i campioni audio di input
src in ENCODING_PCM_FLOAT, quindi li memorizza nel buffer
circolare. |
int |
load(registrazione AudioRecord)
Carica i dati più recenti da
AudioRecord in modo non bloccato. |
void |
load(float[] src)
Memorizza i campioni audio di input
src nel buffer della suoneria. |
Metodi ereditati
Metodi pubblici
pubblico statico TensorAudio create (formato AudioFormat, int sampleCounts)
Crea un'istanza TensorAudio
con un buffer circolare la cui dimensione è sampleCounts
*
format.getChannelCount()
.
Parametri
dell'annuncio | il AudioFormat richiesto dal modello TFLite. Definisce
il numero di canali e la frequenza di campionamento. |
---|---|
sampleCounts | il numero di campioni da inserire nel modello |
pubblico statico TensorAudio create (formato TensorAudio.TensorAudioFormat, int sampleCounts)
Crea un'istanza AudioRecord
con un buffer circolare la cui dimensione è sampleCounts
* format.getChannels()
.
Parametri
dell'annuncio | la percentuale prevista di dati audio (TensorAudio.TensorAudioFormat ) caricati in questa classe. |
---|---|
sampleCounts | il numero di campioni da inserire nel modello |
pubblico TensorBuffer getTensorBuffer ()
Restituisce un valore in virgola mobile TensorBuffer
che contiene tutti i campioni audio disponibili in AudioFormat.ENCODING_PCM_FLOAT
, ovvero i valori sono compresi nell'intervallo [-1, 1].
pubblica void carica (short[] src)
Converte i campioni audio di input src
in ENCODING_PCM_FLOAT, quindi li memorizza nel buffer
circolare.
Parametri
src | campionamenti audio di input in AudioFormat.ENCODING_PCM_16BIT . Per
l'input multicanale, l'array è con interleaving.
|
---|
Public void load (float[] src, int offsetInFloat, int sizeInFloat)
Memorizza i campioni audio di input src
nel buffer della suoneria.
Parametri
src | campionamenti audio di input in AudioFormat.ENCODING_PCM_FLOAT . Per
l'input multicanale, l'array è con interleaving. |
---|---|
offsetInFloat | posizione iniziale nell'array src |
sizeInFloat | il numero di valori in virgola mobile da copiare |
Lanci
IllegalArgumentException | per un formato audio non compatibile o dimensioni di input non corrette |
---|
Public void load (short[] src, int offsetInShort, int sizeInShort)
Converte i campioni audio di input src
in ENCODING_PCM_FLOAT, quindi li memorizza nel buffer
circolare.
Parametri
src | campionamenti audio di input in AudioFormat.ENCODING_PCM_16BIT . Per
l'input multicanale, l'array è con interleaving. |
---|---|
offsetInShort | posizione iniziale nell'array src |
sizeInShort | il numero di valori brevi da copiare |
Lanci
IllegalArgumentException | se non è possibile copiare l'array di origine |
---|
pubblica int carica (registrazione AudioRecord)
Carica i dati più recenti da AudioRecord
in modo non bloccato. Supporta solo ENCODING_PCM_16BIT e ENCODING_PCM_FLOAT.
Parametri
disco | un'istanza di AudioRecord |
---|
Ritorni
- numero di valori audio acquisiti la cui dimensione è
channelCount * sampleCount
. Se non erano presenti nuovi dati nell'AudioRecord o se si è verificato un errore, questo metodo restituirà 0.
Lanci
IllegalArgumentException | per un formato di codifica audio non supportato |
---|---|
IllegalStateException | se la lettura da AudioRecord non è riuscita |
pubblica void carica (float[] src)
Memorizza i campioni audio di input src
nel buffer della suoneria.
Parametri
src | campionamenti audio di input in AudioFormat.ENCODING_PCM_FLOAT . Per
l'input multicanale, l'array è con interleaving.
|
---|