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 aplikacjach Node i internetowych.
Aby zobaczyć, jak działa to zadanie, wyświetl demo. 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 JavaScripcie. Ten kod pomoże Ci przetestować to zadanie i zacznij tworzyć własną aplikację do klasyfikacji dźwięku. Możesz wyświetlać, uruchamiać i edytuj Przykładowy kod klasyfikatora dźwięku tylko za pomocą przeglądarki.
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, patrz Przewodnik po konfiguracji w kampaniach internetowych
Pakiety JavaScript
Kod klasyfikatora audio jest dostępny przez MediaPipe @mediapipe/tasks-audio
Pakiet NPM. Dostępne opcje
znajdź i pobierz te biblioteki, korzystając z linków dostępnych na platformie
Przewodnik po konfiguracji
Wymagane pakiety możesz zainstalować za pomocą tego kodu lokalnego środowiska przejściowego. za pomocą tego polecenia:
npm install @mediapipe/tasks-audio
Jeśli chcesz zaimportować kod zadania przez sieć dostarczania treści (CDN) , dodaj ten kod w tagu w pliku HTML:
<!-- Replace "my-cdn-service.com" with your CDN -->
<head>
<script src="https://my-cdn-service.com/npm/@mediapipe/tasks-audio/audio_bundle.js"
crossorigin="anonymous"></script>
</head>
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 projektu. np.:
<dev-project-root>/app/shared/models/
Tworzenie zadania
Użyj jednej z funkcji klasyfikatora dźwięku createFrom...()
, aby:
przygotować zadanie do uruchamiania wniosków. Użyj funkcji createFromModelPath()
ze ścieżką względną lub bezwzględną do pliku wytrenowanego modelu.
Jeśli model jest już załadowany do pamięci, możesz użyć funkcji
Metoda createFromModelBuffer()
.
Poniższy przykładowy kod pokazuje użycie funkcji createFromOptions()
do
skonfigurować zadanie. Funkcja createFromOptions
umożliwia dostosowanie parametru
Klasyfikator dźwięku z opcjami konfiguracji. Więcej informacji o konfiguracji
Więcej informacji znajdziesz w sekcji Opcje konfiguracji.
Poniższy kod pokazuje, jak utworzyć i skonfigurować zadanie z niestandardowym użyciem opcje:
const audio = await FilesetResolver.forAudioTasks(
"https://my-cdn-service.com/npm/@mediapipe/tasks-audio/wasm"
);
const audioClassifier = await AudioClassifier.createFromOptions(audio, {
baseOptions: {
modelAssetPath:
"https://tfhub.dev/google/lite-model/yamnet/classification/tflite/1?lite-format=tflite"
}
});
Przykładowa implementacja kodu klasyfikatora audio pozwala użytkownikowi wybrać
i przetwarzania danych. Takie podejście sprawia, że kod tworzenia zadań jest bardziej skomplikowany,
może nie być odpowiednia w Twoim przypadku użycia. Możesz zobaczyć różne tryby,
w: runAudioClassification()
i runStreamingAudioClassification()
funkcje
example code
.
Opcje konfiguracji
To zadanie zawiera poniższe opcje konfiguracji dla stron internetowych i JavaScriptu aplikacje:
Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
---|---|---|---|
displayNamesLocale |
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 |
maxResults |
Ustawia opcjonalną maksymalną liczbę wyników klasyfikacji na . Jeśli < 0 – zostaną zwrócone wszystkie dostępne wyniki. | Dowolne liczby dodatnie | -1 |
scoreThreshold |
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 |
categoryAllowlist |
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ą categoryDenylist i korzysta z funkcji
skutkuje to błędem. |
Dowolne ciągi | Nie ustawiono |
categoryDenylist |
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 categoryAllowlist , co spowoduje błąd. |
Dowolne ciągi | Nie ustawiono |
Przygotuj dane
Klasyfikator dźwięku działa z klipami i strumieniami audio oraz może obsługiwać dźwięk. w dowolnym formacie obsługiwanym przez przeglądarkę hosta. Zadanie zarządza danymi wstępnym przetwarzaniem danych wejściowych, w tym ponownym próbkowaniem, buforowaniem i ramkowaniem.
Uruchamianie zadania
Klasyfikator dźwięku wykorzystuje metodę classify()
do uruchamiania wniosków dla klipów audio.
plików lub strumieni audio. Interfejs Audio Classifier API zwraca możliwe
kategorie zdarzeń dźwiękowych rozpoznawanych w wejściowym dźwięku.
Wywołania metody Audio Classifier classify()
są uruchamiane synchronicznie i blokują
wątku interfejsu. Jeśli klasyfikujesz dźwięk z mikrofonu urządzenia,
każda klasyfikacja zablokuje wątek główny. Możesz temu zapobiec:
Wdrożenie instancji roboczych w celu uruchomienia classify()
w innym wątku.
Ten kod pokazuje, jak wykonać przetwarzanie za pomocą modelu zadań:
Klipy audio
// Create audio buffer const sample = await response.arrayBuffer(); const audioBuffer = await audioCtx.decodeAudioData(sample); // Use AudioClassifier to run classification const results = audioClassifier.classify( audioBuffer.getChannelData(0), audioBuffer.sampleRate );
Strumień audio
stream = await navigator.mediaDevices.getUserMedia(constraints); audioCtx = new AudioContext({ sampleRate: 16000 }); const source = audioCtx.createMediaStreamSource(stream); const scriptNode = audioCtx.createScriptProcessor(16384, 1, 1); scriptNode.onaudioprocess = function (audioProcessingEvent) { const inputBuffer = audioProcessingEvent.inputBuffer; let inputData = inputBuffer.getChannelData(0); // Classify the audio const result = audioClassifier.classify(inputData); const categories = result[0].classifications[0].categories; };
Pełną implementację uruchamiania zadania klasyfikatora dźwięku znajdziesz w tych artykułach: przykładowego kodu.
Obsługa i wyświetlanie wyników
Gdy zakończysz uruchomienie wnioskowania, zadanie Klasyfikator dźwięku zwróci błąd
AudioClassifierResult
obiekt zawierający listę możliwych kategorii
dla obiektów w
wejściowym dźwięku.
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 zadanie, patrz przykładowy kod .