Define un búfer de anillo y algunas funciones de utilidad para preparar los ejemplos de audio de entrada.
Conserva un Búfer de anillo para contener de entrada de datos de audio. Los clientes podían ingresar datos de audio de entrada a través de métodos `load` y acceder al muestras de audio agregadas mediante el método `getTensorBuffer`.
Ten en cuenta que esta clase solo puede controlar audio de entrada en flotante (en AudioFormat.ENCODING_PCM_16BIT
) o Short (en AudioFormat.ENCODING_PCM_FLOAT
). De forma interna, convierte y almacena todo el audio
en la codificación PCM flotante.
Uso típico en Kotlin
val audioData = AudioData.create(format, modelInputLength) audioData.load(newData)
Otro uso de muestra con AudioRecord
val audioData = AudioData.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { audioData.load(audioRecord) }
Categorías anidadas
clase | AudioData.AudioDataFormat | Une algunas constantes que describen el formato de las muestras de audio entrantes, en concreto, la cantidad de canales y la tasa de muestreo. |
Métodos públicos
estático AudioData |
create(formato AudioData.AudioDataFormat, int sampleCounts)
Crea una instancia
AudioRecord con un búfer de anillo cuyo tamaño es sampleCounts * format.getNumOfChannels() . |
estático AudioData | |
float[] |
getBuffer()
Muestra un array de número de punto flotante que contiene todas las muestras de audio disponibles en
AudioFormat.ENCODING_PCM_FLOAT ; es decir, |
int | |
AudioData.AudioDataFormat | |
void |
load(short[] src)
Convierte las muestras de audio de entrada
src en ENCODING_PCM_FLOAT y, luego, las almacena en el anillo.
tiempo de reserva. |
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 anillo.
tiempo de reserva. |
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
público estático AudioData . crear (formato AudioData.AudioDataFormat, int sampleCounts)
Crea una instancia AudioRecord
con un búfer de anillo cuyo tamaño es sampleCounts
* format.getNumOfChannels()
.
Parámetros
formato | los AudioData.AudioDataFormat esperados de datos de audio cargados en esta clase. |
---|---|
sampleCounts | la cantidad de muestras. |
público estático AudioData . crear (Formato AudioFormat, int sampleCounts)
Crea una instancia AudioData
con un búfer de anillo cuyo tamaño es sampleCounts
*
format.getChannelCount()
Parámetros
formato | el AudioFormat requerido por el modelo de TFLite. Define
el número de canales y la tasa de muestreo. |
---|---|
sampleCounts | la cantidad de muestras que se ingresarán al modelo |
público float[] getBuffer ()
Muestra un array de número de punto 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].
público número entero getBufferLength ()
público anular cargar (short[] src)
Convierte las muestras de audio de entrada src
en ENCODING_PCM_FLOAT y, luego, las almacena en el anillo.
tiempo de reserva.
Parámetros
src | muestras de audio de entrada en AudioFormat.ENCODING_PCM_16BIT . Para
entrada multicanal, el array se intercala.
|
---|
público anular cargar (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
entrada multicanal, el array se intercala. |
---|---|
offsetInFloat | posición inicial en el array src |
sizeInFloat | la cantidad de valores flotantes que se copiarán |
Arroja
IllegalArgumentException. | por formato de audio incompatible o tamaño de entrada incorrecto |
---|
público anular cargar (short[] src, int offsetInShort, int sizeInShort)
Convierte las muestras de audio de entrada src
en ENCODING_PCM_FLOAT y, luego, las almacena en el anillo.
tiempo de reserva.
Parámetros
src | muestras de audio de entrada en AudioFormat.ENCODING_PCM_16BIT . Para
entrada multicanal, el array se intercala. |
---|---|
offsetInShort | posición inicial en el array src |
sizeInShort | la cantidad de valores cortos que se copiarán |
Arroja
IllegalArgumentException. | si no se puede copiar el array fuente |
---|
público número entero cargar (grabación de AudioRecord)
Carga los datos más recientes de AudioRecord
sin bloqueos. Solo
admite ENCODING_PCM_16BIT y ENCODING_PCM_FLOAT.
Parámetros
grabar | una instancia de AudioRecord |
---|
Muestra
- la cantidad de valores de audio capturados con un tamaño de
channelCount * sampleCount
. Si no había datos nuevos en AudioRecord o se produjo un error, este método devolverá 0.
Arroja
IllegalArgumentException. | para un formato de codificación de audio no compatible |
---|---|
IllegalStateException | si falló la lectura de AudioRecord |
público anular cargar (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
entrada multicanal, el array se intercala.
|
---|