Определяет кольцевой буфер и некоторые служебные функции для подготовки входных аудиосэмплов.
Он поддерживает кольцевой буфер для хранения входных аудиоданных. Клиенты могут подавать входные аудиоданные с помощью методов 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 . Для многоканального ввода массив чередуется. |
|---|