L'attività Classificatore audio MediaPipe ti 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 il classificatore audio per le app web e nodo.
Puoi vedere questa attività in azione visualizzando la demo. Per ulteriori informazioni sulle funzionalità, sui modelli e sulle opzioni di configurazione di questa attività, consulta la Panoramica.
Esempio di codice
Il codice di esempio per Audio Classifier fornisce un'implementazione completa di questa attività in JavaScript come riferimento. Questo codice ti consente di testare questa attività e iniziare a creare la tua app di classificazione audio. Puoi visualizzare, eseguire e modificare il codice di esempio del classificatore audio utilizzando il tuo browser web.
Configurazione
In questa sezione vengono descritti i passaggi chiave per configurare l'ambiente di sviluppo e codificare i progetti in modo specifico per l'utilizzo del classificatore audio. Per informazioni generali sulla configurazione dell'ambiente di sviluppo per l'utilizzo delle attività di MediaPipe, inclusi i requisiti di versione della piattaforma, consulta la Guida alla configurazione per il web.
Pacchetti JavaScript
Il codice del classificatore audio è disponibile tramite il pacchetto @mediapipe/tasks-audio
NPM MediaPipe. Puoi
trovare e scaricare queste librerie dai link disponibili nella
Guida alla configurazione della piattaforma.
Puoi installare i pacchetti richiesti con il codice seguente per la gestione temporanea locale utilizzando il comando seguente:
npm install @mediapipe/tasks-audio
Se vuoi importare il codice dell'attività tramite un servizio di rete 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à Classificatore audio MediaPipe richiede un modello addestrato compatibile con questa attività. Per ulteriori informazioni sui modelli addestrati disponibili per il classificatore di audio, consulta la panoramica dell'attività nella sezione Modelli.
Seleziona e scarica un modello, quindi archivialo all'interno della directory del progetto, ad esempio:
<dev-project-root>/app/shared/models/
Creare l'attività
Utilizza una delle funzioni createFrom...()
del classificatore audio per
preparare l'attività all'esecuzione delle inferenze. Utilizza la funzione createFromModelPath()
con un percorso relativo o assoluto al file del modello addestrato.
Se il modello è già stato 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 le opzioni di configurazione. Per ulteriori informazioni sulle opzioni di configurazione, consulta Opzioni di configurazione.
Il codice seguente 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"
}
});
L'implementazione di codice di esempio del classificatore audio consente all'utente di scegliere tra
modalità di elaborazione. Questo approccio rende più complicato
il codice per la creazione delle attività e potrebbe non essere appropriato per il tuo caso d'uso. Puoi visualizzare le diverse modalità
nelle funzioni runAudioClassification()
e runStreamingAudioClassification()
del
example code
.
Opzioni di configurazione
Questa attività prevede 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 Metadata Writer di TensorFlow Lite
| Codice 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. | Eventuali numeri positivi | -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 impostata |
categoryAllowlist |
Consente di impostare l'elenco facoltativo di nomi di categorie consentite. Se il campo non è vuoto,
i risultati della classificazione il cui nome categoria non è presente in questo set verranno
filtrati. I nomi di categoria duplicati o sconosciuti vengono ignorati.
Questa opzione si esclude a vicenda con categoryDenylist e l'utilizzo di entrambe genera un errore. |
Qualsiasi stringa | Non impostata |
categoryDenylist |
Consente di impostare l'elenco facoltativo di nomi di categorie non consentiti. Se il campo non è vuoto, i risultati di classificazione il cui nome di categoria è presente in questo set verranno filtrati. I nomi di categoria duplicati o sconosciuti vengono ignorati. Questa opzione si esclude a vicenda con categoryAllowlist e l'uso di entrambe genera un errore. |
Qualsiasi stringa | Non impostata |
Preparazione dei dati
Audio Classifier funziona con i clip audio e gli stream audio e può funzionare con i file audio in qualsiasi formato supportato dal browser host. L'attività gestisce la pre-elaborazione dell'input dati, tra cui ricampionamento, buffering e framing.
Esegui l'attività
Il classificatore audio 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()
del classificatore audio 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 evitare che ciò accada implementando i web worker per l'esecuzione di 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 di codice.
Gestire e visualizzare i risultati
Una volta completata un'esecuzione di inferenza, l'attività Classificatore audio restituisce un oggetto AudioClassifierResult
contenente l'elenco di 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 del classificatore audio mostra come visualizzare i risultati di classificazione restituiti dall'attività. Per i dettagli, consulta l'esempio di codice.