Определяет кольцевой буфер и некоторые служебные функции для подготовки входных аудиосэмплов.
Он поддерживает кольцевой буфер для хранения входных аудиоданных. Клиенты могут подавать входные аудиоданные с помощью методов load и получать доступ к агрегированным аудиосэмплам с помощью метода getTensorBuffer.
Обратите внимание, что этот класс может обрабатывать входной звук только в формате Float (в AudioFormat.ENCODING_PCM_16BIT
) или Short (в AudioFormat.ENCODING_PCM_FLOAT
). Внутри он преобразует и сохраняет все аудиосэмплы в кодировке PCM Float.
Типичное использование в Котлине
val audioData = AudioData.create(format, modelInputLength) audioData.load(newData)
Еще один пример использования AudioRecord
val audioData = AudioData.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { audioData.load(audioRecord) }
Вложенные классы
сорт | AudioData.AudioDataFormat | Обертывает несколько констант, описывающих формат входящих аудиосэмплов, а именно количество каналов и частоту дискретизации. |
Публичные методы
статические аудиоданные | создать (формат AudioData.AudioDataFormat , int sampleCounts) Создает экземпляр AudioRecord с кольцевым буфером, размер которого равен sampleCounts * format.getNumOfChannels() . |
статические аудиоданные | |
плавать[] | получитьбуфер () Возвращает массив с плавающей запятой, содержащий все доступные аудиосэмплы в AudioFormat.ENCODING_PCM_FLOAT , т.е. |
интервал | |
AudioData.AudioDataFormat | |
пустота | загрузить (короткий [] источник) Преобразует входные аудиовыборки src в ENCODING_PCM_FLOAT, а затем сохраняет их в кольцевом буфере. |
пустота | загрузить (float[] src, int offsetInFloat, int sizeInFloat) Сохраняет входные аудиосэмплы src в кольцевом буфере. |
пустота | загрузить (short[] src, int offsetInShort, int sizeInShort) Преобразует входные аудиовыборки src в ENCODING_PCM_FLOAT, а затем сохраняет их в кольцевом буфере. |
интервал | загрузить (запись AudioRecord) Загружает последние данные из AudioRecord неблокирующим способом. |
пустота | загрузить (источник с плавающей запятой[]) Сохраняет входные аудиосэмплы src в кольцевом буфере. |
Унаследованные методы
Публичные методы
общедоступное статическое создание AudioData (формат AudioData.AudioDataFormat , int sampleCounts)
Создает экземпляр AudioRecord
с кольцевым буфером, размер которого равен sampleCounts
* format.getNumOfChannels()
.
Параметры
формат | ожидаемый AudioData.AudioDataFormat аудиоданных, загруженных в этот класс. |
---|---|
количество образцов | количество образцов. |
общедоступное статическое создание AudioData (формат AudioFormat, int sampleCounts)
Создает экземпляр AudioData
с кольцевым буфером, размер которого равен sampleCounts
* format.getChannelCount()
.
Параметры
формат | AudioFormat необходимый для модели TFLite. Он определяет количество каналов и частоту дискретизации. |
---|---|
SampleCounts | количество образцов, которые будут загружены в модель |
public float[] getBuffer ()
Возвращает массив с плавающей запятой, содержащий все доступные аудиосэмплы в AudioFormat.ENCODING_PCM_FLOAT
, т.е. значения находятся в диапазоне [-1, 1].
public int getBufferLength ()
публичная пустая загрузка (short[] src)
Преобразует входные аудиовыборки src
в ENCODING_PCM_FLOAT, а затем сохраняет их в кольцевом буфере.
Параметры
источник | введите образцы аудио в AudioFormat.ENCODING_PCM_16BIT . Для многоканального ввода массив чередуется. |
---|
общедоступная недействительная загрузка (float[] src, int offsetInFloat, int sizeInFloat)
Сохраняет входные аудиосэмплы src
в кольцевом буфере.
Параметры
источник | введите образцы аудио в AudioFormat.ENCODING_PCM_FLOAT . Для многоканального ввода массив чередуется. |
---|---|
offsetInFloat | начальная позиция в массиве src |
размерInFloat | количество значений с плавающей запятой, которые нужно скопировать |
Броски
IllegalArgumentException | из-за несовместимого аудиоформата или неправильного входного размера |
---|
общедоступная недействительная загрузка (short[] src, int offsetInShort, int sizeInShort)
Преобразует входные аудиовыборки src
в ENCODING_PCM_FLOAT, а затем сохраняет их в кольцевом буфере.
Параметры
источник | введите образцы аудио в AudioFormat.ENCODING_PCM_16BIT . Для многоканального ввода массив чередуется. |
---|---|
смещениеInShort | начальная позиция в массиве src |
размерInShort | количество коротких значений, которые нужно скопировать |
Броски
IllegalArgumentException | если исходный массив не может быть скопирован |
---|
public int load (запись AudioRecord)
Загружает последние данные из AudioRecord
неблокирующим способом. Поддерживаются только ENCODING_PCM_16BIT и ENCODING_PCM_FLOAT.
Параметры
записывать | экземпляр AudioRecord |
---|
Возврат
- количество захваченных аудиозначений, размер которых равен
channelCount * sampleCount
. Если в AudioRecord не было новых данных или произошла ошибка, этот метод вернет 0.
Броски
IllegalArgumentException | для неподдерживаемого формата кодирования звука |
---|---|
IllegalStateException | если чтение из AudioRecord не удалось |
общедоступная пустая загрузка (float[] src)
Сохраняет входные аудиосэмплы src
в кольцевом буфере.
Параметры
источник | введите образцы аудио в AudioFormat.ENCODING_PCM_FLOAT . Для многоканального ввода массив чередуется. |
---|