TensorAudio

classe pubblica TensorAudio

Definisce un buffer ad anello e alcune funzioni di utilità per preparare i campioni audio di input.

Mantiene un buffer di anello per conservare di input dati audio. I client potevano fornire i dati audio di input tramite metodi di "carico" e accedere ai campioni audio aggregati tramite il metodo "getTensorBuffer".

Tieni presente che questa classe può gestire l'audio di input solo in virgola mobile (in AudioFormat.ENCODING_PCM_16BIT) o Short (in AudioFormat.ENCODING_PCM_FLOAT). Internamente converte e memorizza tutti i dati audio campioni nella codifica PCM Float.

Utilizzo tipico in Kotlin

   val tensor = TensorAudio.create(format, modelInputLength)
   tensor.load(newData)
   interpreter.run(tensor.getTensorBuffer(), outputBuffer);
 

Un altro utilizzo di esempio 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 Esegue il wrapping di alcune costanti che descrivono il formato dei campioni audio in ingresso, ovvero il numero canali e la frequenza di campionamento.

Metodi pubblici

statico TensorAudio
create(formato AudioFormat, int sampleCounts)
Crea un'istanza TensorAudio con un buffer ad anello di dimensioni pari a sampleCounts * format.getChannelCount().
statico TensorAudio
create(formato TensorAudio.TensorAudioFormat, int sampleCounts)
Crea un'istanza AudioRecord con un buffer ad anello di dimensioni pari a sampleCounts * format.getChannels().
TensorAudio.TensorAudioFormat
TensorBuffer
getTensorBuffer()
Restituisce un valore TensorBuffer in virgola mobile contenente tutti i campioni audio disponibili in AudioFormat.ENCODING_PCM_FLOAT, ad esempio
null
load(short[] src)
Converte i campioni audio in ingresso src in ENCODING_PCM_FLOAT, quindi li memorizza nell'anello buffer.
null
load(float[] src, int offsetInFloat, int sizeInFloat)
Memorizza i campioni audio di input src nel buffer ad anello.
null
load(short[] src, int offsetInShort, int sizeInShort)
Converte i campioni audio in ingresso src in ENCODING_PCM_FLOAT, quindi li memorizza nell'anello buffer.
int
load(registrazione AudioRecord)
Carica i dati più recenti da AudioRecord in modo non bloccante.
null
load(sorgente in virgola mobile[])
Memorizza i campioni audio di input src nel buffer ad anello.

Metodi ereditati

Metodi pubblici

pubblica statico TensorAudio crea (Formato AudioFormat, int sampleCounts)

Crea un'istanza TensorAudio con un buffer ad anello di dimensioni pari a sampleCounts * format.getChannelCount().

Parametri
dell'annuncio il valore AudioFormat richiesto dal modello TFLite. Definisce il numero di canali e la frequenza di campionamento.
sampleCounts il numero di campioni da inserire nel modello

pubblica statico TensorAudio crea (formato TensorAudio.TensorAudioFormat, int sampleCounts)

Crea un'istanza AudioRecord con un buffer ad anello di dimensioni pari a sampleCounts * format.getChannels().

Parametri
dell'annuncio la percentuale prevista di TensorAudio.TensorAudioFormat di dati audio caricati in questa classe.
sampleCounts il numero di campioni da inserire nel modello

pubblica TensorAudio.TensorAudioFormat getFormat ()

pubblica TensorBuffer getTensorBuffer ()

Restituisce un valore TensorBuffer in virgola mobile contenente tutti i campioni audio disponibili in AudioFormat.ENCODING_PCM_FLOAT, ad esempio i valori sono compresi nell'intervallo [-1, 1].

pubblica null . carica (short[] src)

Converte i campioni audio in ingresso src in ENCODING_PCM_FLOAT, quindi li memorizza nell'anello buffer.

Parametri
src campioni audio di input in AudioFormat.ENCODING_PCM_16BIT. Per multicanale, l'array è con interleaving.

pubblica null . carica (float[] src, int offsetInFloat, int sizeInFloat)

Memorizza i campioni audio di input src nel buffer ad anello.

Parametri
src campioni audio di input in AudioFormat.ENCODING_PCM_FLOAT. Per 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 incompatibile o dimensioni di input errate

pubblica null . carica (short[] src, int offsetInShort, int sizeInShort)

Converte i campioni audio in ingresso src in ENCODING_PCM_FLOAT, quindi li memorizza nell'anello buffer.

Parametri
src campioni audio di input in AudioFormat.ENCODING_PCM_16BIT. Per 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 bloccante. Solo che supportano ENCODING_PCM_16BIT ed ENCODING_PCM_FLOAT.

Parametri
disco un'istanza di AudioRecord
Resi
  • 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 restituisce 0.
Lanci
IllegalArgumentException per formato di codifica audio non supportato
IllegalStateException se la lettura da AudioRecord non riesce

pubblica null . carica (sorgente in virgola mobile[])

Memorizza i campioni audio di input src nel buffer ad anello.

Parametri
src campioni audio di input in AudioFormat.ENCODING_PCM_FLOAT. Per multicanale, l'array è con interleaving.