Zadanie MediaPipe Audio Classifier umożliwia klasyfikację danych audio. Dostępne opcje użyj tego zadania do zidentyfikowania zdarzeń dźwiękowych na podstawie zestawu nauczonych kategorii. Te te instrukcje pokażą Ci, jak używać klasyfikatora dźwięku w Pythonie.
Więcej informacji o funkcjach, modelach i opcjach konfiguracji zapoznaj się z Przeglądem.
Przykładowy kod
Przykładowy kod klasyfikatora dźwięku zapewnia pełną implementację w Pythonie. Ten kod pomoże Ci przetestować to zadanie i uzyskać Twój własny klasyfikator audio. Możesz wyświetlać, uruchamiać i edytować Przykład klasyfikatora dźwięku kod używając Google Colab tylko w przeglądarce. Możesz wyświetlić kod źródłowy dla ten przykład na GitHub
Jeśli wdrażasz klasyfikator dźwięku dla Raspberry Pi, zapoznaj się z artykułem przykład Raspberry Pi
Konfiguracja
W tej sekcji opisujemy najważniejsze czynności związane z konfigurowaniem środowiska programistycznego oraz w projektach kodu, w których wykorzystano klasyfikator audio. Ogólne informacje na temat: skonfigurować środowisko programistyczne do korzystania z zadań MediaPipe, w tym wymagań wersji platformy znajdziesz w przewodniku konfiguracji dla Pythona.
Pakiety
Klasyfikator dźwięku obsługuje pakiet pip mediapipe. Możesz zainstalować w zależności od tego:
$ python -m pip install mediapipe
Importy
Aby uzyskać dostęp do funkcji zadania klasyfikatora dźwięku, zaimportuj te klasy:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import audio
Model
Zadanie MediaPipe Audio Classifier wymaga wytrenowanego modelu zgodnego z tym zadanie. Więcej informacji o dostępnych wytrenowanych modelach na potrzeby klasyfikatora dźwięku znajdziesz tutaj zapoznaj się z omówieniem zadania sekcją Modele.
Wybierz i pobierz model, a następnie zapisz go w katalogu lokalnym. Za pomocą zalecane Yamnet model atrybucji.
model_path = '/absolute/path/to/lite-model_yamnet_classification_tflite_1.tflite'
Określ ścieżkę modelu w parametrze Nazwa modelu, jak pokazano poniżej:
base_options = BaseOptions(model_asset_path=model_path)
Tworzenie zadania
Utwórz zadanie za pomocą funkcji create_from_options
.
Funkcja create_from_options
akceptuje opcje konfiguracji, w tym uruchomione
tryb, język wyświetlanych nazw, maksymalna liczba wyników, próg ufności,
listy dozwolonych kategorii i odrzuconych. Więcej informacji o konfiguracji
Więcej informacji znajdziesz w artykule Omówienie konfiguracji.
Zadanie Klasyfikator dźwięku obsługuje jako dane wejściowe klipy audio i strumienie audio. Ty musi określać tryb działania odpowiadający typowi danych wejściowych, gdy podczas tworzenia zadania. Wybierz kartę odpowiadającą typowi danych wejściowych, aby zobaczyć jak utworzyć zadanie i uruchomić wnioskowanie.
Klipy 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. # ...
Strumień audio
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. # ...
Pełny przykład tworzenia klasyfikatora dźwięku do użycia z dźwiękiem znajdziesz w kod przykład.
Opcje konfiguracji
To zadanie zawiera te opcje konfiguracji aplikacji w Pythonie:
Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
---|---|---|---|
running_mode |
Ustawia tryb działania zadania. Klasyfikator dźwięku ma 2 tryby: AUDIO_CLIPS: tryb uruchamiania zadania audio na niezależnych klipach audio. AUDIO_STREAM: tryb uruchamiania zadania dotyczącego dźwięku w strumieniu audio, np. z mikrofonu. W tym trybie detektor wyników musi mieć wartość wywołana w celu skonfigurowania detektora odbierającego wyniki klasyfikacji asynchronicznie. |
{AUDIO_CLIPS, AUDIO_STREAM } |
AUDIO_CLIPS |
display_names_locale |
Ustawia język etykiet, które mają być używane w przypadku nazw wyświetlanych w kolumnie
metadane modelu zadania, jeśli są dostępne. Wartość domyślna to en dla
Angielski. Do metadanych modelu niestandardowego możesz dodać zlokalizowane etykiety
za pomocą interfejsu TensorFlow Lite Metadata Writer API.
| Kod języka | en |
max_results |
Ustawia opcjonalną maksymalną liczbę wyników klasyfikacji na . Jeśli < 0 – zostaną zwrócone wszystkie dostępne wyniki. | Dowolne liczby dodatnie | -1 |
score_threshold |
Ustawia próg wyniku prognozy, który zastępuje próg podany w polu metadane modelu (jeśli występują). Wyniki poniżej tej wartości zostały odrzucone. | [0,0; 1,0] | Nie ustawiono |
category_allowlist |
Ustawia opcjonalną listę dozwolonych nazw kategorii. Jeśli pole nie jest puste,
wyniki klasyfikacji, których nazwa kategorii nie znajduje się w tym zbiorze, zostaną
zostały odfiltrowane. Zduplikowane lub nieznane nazwy kategorii są ignorowane.
Ta opcja nie działa z usługą category_denylist i korzysta z funkcji
skutkuje to błędem. |
Dowolne ciągi | Nie ustawiono |
category_denylist |
Ustawia opcjonalną listę nazw kategorii, które nie są dozwolone. Jeśli
niepuste, wyniki klasyfikacji, których nazwa kategorii znajduje się w tym zbiorze, zostaną odfiltrowane
na zewnątrz. Zduplikowane lub nieznane nazwy kategorii są ignorowane. Ta opcja jest wzajemna
tylko w polu category_allowlist , co spowoduje błąd. |
Dowolne ciągi | Nie ustawiono |
result_callback |
Konfiguruje detektor wyników, aby otrzymywać wyniki klasyfikacji
asynchronicznie, gdy klasyfikator dźwięku jest w strumieniu audio.
i trybu uzyskiwania zgody. Tej opcji można używać tylko wtedy, gdy tryb działania jest ustawiony na AUDIO_STREAM |
Nie dotyczy | Nie ustawiono |
Przygotuj dane
Klasyfikator dźwięku działa z klipami audio i strumieniami audio. Zadanie obsługuje wstępnego przetwarzania danych wejściowych, w tym ponownego próbkowania, buforowania i ramowania;
Przygotuj dane wejściowe jako plik audio lub tablicę numpy, a następnie przekonwertuj je na
Obiekt MediaPipe AudioData
. Możesz użyć biblioteki zewnętrznej, takiej jak
SciPy – wczytuje dane dźwiękowe w postaci tablic numpy.
W przykładach poniżej pokazujemy, jak przygotować dane do przetwarzania każdego z dostępnych typów danych:
Klipy 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)
Strumień audio
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)
Uruchamianie zadania
Wywołujesz funkcję klasyfikacji odpowiadającą Twojemu trybowi działającemu, aby ją aktywować. danych. Interfejs Audio Classifier API zwraca możliwe kategorie treści audio. zdarzenia w wejściowym buforze dźwięku.
Klipy audio
# Perform audio classification on the provided audio clip. audio_classifier_result_list = classifier.classify(audio_data)
Strumień audio
# 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)
Pamiętaj:
- Jeśli działasz w trybie strumienia audio, musisz też podać: Klasyfikator dźwięku określa sygnaturę czasową wejściowych danych dźwiękowych.
- W przypadku modelu klipów audio zadanie Klasyfikator dźwięku zablokuje w bieżącym wątku aż do zakończenia przetwarzania wejściowego dźwięku.
Bardziej kompletny przykład użycia klasyfikatora audio z klipami audio znajdziesz tutaj: kod przykład.
Obsługa i wyświetlanie wyników
Po przeprowadzeniu wnioskowania zadanie Klasyfikator dźwięku zwraca wartość
AudioClassifierResult
obiekt zawierający listę możliwych kategorii
dla zdarzeń dźwiękowych w wejściowym dźwięku.
Poniżej znajdziesz przykładowe dane wyjściowe tego zadania:
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
Przykładowy kod klasyfikatora dźwięku pokazuje, jak wyświetlić klasyfikację wyników zwróconych przez to zadanie, patrz kod przykład .