دمج المصنفات الصوتية

تصنيف الصوت هو حالة استخدام شائعة لتعلم الآلة لتصنيف أنواع الصوت. على سبيل المثال ، يمكنه التعرف على أنواع الطيور من خلال أغانيهم.

يمكن استخدام واجهة برمجة تطبيقات تصنيف الصوت AudioClassifier المهام لنشر المصنفات الصوتية المخصصة الخاصة بك أو المصنفات المسبقة في تطبيق الهاتف المحمول الخاص بك.

الملامح الرئيسية لواجهة برمجة تطبيقات تصنيف الصوت

  • معالجة صوت الإدخال ، على سبيل المثال تحويل تشفير PCM 16 بت إلى ترميز PCM Float ومعالجة المخزن المؤقت لحلقة الصوت.

  • لغة خريطة التسمية.

  • دعم نموذج التصنيف متعدد الرؤوس.

  • دعم التصنيف الفردي والمتعدد الملصقات.

  • عتبة النتيجة لتصفية النتائج.

  • نتائج تصنيف Top-k.

  • تسمية allowlist و denylist.

نماذج المصنف الصوتي المدعومة

النماذج التالية مضمونة لتكون متوافقة مع AudioClassifier API.

تشغيل الاستدلال في Java

راجع التطبيق المرجعي لتصنيف الصوت للحصول على مثال باستخدام 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.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 .

قم بتشغيل الاستدلال في بايثون

الخطوة 1: قم بتثبيت حزمة النقطة

pip install tflite-support
  • Linux: قم بتشغيل sudo apt-get update && apt-get install libportaudio2
  • Mac و Windows: يتم تثبيت PortAudio تلقائيًا عند تثبيت حزمة نقطة tflite-support .

الخطوة 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 تمثل رقم الفئة.
    • خريطة (خرائط) تسمية اختيارية (لكن موصى بها) كملفات مقترنة بالنوع TENSOR_AXIS_LABELS ، تحتوي على تسمية واحدة في كل سطر. يتم استخدام أول ملف AssociatedFile (إن وجد) لملء حقل label (المسمى class_name في C ++) من النتائج. يتم ملء حقل اسم العرض من ملف AssociatedFile (إن وجد) الذي تتطابق display_names_locale display_name AudioClassifierOptions المستخدمة في وقت الإنشاء ("en" افتراضيًا ، أي الإنجليزية). إذا لم يكن أي منها متاحًا ، فسيتم ملء حقل index الخاص بالنتائج فقط.