Hari Komunitas ML adalah 9 November! Bergabung dengan kami untuk update dari TensorFlow, JAX, dan lebih Pelajari lebih lanjut

Integrasikan pengklasifikasi audio

Klasifikasi audio adalah kasus penggunaan umum Machine Learning untuk mengklasifikasikan jenis suara. Misalnya, dapat mengidentifikasi spesies burung dengan nyanyian mereka.

Tugas Perpustakaan AudioClassifier API dapat digunakan untuk menyebarkan pengklasifikasi audio yang kustom Anda atau orang pretrained ke aplikasi mobile Anda.

Fitur utama API AudioClassifier

  • Pemrosesan audio input, misalnya mengubah encoding PCM 16 bit ke encoding PCM Float dan manipulasi buffer ring audio.

  • Beri label lokal peta.

  • Mendukung model klasifikasi Multi-head.

  • Mendukung klasifikasi single-label dan multi-label.

  • Ambang skor untuk menyaring hasil.

  • Hasil klasifikasi top-k.

  • Beri label daftar yang diizinkan dan daftar yang ditolak.

Model pengklasifikasi audio yang didukung

Model berikut dijamin akan kompatibel dengan AudioClassifier API.

Jalankan inferensi di Java

Lihat referensi aplikasi Audio Klasifikasi untuk contoh menggunakan AudioClassifier dalam sebuah aplikasi Android.

Langkah 1: Impor ketergantungan Gradle dan pengaturan lainnya

Salin .tflite file model ke direktori aset modul Android di mana model akan dijalankan. Menentukan bahwa file tersebut tidak harus dikompresi, dan menambahkan perpustakaan TensorFlow Lite untuk modul build.gradle berkas:

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'
}

Langkah 2: Menggunakan model

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

Lihat kode sumber dan javadoc untuk lebih banyak pilihan untuk mengkonfigurasi AudioClassifier .

Jalankan inferensi di 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();

Lihat kode sumber untuk lebih banyak pilihan untuk mengkonfigurasi AudioClassifier .

Persyaratan kompatibilitas model

The AudioClassifier API mengharapkan model TFLite dengan wajib TFLite Model Metadata . Lihat contoh menciptakan metadata untuk pengklasifikasi audio yang menggunakan TensorFlow Lite Metadata Penulis API .

Model pengklasifikasi audio yang kompatibel harus memenuhi persyaratan berikut:

  • Masukan audio tensor (kTfLiteFloat32)

    • klip audio dari ukuran [batch x samples] .
    • bets inferensi tidak didukung ( batch diperlukan untuk menjadi 1).
    • untuk model multi-saluran, saluran harus disisipkan.
  • Tensor skor keluaran (kTfLiteFloat32)

    • [1 x N] array dengan N merupakan jumlah kelas.
    • opsional (tetapi disarankan) label peta(s) sebagai AssociatedFile-s dengan jenis TENSOR_AXIS_LABELS, berisi satu label per baris. The AssociatedFile seperti pertama (jika ada) digunakan untuk mengisi label lapangan (disebut sebagai class_name di C ++) hasil. The display_name bidang diisi dari AssociatedFile (jika ada) yang lokal sesuai dengan display_names_locale bidang AudioClassifierOptions digunakan pada waktu penciptaan ( "en" secara default, yaitu bahasa Inggris). Jika tidak ada yang tersedia, hanya index bidang hasilnya akan diisi.