L'attività di classificazione audio di MediaPipe consente di eseguire la classificazione dei dati audio. Puoi utilizzare questa attività per identificare gli eventi sonori da un insieme di categorie addestrate. Queste istruzioni mostrano come utilizzare Audio Classifier per Node e le app web.
Puoi vedere questa attività in azione visualizzando la demo. Per saperne di più sulle funzionalità, sui modelli e sulle opzioni di configurazione di questa attività, consulta la panoramica.
Codice di esempio
Il codice di esempio per Audio Classifier fornisce un'implementazione completa di questa attività in JavaScript per riferimento. Questo codice ti aiuta a testare questa attività e a iniziare a creare la tua app di classificazione audio. Puoi visualizzare, eseguire e modificare l'esempio di classificazione audio utilizzando solo il browser web.
Configurazione
Questa sezione descrive i passaggi chiave per configurare l'ambiente di sviluppo e i progetti di codice specifici per l'utilizzo di Audio Classifier. Per informazioni generali sulla configurazione dell'ambiente di sviluppo per l'utilizzo delle attività MediaPipe, inclusi i requisiti della versione della piattaforma, consulta la Guida alla configurazione per il web.
Pacchetti JavaScript
Il codice di Audio Classifier è disponibile tramite il pacchetto @mediapipe/tasks-audio
NPM di MediaPipe. Puoi
trovare e scaricare queste librerie dai link forniti nella guida alla configurazione della piattaforma.
Puoi installare i pacchetti richiesti con il seguente codice per lo staging locale utilizzando il seguente comando:
npm install @mediapipe/tasks-audio
Se vuoi importare il codice dell'attività tramite un servizio CDN (Content Delivery Network), aggiungi il seguente codice nel tag del 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à di classificazione audio MediaPipe richiede un modello addestrato compatibile con questa attività. Per saperne di più sui modelli addestrati disponibili per Audio Classifier, consulta la sezione Modelli della panoramica dell'attività.
Seleziona e scarica un modello, quindi archivialo nella directory del progetto, ad esempio:
<dev-project-root>/app/shared/models/
Creare l'attività
Utilizza una delle funzioni createFrom...() di classificazione audio per
preparare l'attività per l'esecuzione delle inferenze. Utilizza la funzione createFromModelPath()
con un percorso relativo o assoluto al file del modello addestrato.
Se il modello è già caricato in memoria, puoi utilizzare il metodo createFromModelBuffer().
L'esempio di codice riportato di seguito mostra l'utilizzo della funzione createFromOptions() per
configurare l'attività. La funzione createFromOptions ti consente di personalizzare il
classificatore audio con opzioni di configurazione. Per ulteriori informazioni sulle opzioni di configurazione, consulta Opzioni di configurazione.
Il seguente codice mostra come creare e configurare l'attività con opzioni personalizzate:
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"
}
});
Puoi vedere un esempio completo all'indirizzo
example code.
Opzioni di configurazione
Questa attività ha le seguenti opzioni di configurazione per le applicazioni web e JavaScript:
| Nome opzione | Descrizione | Intervallo di valori | Valore predefinito |
|---|---|---|---|
displayNamesLocale |
Imposta la lingua delle etichette da utilizzare per i nomi visualizzati forniti nei
metadati del modello dell'attività, se disponibili. Il valore predefinito è en per
l'inglese. Puoi aggiungere etichette localizzate ai metadati di un modello personalizzato
utilizzando l'API TensorFlow Lite Metadata Writer.
| Codice di impostazioni internazionali | it |
maxResults |
Imposta il numero massimo facoltativo di risultati di classificazione con il punteggio più alto da restituire. Se < 0, verranno restituiti tutti i risultati disponibili. | Qualsiasi numero positivo | -1 |
scoreThreshold |
Imposta la soglia del punteggio di previsione che sostituisce quella fornita nei metadati del modello (se presenti). I risultati inferiori a questo valore vengono rifiutati. | [0.0, 1.0] | Non impostato |
categoryAllowlist |
Imposta l'elenco facoltativo dei nomi delle categorie consentiti. Se non è vuoto,
i risultati della classificazione la cui categoria non è presente in questo insieme verranno
filtrati. I nomi di categorie duplicati o sconosciuti vengono ignorati.
Questa opzione si esclude a vicenda con categoryDenylist e l'utilizzo
di entrambe genera un errore. |
Qualsiasi stringa | Non impostato |
categoryDenylist |
Imposta l'elenco facoltativo di nomi di categorie non consentiti. Se
non vuoto, i risultati della classificazione il cui nome della categoria è in questo insieme verranno filtrati. I nomi di categorie duplicati o sconosciuti vengono ignorati. Questa opzione è
mutualmente esclusiva con categoryAllowlist e l'utilizzo di entrambe genera un errore. |
Qualsiasi stringa | Non impostato |
Preparazione dei dati
Audio Classifier funziona con clip audio e flussi audio e può funzionare con file audio in qualsiasi formato supportato dal browser host. L'attività gestisce la preelaborazione dell'input dei dati, inclusi il ricampionamento, il buffering e l'inquadratura.
Esegui l'attività
Audio Classifier utilizza il metodo classify() per eseguire inferenze per file di clip audio o stream audio. L'API Audio Classifier restituisce le possibili
categorie per gli eventi audio riconosciuti nell'audio di input.
Le chiamate al metodo classify() Audio Classifier vengono eseguite in modo sincrono e bloccano il thread dell'interfaccia utente. Se classifichi l'audio dal microfono di un dispositivo,
ogni classificazione bloccherà il thread principale. Puoi evitarlo
implementando i 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à di classificazione audio, consulta l'esempio.
Gestire e visualizzare i risultati
Al termine di un'esecuzione dell'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
L'esempio di codice Audio Classifier mostra come visualizzare i risultati della classificazione restituiti dall'attività. Per maggiori dettagli, consulta l'esempio.