Define um buffer de anel e algumas funções utilitárias para preparar as amostras de áudio de entrada.
Ele mantém um buffer de toque para dados de entrada de áudio. Os clientes podem alimentar os dados de áudio de entrada pelos métodos `load` e acessar o agregadas de áudio pelo método "getTensorBuffer".
Essa classe só pode processar áudio de entrada em Float (em AudioFormat.ENCODING_PCM_16BIT
) ou Short (em AudioFormat.ENCODING_PCM_FLOAT
). Internamente, ele converte e armazena todo o áudio
em codificação PCM Float.
Uso típico em Kotlin
val tensor = TensorAudio.create(format, modelInputLength) tensor.load(newData) interpreter.run(tensor.getTensorBuffer(), outputBuffer);
Outro exemplo de uso com AudioRecord
val tensor = TensorAudio.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { tensor.load(audioRecord) interpreter.run(tensor.getTensorBuffer(), outputBuffer) }
Classes aninhadas
classe | TensorAudio.TensorAudioFormat | Agrupa 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ática TensorAudio |
create(formato AudioFormat, int sampleCounts)
Cria uma instância
TensorAudio com um buffer de anel com tamanho de sampleCounts *
format.getChannelCount() |
estática TensorAudio |
create(formato TensorAudio.TensorAudioFormat, sampleCounts int)
Cria uma instância
AudioRecord com um buffer de anel com tamanho de sampleCounts * format.getChannels() . |
TensorAudio.TensorAudioFormat | |
TensorBuffer |
getTensorBuffer()
Retorna um
TensorBuffer flutuante com todas as amostras de áudio disponíveis em AudioFormat.ENCODING_PCM_FLOAT , ou seja, |
void |
load(short[] src)
Converte as amostras de áudio de entrada
src em ENCODING_PCM_FLOAT e as armazena no anel
tempo extra. |
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 anel
tempo extra. |
int |
load(registro de AudioRecord)
Carrega os dados mais recentes do
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úblicas estática TensorAudio criar (formato AudioFormat, sampleCounts int)
Cria uma instância TensorAudio
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 fornecidas ao modelo |
públicas estática TensorAudio criar (formato TensorAudio.TensorAudioFormat, sampleCounts int)
Cria uma instância AudioRecord
com um buffer de anel com tamanho de sampleCounts
* format.getChannels()
.
Parâmetros
formato | o TensorAudio.TensorAudioFormat esperado de dados de áudio carregados nessa classe. |
---|---|
sampleCounts | o número de amostras a serem fornecidas ao modelo |
públicas TensorBuffer getTensorBuffer ()
Retorna um TensorBuffer
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].
públicas anular carregar (curto[] src)
Converte as amostras de áudio de entrada src
em ENCODING_PCM_FLOAT e as armazena no anel
tempo extra.
Parâmetros
src | de entrada de amostras de áudio em AudioFormat.ENCODING_PCM_16BIT . Para
em vários canais, a matriz é intercalada.
|
---|
públicas anular carregar (float[] src, int offsetInFloat, int sizeInFloat)
Armazena as amostras de áudio de entrada src
no buffer de anel.
Parâmetros
src | de entrada de amostras de áudio em AudioFormat.ENCODING_PCM_FLOAT . Para
em vários canais, a matriz é intercalada. |
---|---|
offsetInFloat | Posição inicial na matriz src |
sizeInFloat | o número de valores flutuantes a serem copiados |
Gera
IllegalArgumentException | formato de áudio incompatível ou tamanho de entrada incorreto |
---|
públicas anular carregar (short[] src, int offsetInShort, int sizeInShort)
Converte as amostras de áudio de entrada src
em ENCODING_PCM_FLOAT e as armazena no anel
tempo extra.
Parâmetros
src | de entrada de amostras de áudio em AudioFormat.ENCODING_PCM_16BIT . Para
em vários canais, a matriz é intercalada. |
---|---|
offsetInShort | Posição inicial na matriz src |
sizeInShort | o número de valores curtos a serem copiados |
Gera
IllegalArgumentException | quando não é possível copiar a matriz de origem |
---|
públicas int. carregar (gravação de áudio)
Carrega os dados mais recentes do AudioRecord
sem bloqueio. Somente
com suporte para 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 de
channelCount * sampleCount
. Se não houver novos dados no AudioRecord ou se ocorrer um erro, esse método retornará 0.
Gera
IllegalArgumentException | para um formato de codificação de áudio incompatível |
---|---|
IllegalStateException | se a leitura do AudioRecord falhar |
públicas anular carregar (float[] src)
Armazena as amostras de áudio de entrada src
no buffer de anel.
Parâmetros
src | de entrada de amostras de áudio em AudioFormat.ENCODING_PCM_FLOAT . Para
em vários canais, a matriz é intercalada.
|
---|