TensorAudio

clase pública TensorAudio

Define un búfer de anillo y algunas funciones de utilidad para preparar las muestras de audio de entrada.

Mantiene un Ring Buffer para conservar los datos de audio de entrada. Los clientes podían ingresar datos de audio de entrada a través de métodos `load` y acceder a las muestras de audio agregadas a través del método `getTensorBuffer`.

Ten en cuenta que esta clase solo puede manejar audio de entrada en float (en AudioFormat.ENCODING_PCM_16BIT) o Short (en AudioFormat.ENCODING_PCM_FLOAT). Convierte y almacena internamente todas las muestras de audio en la codificación PCM Float.

Uso típico en Kotlin

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

Otro ejemplo de uso con AudioRecord

   val tensor = TensorAudio.create(format, modelInputLength)
   Timer().scheduleAtFixedRate(delay, period) {
     tensor.load(audioRecord)
     interpreter.run(tensor.getTensorBuffer(), outputBuffer)
   }
 

Categorías anidadas

clase TensorAudio.TensorAudioFormat Incluye algunas constantes que describen el formato de las muestras de audio entrantes, es decir, la cantidad de canales y la tasa de muestreo. 

Métodos públicos

TensorAudio estático
create(formato AudioFormat, int sampleCounts)
Crea una instancia de TensorAudio con un búfer de anillo cuyo tamaño es sampleCounts * format.getChannelCount().
TensorAudio estático
create(formato TensorAudio.TensorAudioFormat, el formato int sampleCounts)
Crea una instancia AudioRecord con un búfer de anillo cuyo tamaño es sampleCounts * format.getChannels().
TensorAudio.TensorAudioFormat
TensorBuffer
getTensorBuffer()
Muestra un TensorBuffer flotante que contiene todas las muestras de audio disponibles en AudioFormat.ENCODING_PCM_FLOAT, es decir.
void
load(short[] src)
Convierte las muestras de audio de entrada src en ENCODING_PCM_FLOAT y, luego, las almacena en el búfer de anillo.
void
load(float[] src, int offsetInFloat, int sizeInFloat)
Almacena las muestras de audio de entrada src en el búfer de anillo.
void
load(short[] src, int offsetInShort, int sizeInShort)
Convierte las muestras de audio de entrada src en ENCODING_PCM_FLOAT y, luego, las almacena en el búfer de anillo.
int
load(registro de AudioRecord)
Carga los datos más recientes de AudioRecord sin bloqueos.
void
load(float[] src)
Almacena las muestras de audio de entrada src en el búfer de anillo.

Métodos heredados

Métodos públicos

estático público TensorAudio create (formato AudioFormat, int sampleCounts)

Crea una instancia de TensorAudio con un búfer de anillo cuyo tamaño es sampleCounts * format.getChannelCount().

Parámetros
formato la AudioFormat que requiere el modelo de TFLite. Este define la cantidad de canales y la tasa de muestreo.
sampleCounts el número de muestras que se ingresan al modelo

estático público TensorAudio create (formato TensorAudio.TensorAudioFormat, un formato int sampleCounts)

Crea una instancia AudioRecord con un búfer de anillo cuyo tamaño es sampleCounts * format.getChannels().

Parámetros
formato los TensorAudio.TensorAudioFormat esperados de datos de audio cargados en esta clase
sampleCounts el número de muestras que se ingresan al modelo

público TensorAudio.TensorAudioFormat getFormat ()

público TensorBuffer getTensorBuffer ()

Muestra un TensorBuffer flotante que contiene todas las muestras de audio disponibles en AudioFormat.ENCODING_PCM_FLOAT, es decir, los valores están en el rango de [-1, 1].

public void load (short[] src)

Convierte las muestras de audio de entrada src en ENCODING_PCM_FLOAT y, luego, las almacena en el búfer de anillo.

Parámetros
src muestras de audio de entrada en AudioFormat.ENCODING_PCM_16BIT. Para las entradas multicanal, el array está intercalado.

public void load (float[] src, int offsetInFloat, int sizeInFloat)

Almacena las muestras de audio de entrada src en el búfer de anillo.

Parámetros
src muestras de audio de entrada en AudioFormat.ENCODING_PCM_FLOAT. Para las entradas multicanal, el array está intercalado.
offsetInFloat posición inicial en el array src
sizeInFloat el número de valores flotantes que se copiarán
Arroja
IllegalArgumentException cuando el formato de audio no es compatible o el tamaño de entrada es incorrecto

public void load (short[] src, int offsetInShort, int sizeInShort)

Convierte las muestras de audio de entrada src en ENCODING_PCM_FLOAT y, luego, las almacena en el búfer de anillo.

Parámetros
src muestras de audio de entrada en AudioFormat.ENCODING_PCM_16BIT. Para las entradas multicanal, el array está intercalado.
offsetInShort posición inicial en el array src
sizeInShort la cantidad de valores cortos que se copiarán
Arroja
IllegalArgumentException si el array fuente no se puede copiar

public int load (Registro de AudioRecord)

Carga los datos más recientes de AudioRecord sin bloqueos. Solo se admite ENCODING_PCM_16BIT y ENCODING_PCM_FLOAT.

Parámetros
grabar una instancia de AudioRecord
Devuelve
  • la cantidad de valores de audio capturados cuyo tamaño es channelCount * sampleCount. Si no había datos nuevos en AudioRecord o se produjo un error, este método mostrará 0.
Arroja
IllegalArgumentException para un formato de codificación de audio no compatible
IllegalStateException si falla la lectura de AudioRecord

public void load (float[] src)

Almacena las muestras de audio de entrada src en el búfer de anillo.

Parámetros
src muestras de audio de entrada en AudioFormat.ENCODING_PCM_FLOAT. Para las entradas multicanal, el array está intercalado.