Google I/O הוא עטיפה! התעדכן בהפעלות של TensorFlow. צפה בהפעלות

שלב מסווגי אודיו

סיווג אודיו הוא מקרה שימוש נפוץ של Machine Learning כדי לסווג את סוגי הצלילים. לדוגמה, הוא יכול לזהות את מיני הציפורים לפי השירים שלהם.

ניתן להשתמש ב-Task Library AudioClassifier API כדי לפרוס את סווגי האודיו המותאמים אישית שלך או כאלה שהוכשרו מראש באפליקציה לנייד שלך.

תכונות עיקריות של ה-API של AudioClassifier

  • עיבוד אודיו קלט, למשל המרת קידוד PCM 16 סיביות לקידוד PCM Float ומניפולציה של מאגר טבעת האודיו.

  • תווית אזור מפה.

  • תומך במודל סיווג רב ראשי.

  • תומך הן בסיווג של תווית אחת והן בסיווג רב תווית.

  • ציון סף לסינון תוצאות.

  • תוצאות הסיווג העליון-k.

  • תווית רשימת היתרים ורשימת דחייה.

דגמי סיווג אודיו נתמכים

מובטח שהדגמים הבאים יהיו תואמים ל- AudioClassifier API.

הפעל הסקה ב-Java

עיין באפליקציית ההפניה לסיווג אודיו לקבלת דוגמה לשימוש ב- AudioClassifier באפליקציית Android.

שלב 1: ייבא תלות Gradle והגדרות אחרות

העתק את קובץ דגם ה-. .tflite הנכסים של מודול האנדרואיד שבו המודל יופעל. ציין שאין לדחוס את הקובץ, והוסף את ספריית 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.4.0'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.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 .

הפעל מסקנות ב- Python

שלב 1: התקן את חבילת ה-pip

pip install tflite-support
  • לינוקס: הפעל sudo apt-get update && apt-get install libportaudio2
  • Mac ו-Windows: PortAudio מותקן אוטומטית בעת התקנת tflite-support pip.

שלב 2: שימוש במודל

# Imports
from tflite_support.task import vision
from tflite_support.task import core
from tflite_support.task import processor

# Initialization
base_options = core.BaseOptions(file_name=model_path)
classification_options = processor.ClassificationOptions(max_results=2)
options = audio.AudioClassifierOptions(base_options=base_options, classification_options=classification_options)
classifier = audio.AudioClassifier.create_from_options(options)

# Alternatively, you can create an audio classifier in the following manner:
# classifier = audio.AudioClassifier.create_from_file(model_path)

# Run inference
audio_file = audio.TensorAudio.create_from_wav_file(audio_path, classifier.required_input_buffer_size)
audio_result = classifier.classify(audio_file)

עיין בקוד המקור לקבלת אפשרויות נוספות להגדרת 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 .

דרישות תאימות לדגם

ה-API של AudioClassifier מצפה למודל TFLite עם מטא נתונים חובה של מודל TFLite . ראה דוגמאות ליצירת מטא נתונים עבור מסווגי אודיו באמצעות TensorFlow Lite Metadata Writer API .

דגמי סיווג האודיו התואמים צריכים לעמוד בדרישות הבאות:

  • טנזור אודיו קלט (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 המשמשים בזמן היצירה ("en" כברירת מחדל, כלומר אנגלית). אם אף אחד מאלה אינו זמין, רק שדה index של התוצאות יתמלא.