TensorAudio

classe pubblica TensorAudio

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

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.