TensorAudio

classe pubblica TensorAudio

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
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 TensorAudio.TensorAudioFormat getFormat ()

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.