Definisce un ring buffer e alcune funzioni di utilità per preparare i campioni audio in ingresso.
Mantiene un Ring Buffer per contenere i dati audio in ingresso. I client potevano fornire dati audio in ingresso tramite i metodi "load" e accedere ai campioni audio aggregati tramite il metodo "getTensorBuffer".
Tieni presente che questa classe può gestire solo l'audio in input in Float (in AudioFormat.ENCODING_PCM_16BIT
) o Short (in AudioFormat.ENCODING_PCM_FLOAT
). Internamente converte e memorizza tutti i campioni audio nella codifica PCM Float.
Utilizzo tipico in 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) }
Classi nidificate
classe | TensorAudio.TensorAudioFormat | Racchiude alcune costanti che descrivono il formato dei campioni audio in ingresso, vale a dire il numero di canali e la frequenza di campionamento. |
Metodi pubblici
TensorAudio statico | creare (formato AudioFormat, int sampleCounts) Crea un'istanza TensorAudio con un buffer circolare la cui dimensione è sampleCounts * format.getChannelCount() . |
TensorAudio statico | crea (formato TensorAudio.TensorAudioFormat , int sampleCounts) Crea un'istanza AudioRecord con un buffer circolare la cui dimensione è sampleCounts * format.getChannels() . |
TensorAudio.TensorAudioFormat | getFormat () |
TensorBuffer | getTensorBuffer () Restituisce un TensorBuffer float che contiene tutti i campioni audio disponibili in AudioFormat.ENCODING_PCM_FLOAT , ad es. |
vuoto | carico (breve[] src) Converte i campioni audio in ingresso src in ENCODING_PCM_FLOAT, quindi lo memorizza nel ring buffer. |
vuoto | caricare (float[] src, int offsetInFloat, int sizeInFloat) Memorizza i campioni audio in ingresso src nel ring buffer. |
vuoto | caricamento (short[] src, int offsetInShort, int sizeInShort) Converte i campioni audio in ingresso src in ENCODING_PCM_FLOAT, quindi lo memorizza nel ring buffer. |
int | caricare (registrazione della registrazione audio) Carica i dati più recenti da AudioRecord in modo non bloccante. |
vuoto | carico (float[] src) Memorizza i campioni audio in ingresso src nel ring buffer. |
Metodi ereditati
Metodi pubblici
creazione pubblica statica di TensorAudio (formato AudioFormat, int sampleCounts)
Crea un'istanza TensorAudio
con un buffer circolare la cui dimensione è sampleCounts
* format.getChannelCount()
.
Parametri
formato | l' AudioFormat richiesto dal modello TFLite. Definisce il numero di canali e la frequenza di campionamento. |
---|---|
campioneConteggi | il numero di campioni da inserire nel modello |
creazione TensorAudio pubblica statica (formato TensorAudio.TensorAudioFormat , int sampleCounts)
Crea un'istanza AudioRecord
con un buffer circolare la cui dimensione è sampleCounts
* format.getChannels()
.
Parametri
formato | il TensorAudio.TensorAudioFormat previsto dei dati audio caricati in questa classe. |
---|---|
campioneConteggi | il numero di campioni da inserire nel modello |
public TensorBuffer getTensorBuffer ()
Restituisce un TensorBuffer
float che contiene tutti i campioni audio disponibili in AudioFormat.ENCODING_PCM_FLOAT
, ovvero i valori sono nell'intervallo [-1, 1].
carico vuoto pubblico (short[] src)
Converte i campioni audio in ingresso src
in ENCODING_PCM_FLOAT, quindi lo memorizza nel ring buffer.
Parametri
src | inserisci campioni audio in AudioFormat.ENCODING_PCM_16BIT . Per l'ingresso multicanale, l'array è interleaved. |
---|
carico vuoto pubblico (float[] src, int offsetInFloat, int sizeInFloat)
Memorizza i campioni audio in ingresso src
nel ring buffer.
Parametri
src | inserire campioni audio in AudioFormat.ENCODING_PCM_FLOAT . Per l'ingresso multicanale, l'array è interleaved. |
---|---|
offsetInFloat | posizione iniziale nell'array src |
sizeInFloat | il numero di valori float da copiare |
Lancia
IllegalArgumentException | per formato audio incompatibile o dimensione di input errata |
---|
carico vuoto pubblico (short[] src, int offsetInShort, int sizeInShort)
Converte i campioni audio in ingresso src
in ENCODING_PCM_FLOAT, quindi lo memorizza nel ring buffer.
Parametri
src | inserisci campioni audio in AudioFormat.ENCODING_PCM_16BIT . Per l'ingresso multicanale, l'array è interleaved. |
---|---|
offsetInShort | posizione iniziale nell'array src |
dimensioneInShort | il numero di valori brevi da copiare |
Lancia
IllegalArgumentException | se l'array di origine non può essere copiato |
---|
caricamento int pubblico (record AudioRecord)
Carica i dati più recenti da AudioRecord
in modo non bloccante. Supporta solo ENCODING_PCM_16BIT e ENCODING_PCM_FLOAT.
Parametri
documentazione | un'istanza di AudioRecord |
---|
ritorna
- numero di valori audio acquisiti la cui dimensione è
channelCount * sampleCount
. Se non erano presenti nuovi dati nell'AudioRecord o si è verificato un errore, questo metodo restituirà 0.
Lancia
IllegalArgumentException | per il formato di codifica audio non supportato |
---|---|
IllegalStateException | se la lettura da AudioRecord non è riuscita |
carico vuoto pubblico (float[] src)
Memorizza i campioni audio in ingresso src
nel ring buffer.
Parametri
src | inserire campioni audio in AudioFormat.ENCODING_PCM_FLOAT . Per l'ingresso multicanale, l'array è interleaved. |
---|