Detyra MediaPipe Audio Classifier ju lejon të kryeni klasifikimin e të dhënave audio. Ju mund ta përdorni këtë detyrë për të identifikuar ngjarjet zanore nga një grup kategorish të trajnuara. Këto udhëzime ju tregojnë se si të përdorni Klasifikuesin Audio me Python.
Për më shumë informacion rreth aftësive, modeleve dhe opsioneve të konfigurimit të kësaj detyre, shihni Përmbledhjen .
Shembull kodi
Shembulli i kodit për Klasifikuesin Audio ofron një zbatim të plotë të kësaj detyre në Python për referencën tuaj. Ky kod ju ndihmon të testoni këtë detyrë dhe të filloni ndërtimin e klasifikuesit tuaj audio. Mund të shikoni, ekzekutoni dhe modifikoni kodin e shembullit të Klasifikuesit Audio duke përdorur vetëm shfletuesin tuaj të internetit me Google Colab. Mund ta shikoni kodin burimor për këtë shembull në GitHub .
Nëse po zbatoni Klasifikuesin Audio për Raspberry Pi, referojuni shembullit të aplikacionit Raspberry Pi .
Konfigurimi
Ky seksion përshkruan hapat kryesorë për konfigurimin e mjedisit tuaj të zhvillimit dhe projekteve të kodit në mënyrë specifike për të përdorur Klasifikuesin Audio. Për informacion të përgjithshëm mbi konfigurimin e mjedisit tuaj të zhvillimit për përdorimin e detyrave të MediaPipe, duke përfshirë kërkesat e versionit të platformës, shihni udhëzuesin e konfigurimit për Python .
Paketat
Detyra e Klasifikuesit të audios në paketën pip mediapipe. Mund ta instaloni varësinë me sa vijon:
$ python -m pip install mediapipe
Importet
Importoni klasat e mëposhtme për të hyrë në funksionet e detyrave të Klasifikuesit të audios:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import audio
Model
Detyra MediaPipe Audio Classifier kërkon një model të trajnuar që është në përputhje me këtë detyrë. Për më shumë informacion mbi modelet e disponueshme të trajnuara për Klasifikuesin Audio, shihni seksionin Modelet e përmbledhjes së detyrave.
Zgjidhni dhe shkarkoni një model dhe më pas ruajeni në një direktori lokale. Ju mund të përdorni modelin e rekomanduar Yamnet .
model_path = '/absolute/path/to/lite-model_yamnet_classification_tflite_1.tflite'
Specifikoni rrugën e modelit brenda parametrit Emri i modelit, siç tregohet më poshtë:
base_options = BaseOptions(model_asset_path=model_path)
Krijo detyrën
Përdorni funksionin create_from_options
për të krijuar detyrën. Funksioni create_from_options
pranon opsionet e konfigurimit duke përfshirë modalitetin e ekzekutimit, vendndodhjen e emrave të shfaqur, numrin maksimal të rezultateve, pragun e besimit, listën e lejimit të kategorive dhe listën e mohimit. Për më shumë informacion mbi opsionet e konfigurimit, shihni Përmbledhjen e konfigurimit .
Detyra "Klasifikuesi i audios" mbështet klipet audio dhe transmetimet audio si hyrje. Duhet të specifikoni mënyrën e ekzekutimit që korrespondon me llojin tuaj të të dhënave hyrëse kur krijoni detyrën. Zgjidhni skedën që korrespondon me llojin tuaj të të dhënave hyrëse për të parë se si të krijoni detyrën dhe të ekzekutoni konkluzionet.
Klipe audio
AudioClassifier = mp.tasks.audio.AudioClassifier AudioClassifierOptions = mp.tasks.audio.AudioClassifierOptions AudioRunningMode = mp.tasks.audio.RunningMode BaseOptions = mp.tasks.BaseOptions options = AudioClassifierOptions( base_options=BaseOptions(model_asset_path='/path/to/model.tflite'), max_results=5, running_mode=AudioRunningMode.AUDIO_CLIPS) with AudioClassifier.create_from_options(options) as classifier: # The classifier is initialized. Use it here. # ...
Transmetimi i audios
AudioClassifier = mp.tasks.audio.AudioClassifier AudioClassifierOptions = mp.tasks.audio.AudioClassifierOptions AudioClassifierResult = mp.tasks.audio.AudioClassifierResult AudioRunningMode = mp.tasks.audio.RunningMode BaseOptions = mp.tasks.BaseOptions def print_result(result: AudioClassifierResult, timestamp_ms: int): print(AudioClassifierResult result: {}’.format(result)) options = AudioClassifierOptions( base_options=BaseOptions(model_asset_path='/path/to/model.tflite'), running_mode=AudioRunningMode.AUDIO_STREAM, max_results=5, result_callback=print_result) with AudioClassifier.create_from_options(options) as classifier: # The classifier is initialized. Use it here. # ...
Për një shembull të plotë të krijimit të një Klasifikuesi Audio për përdorim me audio, shihni shembullin e kodit .
Opsionet e konfigurimit
Kjo detyrë ka opsionet e mëposhtme të konfigurimit për aplikacionet Python:
Emri i opsionit | Përshkrimi | Gama e vlerave | Vlera e paracaktuar |
---|---|---|---|
running_mode | Vendos modalitetin e ekzekutimit për detyrën. Klasifikuesi i audios ka dy mënyra: AUDIO_CLIPS: Mënyra për ekzekutimin e detyrës audio në klipe audio të pavarura. AUDIO_STREAM: Modaliteti për ekzekutimin e detyrës audio në një transmetim audio, si p.sh. nga mikrofoni. Në këtë modalitet, resultListener duhet të thirret për të vendosur një dëgjues për të marrë rezultatet e klasifikimit në mënyrë asinkrone. | { AUDIO_CLIPS, AUDIO_STREAM } | AUDIO_CLIPS |
display_names_locale | Vendos gjuhën e etiketave për t'u përdorur për emrat e shfaqur të dhëna në meta të dhënat e modelit të detyrës, nëse disponohet. Parazgjedhja është en për anglisht. Ju mund të shtoni etiketa të lokalizuara në meta të dhënat e një modeli të personalizuar duke përdorur API-në e shkrimtarit metadata TensorFlow Lite | Kodi lokal | sq |
max_results | Vendos numrin maksimal opsional të rezultateve të klasifikimit me pikët më të mira për t'u kthyer. Nëse < 0, të gjitha rezultatet e disponueshme do të kthehen. | Çdo numër pozitiv | -1 |
score_threshold | Vendos pragun e rezultatit të parashikimit që tejkalon atë të dhënë në meta të dhënat e modelit (nëse ka). Rezultatet nën këtë vlerë refuzohen. | [0.0, 1.0] | Nuk është vendosur |
category_allowlist | Vendos listën opsionale të emrave të kategorive të lejuara. Nëse nuk janë bosh, rezultatet e klasifikimit emri i kategorisë së të cilave nuk është në këtë grup do të filtrohen. Emrat e kopjuar ose të panjohur të kategorive shpërfillen. Ky opsion është reciprokisht ekskluziv me category_denylist dhe duke përdorur të dyja rezultatet në një gabim. | Çdo varg | Nuk është vendosur |
category_denylist | Vendos listën opsionale të emrave të kategorive që nuk lejohen. Nëse nuk janë bosh, rezultatet e klasifikimit emri i kategorisë së të cilave është në këtë grup do të filtrohen. Emrat e kopjuar ose të panjohur të kategorive shpërfillen. Ky opsion është reciprokisht ekskluziv me category_allowlist dhe duke përdorur të dyja rezultatet në një gabim. | Çdo varg | Nuk është vendosur |
result_callback | Vendos dëgjuesin e rezultateve që të marrë rezultatet e klasifikimit në mënyrë asinkrone kur Klasifikuesi i audios është në modalitetin e transmetimit audio. Mund të përdoret vetëm kur modaliteti i ekzekutimit është caktuar në AUDIO_STREAM | N/A | Nuk është vendosur |
Përgatitni të dhënat
Klasifikimi i audios funksionon me klipe audio dhe transmetime audio. Detyra trajton parapërpunimin e hyrjes së të dhënave, duke përfshirë rimarrjen e mostrave, buferimin dhe kornizën.
Përgatitni hyrjen tuaj si një skedar audio ose një grup numpy, më pas konvertojeni atë në një objekt MediaPipe AudioData
. Ju mund të përdorni një bibliotekë të jashtme si SciPy për të ngarkuar audiot tuaja të hyrjes si grupe numpy.
Shembujt e mëposhtëm shpjegojnë dhe tregojnë se si të përgatiten të dhënat për përpunim për secilin nga llojet e të dhënave të disponueshme:
Klipe audio
import numpy as np from scipy.io import wavfile AudioData = mp.tasks.components.containers.AudioData sample_rate, buffer = wavfile.read('/path/to/audio.wav') audio_data = AudioData.create_from_array( buffer.astype(float) / np.iinfo(np.int16).max, sample_rate)
Transmetimi i audios
import numpy as np AudioData = mp.tasks.components.containers.AudioData # Read microphone data as np arrays, then call audio_data = AudioData.create_from_array( buffer.astype(float) / np.iinfo(np.int16).max, sample_rate)
Drejtoni detyrën
Ju thërrisni funksionin e klasifikimit që korrespondon me modalitetin tuaj të drejtimit për të shkaktuar përfundime. Audio Classifier API kthen kategoritë e mundshme për ngjarjet audio brenda buferit audio të hyrjes.
Klipe audio
# Perform audio classification on the provided audio clip. audio_classifier_result_list = classifier.classify(audio_data)
Transmetimi i audios
# Send live audio data to perform audio classification. # Results are sent to the `result_callback` provided in the `AudioClassifierOptions` classifier.classify_async(audio_data, timestamp_ms)
Vini re sa vijon:
- Kur ekzekutoni në modalitetin e transmetimit audio, duhet t'i jepni gjithashtu detyrës Klasifikuesi i audios vulën kohore të të dhënave audio hyrëse.
- Kur ekzekutohet në modelin e klipeve audio, detyra Klasifikuesi i audios do të bllokojë lidhjen aktuale derisa të përfundojë përpunimin e audios hyrëse.
Për një shembull më të plotë të ekzekutimit të Audio Classifier me klipe audio, shihni shembullin e kodit .
Trajtoni dhe shfaqni rezultatet
Pas ekzekutimit të përfundimit, detyra Audio Classifier kthen një objekt AudioClassifierResult
i cili përmban listën e kategorive të mundshme për ngjarjet audio brenda audios hyrëse.
Më poshtë tregon një shembull të të dhënave dalëse nga kjo detyrë:
AudioClassifierResult:
Timestamp in microseconds: 100
ClassificationResult #0:
Timestamp in microseconds: 100
Classifications #0 (single classification head):
head index: 0
category #0:
category name: "Speech"
score: 0.6
index: 0
category #1:
category name: "Music"
score: 0.2
index: 1
Shembulli i kodit të klasifikuesit audio tregon se si të shfaqen rezultatet e klasifikimit të kthyera nga kjo detyrë, shikoni shembullin e kodit për detaje.