TensorAudio

публичный класс TensorAudio

Определяет кольцевой буфер и некоторые служебные функции для подготовки входных аудиосэмплов.

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

общедоступный TensorAudio.TensorAudioFormat getFormat ()

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