¡El Día de la Comunidad de ML es el 9 de noviembre! Únase a nosotros para recibir actualizaciones de TensorFlow, JAX, y más Más información

Integrar clasificadores de audio

La clasificación de audio es un caso de uso común de Machine Learning para clasificar los tipos de sonido. Por ejemplo, puede identificar las especies de aves por sus canciones.

El Grupo de Biblioteca AudioClassifier API se puede utilizar para implementar los clasificadores personalizados de audio o los pretrained en su aplicación móvil.

Funciones clave de la API AudioClassifier

  • Procesamiento de audio de entrada, por ejemplo, conversión de codificación PCM de 16 bits a codificación PCM Float y manipulación del búfer de anillo de audio.

  • Etiquetar la configuración regional del mapa.

  • Compatible con el modelo de clasificación de múltiples cabezales.

  • Admite la clasificación de etiqueta única y de etiquetas múltiples.

  • Umbral de puntuación para filtrar los resultados.

  • Resultados de la clasificación Top-k.

  • Etiquetar lista de permitidos y denylist.

Modelos de clasificadores de audio compatibles

Los siguientes modelos están garantizados para ser compatible con el AudioClassifier API.

Ejecutar inferencia en Java

Ver la aplicación de referencia Clasificación de audio para un ejemplo usando AudioClassifier en una aplicación para Android.

Paso 1: importar la dependencia de Gradle y otras configuraciones

Copiar el .tflite archivo del modelo para el directorio activo del módulo de Android en la que se ejecuta el modelo. Especifica que el archivo no se debe comprimir, y añadir la biblioteca TensorFlow Lite para el módulo de build.gradle archivo:

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
    implementation 'org.tensorflow:tensorflow-lite-task-audio:0.2.0'
}

Paso 2: usar el modelo

// Initialization
AudioClassifier classifier = AudioClassifier.createFromFileAndOptions(context, modelFile);

// 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);

Ver el código fuente y javadoc para más opciones para configurar AudioClassifier .

Ejecutar inferencia en 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();

Ver el código fuente para más opciones para configurar AudioClassifier .

Requisitos de compatibilidad del modelo

El AudioClassifier API espera un modelo con TFLite obligatoria TFLite modelo de metadatos . Ver ejemplos de creación de metadatos para los clasificadores de audio utilizando el API escritor TensorFlow Lite metadatos .

Los modelos de clasificadores de audio compatibles deben cumplir los siguientes requisitos:

  • Tensor de audio de entrada (kTfLiteFloat32)

    • clip de audio de tamaño [batch x samples] .
    • No se admite la inferencia por lotes ( batch se requiere que sea 1).
    • para modelos multicanal, los canales deben estar intercalados.
  • Tensor de puntuación de salida (kTfLiteFloat32)

    • [1 x N] matriz con N representa el número de clase.
    • mapa (s) de etiqueta opcional (pero recomendado) como AssociatedFile-s con tipo TENSOR_AXIS_LABELS, que contiene una etiqueta por línea. La primera de tales AssociatedFile (si existe) se utiliza para llenar la label de campo (nombrado como class_name en C ++) de los resultados. El display_name campo se rellena desde el AssociatedFile (si lo hay) cuya configuración regional coincide con el display_names_locale campo de los AudioClassifierOptions utilizados durante la creación ( "en" por defecto, es decir, Inglés). Si ninguno de éstos están disponibles, sólo el index se llenará el campo de los resultados.