ช่วยปกป้อง Great Barrier Reef กับ TensorFlow บน Kaggle เข้าร่วมท้าทาย

รวมตัวแยกประเภทเสียง

การจัดประเภทเสียงเป็นกรณีการใช้งานทั่วไปของ Machine Learning เพื่อจำแนกประเภทเสียง ตัวอย่างเช่น สามารถระบุสายพันธุ์นกได้จากเพลงของพวกมัน

งานห้องสมุด AudioClassifier API สามารถนำมาใช้ในการปรับใช้ลักษณนามเสียงของคุณเองหรือคนที่ pretrained ใน app มือถือของคุณ

คุณสมบัติหลักของ AudioClassifier API

  • อินพุตการประมวลผลเสียง เช่น การแปลงการเข้ารหัส PCM 16 บิตเป็นการเข้ารหัส PCM Float และการจัดการบัฟเฟอร์เสียงกริ่ง

  • ป้ายกำกับสถานที่แผนที่

  • รองรับรูปแบบการจำแนกแบบหลายหัว

  • รองรับการจำแนกประเภทฉลากเดียวและหลายฉลาก

  • เกณฑ์คะแนนเพื่อกรองผลลัพธ์

  • ผลการจัดหมวดหมู่ยอดนิยม

  • ติดป้ายกำกับรายการที่อนุญาตและรายการที่ไม่อนุญาต

รุ่นลักษณนามเสียงที่รองรับ

รุ่นต่อไปนี้จะรับประกันได้ว่าจะเข้ากันได้กับ AudioClassifier API

เรียกใช้การอนุมานใน Java

ดู ตรวจสอบการอ้างอิงและเสียงการจำแนกประเภท เช่นใช้ AudioClassifier ใน Android app

ขั้นตอนที่ 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.3.0'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.3.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

เรียกใช้การอนุมานใน 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

ข้อกำหนดความเข้ากันได้ของรุ่น

AudioClassifier API คาดว่ารูปแบบการ TFLite กับบังคับ TFLite รุ่นเมตาดาต้า ดูตัวอย่างของการสร้างเมตาสำหรับลักษณนามเสียงโดยใช้ นักเขียน API TensorFlow Lite เมตาดาต้า

รุ่นลักษณนามเสียงที่เข้ากันได้ควรเป็นไปตามข้อกำหนดต่อไปนี้:

  • อินพุตเสียงเทนเซอร์ (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 ใช้ในเวลาสร้าง ( "th" โดยค่าเริ่มต้นคือภาษาอังกฤษ) ถ้าไม่มีของเหล่านี้มีอยู่เพียง index ข้อมูลของผลที่จะได้รับการเติมเต็ม