סיווג אודיו הוא מקרה שימוש נפוץ של Machine Learning כדי לסווג את סוגי הצלילים. לדוגמה, הוא יכול לזהות את מיני הציפורים לפי השירים שלהם.
ניתן להשתמש ב-Task Library AudioClassifier
API כדי לפרוס את סווגי האודיו המותאמים אישית שלך או כאלה שהוכשרו מראש באפליקציה לנייד שלך.
תכונות עיקריות של ה-API של AudioClassifier
עיבוד אודיו קלט, למשל המרת קידוד PCM 16 סיביות לקידוד PCM Float ומניפולציה של מאגר טבעת האודיו.
תווית אזור מפה.
תומך במודל סיווג רב ראשי.
תומך הן בסיווג של תווית אחת והן בסיווג רב תווית.
ציון סף לסינון תוצאות.
תוצאות הסיווג העליון-k.
תווית רשימת היתרים ורשימת דחייה.
דגמי סיווג אודיו נתמכים
מובטח שהדגמים הבאים יהיו תואמים ל- AudioClassifier
API.
מודלים שנוצרו על ידי TensorFlow Lite Model Maker לסיווג אודיו .
דגמים מותאמים אישית העומדים בדרישות תאימות המודל .
הפעל הסקה ב-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
של התוצאות יתמלא.
- מערך