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 dados de áudio de entrada. Os clientes podem alimentar dados de áudio de entrada por meio do método `load` e acessar as amostras de áudio agregadas por meio do método `getTensorBuffer`.
Observe que esta classe só pode manipular áudio de entrada em Float (em AudioFormat.ENCODING_PCM_16BIT
) ou Short (em AudioFormat.ENCODING_PCM_FLOAT
). Internamente ele converte e armazena todas as amostras de áudio na 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
aula | TensorAudio.TensorAudioFormat | Envolve algumas constantes que descrevem o formato das amostras de áudio recebidas, nomeadamente o número de canais e a taxa de amostragem. |
Métodos Públicos
TensorAudio estático | criar (formato AudioFormat, int sampleCounts) Cria uma instância TensorAudio com um buffer de anel cujo tamanho é sampleCounts * format.getChannelCount() . |
TensorAudio estático | criar (formato TensorAudio.TensorAudioFormat , int sampleCounts) Cria uma instância AudioRecord com um buffer de anel cujo tamanho é sampleCounts * format.getChannels() . |
TensorAudio.TensorAudioFormat | getFormat () |
TensorBuffer | getTensorBuffer () Retorna um TensorBuffer flutuante contendo todas as amostras de áudio disponíveis em AudioFormat.ENCODING_PCM_FLOAT , ou seja |
vazio | carregar (curto[] src) Converte as amostras de áudio de entrada src em ENCODING_PCM_FLOAT e as armazena no buffer de anel. |
vazio | carregar (float[] src, int offsetInFloat, int sizeInFloat) Armazena as amostras de áudio de entrada src no buffer de anel. |
vazio | carregar (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. |
interno | carregar (registro AudioRecord) Carrega os dados mais recentes do AudioRecord de forma sem bloqueio. |
vazio | carregar (float[]src) Armazena as amostras de áudio de entrada src no buffer de anel. |
Métodos herdados
Métodos Públicos
criação pública estática do TensorAudio (formato AudioFormat, int sampleCounts)
Cria uma instância TensorAudio
com um buffer de anel cujo tamanho é sampleCounts
* format.getChannelCount()
.
Parâmetros
formatar | o AudioFormat exigido pelo modelo TFLite. Ele define o número de canais e a taxa de amostragem. |
---|---|
amostraCounts | o número de amostras a serem alimentadas no modelo |
criação pública estática do TensorAudio (formato TensorAudio.TensorAudioFormat , int sampleCounts)
Cria uma instância AudioRecord
com um buffer de anel cujo tamanho é sampleCounts
* format.getChannels()
.
Parâmetros
formatar | o TensorAudio.TensorAudioFormat esperado de dados de áudio carregados nesta classe. |
---|---|
amostraCounts | o número de amostras a serem alimentadas no modelo |
TensorBuffer público getTensorBuffer ()
Retorna um TensorBuffer
flutuante contendo todas as amostras de áudio disponíveis em AudioFormat.ENCODING_PCM_FLOAT
, ou seja, os valores estão no intervalo de [-1, 1].
carga nula pública (short[] src)
Converte as amostras de áudio de entrada src
em ENCODING_PCM_FLOAT e as armazena no buffer de anel.
Parâmetros
fonte | insira amostras de áudio em AudioFormat.ENCODING_PCM_16BIT . Para entrada multicanal, a matriz é intercalada. |
---|
carga pública nula (float[] src, int offsetInFloat, int sizeInFloat)
Armazena as amostras de áudio de entrada src
no buffer de anel.
Parâmetros
fonte | insira amostras de áudio em AudioFormat.ENCODING_PCM_FLOAT . Para entrada multicanal, a matriz é intercalada. |
---|---|
deslocamentoInFloat | posição inicial na matriz src |
tamanhoInFloat | o número de valores flutuantes a serem copiados |
Lança
Exceção de argumento ilegal | para formato de áudio incompatível ou tamanho de entrada incorreto |
---|
carga nula pública (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
fonte | insira amostras de áudio em AudioFormat.ENCODING_PCM_16BIT . Para entrada multicanal, a matriz é intercalada. |
---|---|
deslocamentoInShort | posição inicial na matriz src |
tamanhoInShort | o número de valores curtos a serem copiados |
Lança
Exceção de argumento ilegal | se a matriz de origem não puder ser copiada |
---|
carregamento interno público (registro AudioRecord)
Carrega os dados mais recentes do AudioRecord
de forma sem bloqueio. Suporta apenas ENCODING_PCM_16BIT e ENCODING_PCM_FLOAT.
Parâmetros
registro | uma instância de AudioRecord |
---|
Devoluções
- número de valores de áudio capturados cujo tamanho é
channelCount * sampleCount
. Se não houver novos dados no AudioRecord ou ocorrer um erro, este método retornará 0.
Lança
Exceção de argumento ilegal | para formato de codificação de áudio não suportado |
---|---|
IllegalStateException | se a leitura do AudioRecord falhou |
carga nula pública (float[] src)
Armazena as amostras de áudio de entrada src
no buffer de anel.
Parâmetros
fonte | insira amostras de áudio em AudioFormat.ENCODING_PCM_FLOAT . Para entrada multicanal, a matriz é intercalada. |
---|