Определяет кольцевой буфер и некоторые служебные функции для подготовки входных аудиосэмплов.
Он поддерживает кольцевой буфер для хранения входных аудиоданных. Клиенты могут подавать входные аудиоданные с помощью методов load и получать доступ к агрегированным аудиосэмплам с помощью метода getTensorBuffer.
Обратите внимание, что этот класс может обрабатывать входной звук только в формате Float (в AudioFormat.ENCODING_PCM_16BIT
) или Short (в AudioFormat.ENCODING_PCM_FLOAT
). Внутри он преобразует и сохраняет все аудиосэмплы в кодировке PCM Float.
Типичное использование в Котлине
val tensor = TensorAudio.create(format, modelInputLength) tensor.load(newData) interpreter.run(tensor.getTensorBuffer(), outputBuffer);
Еще один пример использования AudioRecord
val tensor = TensorAudio.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { tensor.load(audioRecord) interpreter.run(tensor.getTensorBuffer(), outputBuffer) }
Вложенные классы
сорт | TensorAudio.TensorAudioFormat | Обертывает несколько констант, описывающих формат входящих аудиосэмплов, а именно количество каналов и частоту дискретизации. |
Публичные методы
статический TensorAudio | создать (формат AudioFormat, int sampleCounts) Создает экземпляр TensorAudio с кольцевым буфером, размер которого равен sampleCounts * format.getChannelCount() . |
статический TensorAudio | создать (формат TensorAudio.TensorAudioFormat , int sampleCounts) Создает экземпляр AudioRecord с кольцевым буфером, размер которого равен sampleCounts * format.getChannels() . |
TensorAudio.TensorAudioFormat | |
ТензорБуфер | getTensorBuffer () Возвращает TensorBuffer с плавающей запятой, содержащий все доступные аудиосэмплы в AudioFormat.ENCODING_PCM_FLOAT , т.е. |
пустота | загрузить (короткий [] источник) Преобразует входные аудиовыборки src в ENCODING_PCM_FLOAT, а затем сохраняет их в кольцевом буфере. |
пустота | загрузить (float[] src, int offsetInFloat, int sizeInFloat) Сохраняет входные аудиосэмплы src в кольцевом буфере. |
пустота | загрузить (short[] src, int offsetInShort, int sizeInShort) Преобразует входные аудиовыборки src в ENCODING_PCM_FLOAT, а затем сохраняет их в кольцевом буфере. |
интервал | загрузить (запись AudioRecord) Загружает последние данные из AudioRecord неблокирующим способом. |
пустота | загрузить (источник с плавающей запятой[]) Сохраняет входные аудиосэмплы src в кольцевом буфере. |
Унаследованные методы
Публичные методы
public static TensorAudio create (формат AudioFormat, int sampleCounts)
Создает экземпляр TensorAudio
с кольцевым буфером, размер которого равен sampleCounts
* format.getChannelCount()
.
Параметры
формат | AudioFormat необходимый для модели TFLite. Он определяет количество каналов и частоту дискретизации. |
---|---|
количество образцов | количество образцов, которые будут загружены в модель |
public static TensorAudio create (формат TensorAudio.TensorAudioFormat , int sampleCounts)
Создает экземпляр AudioRecord
с кольцевым буфером, размер которого равен sampleCounts
* format.getChannels()
.
Параметры
формат | ожидаемый TensorAudio.TensorAudioFormat аудиоданных, загруженных в этот класс. |
---|---|
количество образцов | количество образцов, которые будут загружены в модель |
общедоступный TensorBuffer getTensorBuffer ()
Возвращает TensorBuffer
с плавающей запятой, содержащий все доступные аудиосэмплы в AudioFormat.ENCODING_PCM_FLOAT
, т.е. значения находятся в диапазоне [-1, 1].
общедоступная пустая загрузка (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 . Для многоканального ввода массив чередуется. |
---|