AudioData

общедоступный класс AudioData

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

Он поддерживает кольцевой буфер для хранения входных аудиоданных. Клиенты могут подавать входные аудиоданные с помощью методов 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, int sampleCounts)
Создает экземпляр AudioData с кольцевым буфером, размер которого равен sampleCounts * format.getChannelCount() .
плавать[]
получитьбуфер ()
Возвращает массив с плавающей запятой, содержащий все доступные аудиосэмплы в 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 ()

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

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