طبقه بندی صدا یک مورد استفاده رایج از یادگیری ماشینی برای طبقه بندی انواع صدا است. به عنوان مثال، می تواند گونه های پرنده را با آواز آنها شناسایی کند.
Task Library AudioClassifier
API میتواند برای استقرار طبقهبندیکنندههای صوتی سفارشی یا طبقهبندیکنندههای از پیش آموزشدیدهشده در برنامه تلفن همراه شما استفاده شود.
ویژگی های کلیدی AudioClassifier API
پردازش صوتی ورودی، به عنوان مثال تبدیل کدگذاری PCM 16 بیتی به رمزگذاری PCM Float و دستکاری بافر حلقه صدا.
محل نقشه را برچسب بزنید.
پشتیبانی از مدل طبقه بندی چند سر.
پشتیبانی از طبقه بندی تک برچسبی و چند برچسبی.
آستانه امتیاز برای فیلتر کردن نتایج.
نتایج طبقه بندی Top-k
لیست مجاز و رد لیست را برچسب بزنید.
مدل های طبقه بندی کننده صوتی پشتیبانی شده
سازگاری مدل های زیر با AudioClassifier
API تضمین شده است.
مدلهای ایجاد شده توسط TensorFlow Lite Model Maker برای طبقهبندی صدا .
مدل های طبقه بندی رویدادهای صوتی از پیش آموزش دیده در TensorFlow Hub .
مدل های سفارشی که الزامات سازگاری مدل را برآورده می کنند.
استنتاج را در جاوا اجرا کنید
برای مثال با استفاده از 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
implementation 'org.tensorflow:tensorflow-lite-task-audio:0.4.4'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}
مرحله 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);
برای گزینههای بیشتر برای پیکربندی AudioClassifier
، کد منبع و جاوادوک را ببینید.
استنتاج را در iOS اجرا کنید
مرحله 1: وابستگی ها را نصب کنید
Task Library از نصب با استفاده از CocoaPods پشتیبانی می کند. مطمئن شوید که CocoaPods روی سیستم شما نصب شده است. لطفاً راهنمای نصب CocoaPods را برای دستورالعمل ها ببینید.
لطفاً راهنمای CocoaPods را برای جزئیات بیشتر در مورد افزودن غلاف به پروژه Xcode ببینید.
پاد TensorFlowLiteTaskAudio
را در Podfile اضافه کنید.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskAudio'
end
مطمئن شوید که مدل .tflite
که برای استنتاج استفاده می کنید در بسته نرم افزاری شما وجود دارد.
مرحله 2: استفاده از مدل
سویفت
// Imports
import TensorFlowLiteTaskAudio
import AVFoundation
// Initialization
guard let modelPath = Bundle.main.path(forResource: "sound_classification",
ofType: "tflite") else { return }
let options = AudioClassifierOptions(modelPath: modelPath)
// Configure any additional options:
// options.classificationOptions.maxResults = 3
let classifier = try AudioClassifier.classifier(options: options)
// Create Audio Tensor to hold the input audio samples which are to be classified.
// Created Audio Tensor has audio format matching the requirements of the audio classifier.
// For more details, please see:
// https://github.com/tensorflow/tflite-support/blob/master/tensorflow_lite_support/ios/task/audio/core/audio_tensor/sources/TFLAudioTensor.h
let audioTensor = classifier.createInputAudioTensor()
// Create Audio Record to record the incoming audio samples from the on-device microphone.
// Created Audio Record has audio format matching the requirements of the audio classifier.
// For more details, please see:
https://github.com/tensorflow/tflite-support/blob/master/tensorflow_lite_support/ios/task/audio/core/audio_record/sources/TFLAudioRecord.h
let audioRecord = try classifier.createAudioRecord()
// Request record permissions from AVAudioSession before invoking audioRecord.startRecording().
AVAudioSession.sharedInstance().requestRecordPermission { granted in
if granted {
DispatchQueue.main.async {
// Start recording the incoming audio samples from the on-device microphone.
try audioRecord.startRecording()
// Load the samples currently held by the audio record buffer into the audio tensor.
try audioTensor.load(audioRecord: audioRecord)
// Run inference
let classificationResult = try classifier.classify(audioTensor: audioTensor)
}
}
}
هدف-C
// Imports
#import <TensorFlowLiteTaskAudio/TensorFlowLiteTaskAudio.h>
#import <AVFoundation/AVFoundation.h>
// Initialization
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"sound_classification" ofType:@"tflite"];
TFLAudioClassifierOptions *options =
[[TFLAudioClassifierOptions alloc] initWithModelPath:modelPath];
// Configure any additional options:
// options.classificationOptions.maxResults = 3;
TFLAudioClassifier *classifier = [TFLAudioClassifier audioClassifierWithOptions:options
error:nil];
// Create Audio Tensor to hold the input audio samples which are to be classified.
// Created Audio Tensor has audio format matching the requirements of the audio classifier.
// For more details, please see:
// https://github.com/tensorflow/tflite-support/blob/master/tensorflow_lite_support/ios/task/audio/core/audio_tensor/sources/TFLAudioTensor.h
TFLAudioTensor *audioTensor = [classifier createInputAudioTensor];
// Create Audio Record to record the incoming audio samples from the on-device microphone.
// Created Audio Record has audio format matching the requirements of the audio classifier.
// For more details, please see:
https://github.com/tensorflow/tflite-support/blob/master/tensorflow_lite_support/ios/task/audio/core/audio_record/sources/TFLAudioRecord.h
TFLAudioRecord *audioRecord = [classifier createAudioRecordWithError:nil];
// Request record permissions from AVAudioSession before invoking -[TFLAudioRecord startRecordingWithError:].
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
// Start recording the incoming audio samples from the on-device microphone.
[audioRecord startRecordingWithError:nil];
// Load the samples currently held by the audio record buffer into the audio tensor.
[audioTensor loadAudioRecord:audioRecord withError:nil];
// Run inference
TFLClassificationResult *classificationResult =
[classifier classifyWithAudioTensor:audioTensor error:nil];
});
}
}];
برای گزینه های بیشتر برای پیکربندی TFLAudioClassifier
به کد منبع مراجعه کنید.
استنتاج را در پایتون اجرا کنید
مرحله 1: بسته pip را نصب کنید
pip install tflite-support
- لینوکس: اجرای
sudo apt-get update && apt-get install libportaudio2
- مک و ویندوز: PortAudio به طور خودکار هنگام نصب بسته pip
tflite-support
نصب می شود.
مرحله 2: استفاده از مدل
# Imports
from tflite_support.task import audio
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_path);
std::unique_ptr<AudioClassifier> audio_classifier = AudioClassifier::CreateFromOptions(options).value();
// Create input audio buffer from your `audio_data` and `audio_format`.
// See more information here: tensorflow_lite_support/cc/task/audio/core/audio_buffer.h
int input_size = audio_classifier->GetRequiredInputBufferSize();
const std::unique_ptr<AudioBuffer> audio_buffer =
AudioBuffer::Create(audio_data, input_size, audio_format).value();
// Run inference
const ClassificationResult result = audio_classifier->Classify(*audio_buffer).value();
برای گزینه های بیشتر برای پیکربندی AudioClassifier
به کد منبع مراجعه کنید.
الزامات سازگاری مدل
AudioClassifier
API یک مدل 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
نتایج پر می شود.
- آرایه