Помогают защитить Большой Барьерный Риф с TensorFlow на Kaggle Присоединяйтесь вызов

Интегрировать аудио классификаторы

Классификация аудио - это распространенный вариант использования машинного обучения для классификации типов звука. Например, он может идентифицировать виды птиц по их песням.

Целевая библиотека AudioClassifier API может быть использован для развертывания пользовательских аудио классификаторов или pretrained те , в мобильное приложение.

Ключевые особенности API AudioClassifier

  • Обработка входного аудиосигнала, например преобразование 16-битного PCM-кодирования в PCM-кодирование с плавающей запятой и управление кольцевым звуковым буфером.

  • Отметьте язык карты.

  • Поддержка модели классификации с несколькими головками.

  • Поддержка как однокомпонентной, так и многокомпонентной классификации.

  • Порог оценки для фильтрации результатов.

  • Результаты классификации Top-k.

  • Отметьте список разрешенных и денилистов.

Поддерживаемые модели аудиоклассификаторов

Следующие модели гарантированно будут совместимы с AudioClassifier API.

Выполнить вывод в Java

См ссылочного приложения Audio Классификации в качестве примера используется AudioClassifier в приложении Android.

Шаг 1. Импортируйте зависимость Gradle и другие настройки

Скопируйте .tflite файл модели в каталоге ресурсов в Android модуля , в котором будет запущена модель. Указывает , что файл не должен быть сжат, и добавить библиотеку TensorFlow Lite для модуля build.gradle файла:

android {
    // Other settings

    // Specify that the tflite file should not be compressed when building the APK package.
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Audio Task Library dependency (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-audio:0.3.0'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.3.0'
}

Шаг 2: Использование модели

// Initialization
AudioClassifierOptions options =
    AudioClassifierOptions.builder()
        .setBaseOptions(BaseOptions.builder().useGpu().build())
        .setMaxResults(1)
        .build();
AudioClassifier classifier =
    AudioClassifier.createFromFileAndOptions(context, modelFile, options);

// Start recording
AudioRecord record = classifier.createAudioRecord();
record.startRecording();

// Load latest audio samples
TensorAudio audioTensor = classifier.createInputTensorAudio();
audioTensor.load(record);

// Run inference
List<Classifications> results = audioClassifier.classify(audioTensor);

Смотрите исходный код и Javadoc для большего количества опций для настройки AudioClassifier .

Выполнить вывод в C ++

// Initialization
AudioClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<AudioClassifier> audio_classifier = AudioClassifier::CreateFromOptions(options).value();

// Create input audio buffer from data.
int input_buffer_size = audio_classifier->GetRequiredInputBufferSize();
const std::unique_ptr<AudioBuffer> audio_buffer =
    AudioBuffer::Create(audio_data.get(), input_buffer_size, kAudioFormat).value();

// Run inference
const ClassificationResult result = audio_classifier->Classify(*audio_buffer).value();

Смотрите исходный код для более опций для настройки AudioClassifier .

Требования к совместимости моделей

AudioClassifier API ожидает , что модель TFLite с обязательным TFLite модели метаданных . Смотрите примеры создания метаданных для аудио классификаторов с использованием Writer API TensorFlow Lite метаданных .

Совместимые модели аудиоклассификаторов должны соответствовать следующим требованиям:

  • Входной звуковой тензор (kTfLiteFloat32)

    • аудио - клип размера [batch x samples] .
    • пакетный вывод не поддерживается ( batch требуется , чтобы быть 1).
    • для многоканальных моделей каналы необходимо чередовать.
  • Тензор результатов оценки (kTfLiteFloat32)

    • [1 x N] массив с N представляет номер класса.
    • необязательные (но рекомендуемые) карты меток как AssociatedFile-s с типом TENSOR_AXIS_LABELS, содержащие по одной метке на строку. Первый такой AssociatedFile (если таковые имеются) используется , чтобы заполнить label поля (названный как class_name в C ++) результатов. display_name поле заполняется из AssociatedFile (если таковые имеются) , чьи локаль соответствует display_names_locale поле из AudioClassifierOptions , используемых при создании ( «эн» по умолчанию, то есть английский язык). Если ни один из них не доступны, только index поля результатов будут заполнены.