L'attività Classificatore audio MediaPipe consente di eseguire la classificazione sui dati audio. Puoi usa questa attività per identificare gli eventi sonori da un insieme di categorie addestrate. Questi istruzioni mostrano come usare il Classificatore audio per nodi e app web.
Puoi vedere questa attività in azione visualizzando la demo. Per ulteriori informazioni su funzionalità, modelli e opzioni di configurazione di questa attività, consulta la Panoramica.
Esempio di codice
Il codice di esempio per Classificatore audio fornisce un'implementazione completa in JavaScript come riferimento. Questo codice è utile per testare l'attività a creare la tua app di classificazione audio. Puoi visualizzare, eseguire e modificare il Esempio di codice di Classificatore audio usando solo il browser web.
Configurazione
Questa sezione descrive i passaggi chiave per configurare l'ambiente di sviluppo e per i progetti di codice che usano Classificatore audio. Per informazioni generali su configurare l'ambiente di sviluppo per l'utilizzo delle attività di MediaPipe, tra cui: i requisiti di versione della piattaforma, consulta Guida alla configurazione per il web.
Pacchetti JavaScript
Il codice del classificatore audio è disponibile tramite @mediapipe/tasks-audio
MediaPipe
Pacchetto NPM. Puoi
puoi trovare e scaricare queste librerie dai link forniti nella piattaforma
Guida alla configurazione.
Puoi installare i pacchetti richiesti con il seguente codice per la gestione temporanea locale utilizzando il seguente comando:
npm install @mediapipe/tasks-audio
Se vuoi importare il codice dell'attività tramite una rete CDN (Content Delivery Network) aggiungi il seguente codice nel tag nel file 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>
Modello
L'attività MediaPipe Audio Classifier richiede un modello addestrato che sia compatibile con dell'attività. Per ulteriori informazioni sui modelli addestrati disponibili per Audio Classifier, consulta la panoramica delle attività nella sezione Modelli.
Seleziona e scarica un modello, quindi archivialo nella directory del progetto. Ad esempio:
<dev-project-root>/app/shared/models/
Crea l'attività
Usa una delle funzioni Classificatore audio createFrom...()
per
per preparare l'attività per l'esecuzione delle inferenze. Usa createFromModelPath()
con un percorso relativo o assoluto al file del modello addestrato.
Se il modello è già caricato in memoria, puoi utilizzare
createFromModelBuffer()
.
L'esempio di codice seguente mostra l'utilizzo della funzione createFromOptions()
per
configurare l'attività. La funzione createFromOptions
ti consente di personalizzare
Classificatore audio con opzioni di configurazione. Per ulteriori informazioni sulla configurazione
vedi Opzioni di configurazione.
Il codice seguente mostra come creare e configurare l'attività con opzioni:
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"
}
});
L'implementazione del codice di esempio del Classificatore audio consente all'utente di scegliere tra
di elaborazione. L'approccio rende il codice di creazione delle attività più complicato
potrebbero non essere appropriati per il tuo caso d'uso. Puoi vedere le diverse modalità
in runAudioClassification()
e runStreamingAudioClassification()
funzioni del
example code
Opzioni di configurazione
Questa attività include le seguenti opzioni di configurazione per web e JavaScript applicazioni:
Nome opzione | Descrizione | Intervallo di valori | Valore predefinito |
---|---|---|---|
displayNamesLocale |
Imposta la lingua delle etichette da utilizzare per i nomi visualizzati forniti nel
metadati del modello dell'attività, se disponibili. Il valore predefinito è en per
Inglese. Puoi aggiungere etichette localizzate ai metadati di un modello personalizzato
Utilizzando l'API TensorFlow Metadata Writer
| Codice impostazioni internazionali | it |
maxResults |
Imposta il numero massimo facoltativo di risultati della classificazione con il punteggio più alto su per tornare indietro. Se < 0, verranno restituiti tutti i risultati disponibili. | Qualsiasi numero positivo | -1 |
scoreThreshold |
Imposta la soglia del punteggio di previsione che sostituisce quella fornita in gli eventuali metadati del modello. I risultati al di sotto di questo valore vengono rifiutati. | [0,0, 1,0] | Non impostato |
categoryAllowlist |
Consente di impostare l'elenco facoltativo di nomi di categorie consentiti. Se il campo non è vuoto,
i risultati della classificazione i cui nome non è incluso in questo set saranno
esclusi. I nomi di categorie duplicati o sconosciuti vengono ignorati.
Questa opzione si esclude a vicenda con categoryDenylist e utilizza
entrambi generano un errore. |
Qualsiasi stringa | Non impostato |
categoryDenylist |
Consente di impostare un elenco facoltativo di nomi di categorie non consentiti. Se
non vuoti, i risultati di classificazione con nome della categoria incluso in questo set verranno filtrati
fuori. I nomi di categorie duplicati o sconosciuti vengono ignorati. Questa opzione è reciproca
è esclusivo con categoryAllowlist e l'utilizzo di entrambi genera un errore. |
Qualsiasi stringa | Non impostato |
Preparazione dei dati
Classificatore audio funziona con i clip audio e gli stream audio e può funzionare anche con i contenuti audio. in qualsiasi formato supportato dal browser host. L'attività gestisce i dati la pre-elaborazione dell'input, tra cui il ricampionamento, il buffering e l'inquadratura.
Esegui l'attività
Il classificatore audio utilizza il metodo classify()
per eseguire inferenze per il clip audio
file o stream audio. L'API Audio Classifier restituisce la possibile
categorie di eventi audio riconosciute nell'audio di input.
Le chiamate al metodo classify()
di classificazione audio vengono eseguite in modo sincrono e blocca il
il thread dell'interfaccia utente. Se classifichi l'audio proveniente dal microfono di un dispositivo,
ogni classificazione bloccherà il thread principale. Per evitare che ciò accada,
implementazione dei web worker per eseguire classify()
su un altro thread.
Il seguente codice mostra come eseguire l'elaborazione con il modello di attività:
Clip 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 );
Stream 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; };
Per un'implementazione più completa dell'esecuzione di un'attività Classificatore audio, consulta le esempio di codice.
Gestire e visualizzare i risultati
Una volta completata l'esecuzione di un'inferenza, l'attività Classificatore audio restituisce un
Oggetto AudioClassifierResult
che contiene l'elenco delle possibili categorie
per gli oggetti all'interno dell'audio di input.
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
Il codice di esempio Classificatore audio mostra come visualizzare la classificazione i risultati restituiti dall'attività, controlla esempio di codice per maggiori dettagli.