AudioData

classe pública AudioData

Define um buffer de anel e algumas funções utilitárias para preparar as amostras de áudio de entrada.

Ele mantém um Ring Buffer para armazenar os dados de áudio de entrada. Os clientes podem alimentar os dados de áudio de entrada com métodos "load" e acessar as amostras de áudio agregadas pelo método "getTensorBuffer".

Observe que essa classe só pode processar áudio de entrada em Float (em AudioFormat.ENCODING_PCM_16BIT) ou Short (em AudioFormat.ENCODING_PCM_FLOAT). Internamente, ela converte e armazena todas as amostras de áudio na codificação PCM Float.

Uso típico no Kotlin

   val audioData = AudioData.create(format, modelInputLength)
   audioData.load(newData)
 

Outro exemplo de uso com AudioRecord

   val audioData = AudioData.create(format, modelInputLength)
   Timer().scheduleAtFixedRate(delay, period) {
     audioData.load(audioRecord)
   }
 

Classes aninhadas

classe AudioData.AudioDataFormat Une algumas constantes que descrevem o formato das amostras de áudio recebidas, ou seja, o número de canais e a taxa de amostragem. 

Métodos públicos

estático AudioData
create(formato AudioData.AudioDataFormat, int sampleCounts)
Cria uma instância AudioRecord com um buffer de anel com tamanho sampleCounts * format.getNumOfChannels().
estático AudioData
create(formato do AudioFormat, int sampleCounts)
Cria uma instância AudioData com um buffer de anel com tamanho de sampleCounts * format.getChannelCount().
float[]
Função getBuffer()
Retorna uma matriz flutuante com todas as amostras de áudio disponíveis em AudioFormat.ENCODING_PCM_FLOAT, ou seja,
int
AudioData.AudioDataFormat
void
load(curto[] src)
Converte as amostras de áudio de entrada src em ENCODING_PCM_FLOAT e as armazena no buffer de anel.
void
load(float[] src, int offsetInFloat, int sizeInFloat)
Armazena as amostras de áudio de entrada src no buffer de anel.
void
load(short[] src, int offsetInShort, int sizeInShort)
Converte as amostras de áudio de entrada src em ENCODING_PCM_FLOAT e as armazena no buffer de anel.
int
load(gravação de AudioRecord)
Carrega os dados mais recentes da AudioRecord sem bloqueio.
void
load(float[] src)
Armazena as amostras de áudio de entrada src no buffer de anel.

Métodos herdados

Métodos públicos

público estático AudioData create (formato AudioData.AudioDataFormat, int sampleCounts)

Cria uma instância AudioRecord com um buffer de anel com tamanho sampleCounts * format.getNumOfChannels().

Parâmetros
formato a AudioData.AudioDataFormat esperada de dados de áudio carregados nessa classe.
sampleCounts o número de amostras.

público estático AudioData criar (formato AudioFormat, int sampleCounts)

Cria uma instância AudioData com um buffer de anel com tamanho de sampleCounts * format.getChannelCount().

Parâmetros
formato o AudioFormat exigido pelo modelo do TFLite. Ele define o número de canais e a taxa de amostragem.
sampleCounts o número de amostras a serem alimentadas no modelo

public float[] getBuffer ()

Retorna uma matriz flutuante com todas as amostras de áudio disponíveis em AudioFormat.ENCODING_PCM_FLOAT, ou seja, os valores estão no intervalo de [-1, 1].

public int getBufferLength ()

público AudioData.AudioDataFormat getFormat ()

public void load (short[] src)

Converte as amostras de áudio de entrada src em ENCODING_PCM_FLOAT e as armazena no buffer de anel.

Parâmetros
src amostras de áudio de entrada em AudioFormat.ENCODING_PCM_16BIT. Para entrada multicanal, a matriz é intercalada.

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

Armazena as amostras de áudio de entrada src no buffer de anel.

Parâmetros
src amostras de áudio de entrada em AudioFormat.ENCODING_PCM_FLOAT. Para entrada multicanal, a matriz é intercalada.
offsetInFloat posição inicial na matriz src
sizeInFloat o número de valores flutuantes a serem copiados
Gera
IllegalArgumentException devido a formato de áudio incompatível ou tamanho de entrada incorreto

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

Converte as amostras de áudio de entrada src em ENCODING_PCM_FLOAT e as armazena no buffer de anel.

Parâmetros
src amostras de áudio de entrada em AudioFormat.ENCODING_PCM_16BIT. Para entrada multicanal, a matriz é intercalada.
offsetInShort posição inicial na matriz src
sizeInShort o número de valores curtos a serem copiados
Gera
IllegalArgumentException se a matriz de origem não puder ser copiada

public int load (registro AudioRecord)

Carrega os dados mais recentes da AudioRecord sem bloqueio. Compatível apenas com ENCODING_PCM_16BIT e ENCODING_PCM_FLOAT.

Parâmetros
registro uma instância de AudioRecord
Retorna
  • número de valores de áudio capturados com tamanho channelCount * sampleCount. Se não houver novos dados no AudioRecord ou se ocorrer um erro, esse método retornará 0.
Gera
IllegalArgumentException para formato de codificação de áudio incompatível
IllegalStateException se a leitura do AudioRecord falhar

public void load (float[] src)

Armazena as amostras de áudio de entrada src no buffer de anel.

Parâmetros
src amostras de áudio de entrada em AudioFormat.ENCODING_PCM_FLOAT. Para entrada multicanal, a matriz é intercalada.