Define un búfer en anillo y algunas funciones de utilidad para preparar las muestras de audio de entrada.
Mantiene un Ring Buffer para contener datos de audio de entrada. Los clientes pueden alimentar datos de audio de entrada mediante métodos "load" y acceder a las muestras de audio agregadas mediante el método "getTensorBuffer".
Tenga 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
). Internamente convierte y almacena todas las muestras de audio en codificación PCM Float.
Uso típico en Kotlin
val tensor = TensorAudio.create(format, modelInputLength) tensor.load(newData) interpreter.run(tensor.getTensorBuffer(), outputBuffer);
Otro uso de muestra con AudioRecord
val tensor = TensorAudio.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { tensor.load(audioRecord) interpreter.run(tensor.getTensorBuffer(), outputBuffer) }
Clases anidadas
clase | TensorAudio.TensorAudioFormat | Incluye algunas constantes que describen el formato de las muestras de audio entrantes, es decir, el número de canales y la frecuencia de muestreo. |
Métodos públicos
TensorAudio estático | crear (formato AudioFormat, int sampleCounts) Crea una instancia TensorAudio con un búfer circular cuyo tamaño es sampleCounts * format.getChannelCount() . |
TensorAudio estático | crear (formato TensorAudio.TensorAudioFormat , int sampleCounts) Crea una instancia AudioRecord con un búfer circular cuyo tamaño es sampleCounts * format.getChannels() . |
TensorAudio.TensorAudioFormat | |
TensorBuffer | obtenerTensorBuffer () Devuelve un TensorBuffer flotante que contiene todas las muestras de audio disponibles en AudioFormat.ENCODING_PCM_FLOAT , es decir |
vacío | cargar (short[] src) Convierte las muestras de audio de entrada src a ENCODING_PCM_FLOAT y luego las almacena en el búfer circular. |
vacío | cargar (float[] src, int offsetInFloat, int sizeInFloat) Almacena las muestras de audio de entrada src en el búfer circular. |
vacío | cargar (short[] src, int offsetInShort, int sizeInShort) Convierte las muestras de audio de entrada src a ENCODING_PCM_FLOAT y luego las almacena en el búfer circular. |
En t | cargar (grabación AudioRecord) Carga los datos más recientes de AudioRecord sin bloqueo. |
vacío | cargar (flotante[] src) Almacena las muestras de audio de entrada src en el búfer circular. |
Métodos heredados
Métodos públicos
Creación pública estática de TensorAudio (formato AudioFormat, int sampleCounts)
Crea una instancia TensorAudio
con un búfer circular cuyo tamaño es sampleCounts
* format.getChannelCount()
.
Parámetros
formato | el AudioFormat requerido por el modelo TFLite. Define el número de canales y la frecuencia de muestreo. |
---|---|
recuentos de muestras | el número de muestras que se introducirán en el modelo |
creación pública estática de TensorAudio (formato TensorAudio.TensorAudioFormat , int sampleCounts)
Crea una instancia AudioRecord
con un búfer circular cuyo tamaño es sampleCounts
* format.getChannels()
.
Parámetros
formato | el TensorAudio.TensorAudioFormat esperado de datos de audio cargados en esta clase. |
---|---|
recuentos de muestras | el número de muestras que se introducirán en el modelo |
público TensorBuffer getTensorBuffer ()
Devuelve 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].
carga vacía pública (short[] src)
Convierte las muestras de audio de entrada src
a ENCODING_PCM_FLOAT y luego las almacena en el búfer circular.
Parámetros
src | ingrese muestras de audio en AudioFormat.ENCODING_PCM_16BIT . Para la entrada multicanal, la matriz está entrelazada. |
---|
carga vacía pública (float[] src, int offsetInFloat, int sizeInFloat)
Almacena las muestras de audio de entrada src
en el búfer circular.
Parámetros
src | ingrese muestras de audio en AudioFormat.ENCODING_PCM_FLOAT . Para la entrada multicanal, la matriz está entrelazada. |
---|---|
compensación en flotación | posición inicial en la matriz src |
tamaño en flotación | el número de valores flotantes que se copiarán |
Lanza
Argumento de excepción ilegal | por formato de audio incompatible o tamaño de entrada incorrecto |
---|
carga vacía pública (short[] src, int offsetInShort, int sizeInShort)
Convierte las muestras de audio de entrada src
a ENCODING_PCM_FLOAT y luego las almacena en el búfer circular.
Parámetros
src | ingrese muestras de audio en AudioFormat.ENCODING_PCM_16BIT . Para la entrada multicanal, la matriz está entrelazada. |
---|---|
offsetEn resumen | posición inicial en la matriz src |
tamañoEnCorto | el número de valores cortos que se copiarán |
Lanza
Argumento de excepción ilegal | si la matriz de origen no se puede copiar |
---|
carga pública int (registro AudioRecord)
Carga los datos más recientes de AudioRecord
sin bloqueo. Solo admite ENCODING_PCM_16BIT y ENCODING_PCM_FLOAT.
Parámetros
registro | una instancia de AudioRecord |
---|
Devoluciones
- número 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 devolverá 0.
Lanza
Argumento de excepción ilegal | para formato de codificación de audio no compatible |
---|---|
Excepción de estado ilegal | si falla la lectura de AudioRecord |
carga vacía pública (float[] src)
Almacena las muestras de audio de entrada src
en el búfer circular.
Parámetros
src | ingrese muestras de audio en AudioFormat.ENCODING_PCM_FLOAT . Para la entrada multicanal, la matriz está entrelazada. |
---|