Define un búfer de anillo y algunas funciones de utilidad para preparar las muestras de audio de entrada.
Conserva un Búfer de anillo para almacenar 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.
|
|---|