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 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.
|
|---|