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 con Python.
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 un'attività in Python come riferimento. Questo codice ti consente di testare l'attività e ottenere a creare un tuo classificatore audio. Puoi visualizzare, eseguire e modificare Esempio di Classificatore audio codice usando solo il browser web con Google Colab. Puoi visualizzare il codice sorgente questo esempio GitHub.
Se implementi il classificatore audio per Raspberry Pi, consulta: l'esempio di Raspberry Pi Google Cloud.
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 la Guida alla configurazione per Python.
Pacchetti
Il classificatore audio gestisce il pacchetto pip mediapipe. Puoi installare con quanto segue:
$ python -m pip install mediapipe
Importazioni
Importa le seguenti classi per accedere alle funzioni dell'attività Classificatore audio:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import audio
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 in una directory locale. Puoi utilizzare i valori consigliati Yamnet un modello di machine learning.
model_path = '/absolute/path/to/lite-model_yamnet_classification_tflite_1.tflite'
Specifica il percorso del modello all'interno del parametro Model Name, come mostrato di seguito:
base_options = BaseOptions(model_asset_path=model_path)
Crea l'attività
Utilizza la funzione create_from_options
per creare l'attività. La
La funzione create_from_options
accetta le opzioni di configurazione, inclusa l'esecuzione
modalità, nomi visualizzati, impostazioni internazionali, numero massimo di risultati, soglia di confidenza,
categorie consentite e bloccate. Per ulteriori informazioni sulla configurazione
vedi Panoramica della configurazione.
L'attività Classificatore audio supporta clip audio e stream audio come input. Tu devi specificare la modalità di esecuzione corrispondente al tipo di dati di input quando durante la creazione dell'attività. Scegli la scheda corrispondente al tipo di dati di input per visualizzare come creare l'attività ed eseguire l'inferenza.
Clip 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. # ...
Stream 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. # ...
Per un esempio completo della creazione di un Classificatore audio da utilizzare con gli audio, consulta le codice esempio.
Opzioni di configurazione
Questa attività include le seguenti opzioni di configurazione per le applicazioni Python:
Nome opzione | Descrizione | Intervallo di valori | Valore predefinito |
---|---|---|---|
running_mode |
Imposta la modalità di esecuzione per l'attività. Classificatore audio prevede due modalità: AUDIO_CLIPS: la modalità per eseguire l'attività audio su clip audio indipendenti. AUDIO_STREAM: la modalità per eseguire l'attività audio su uno stream audio, ad esempio dal microfono. In questa modalità, resultListener deve essere per impostare un listener che riceva i risultati della classificazione in modo asincrono. |
{AUDIO_CLIPS, AUDIO_STREAM } |
AUDIO_CLIPS |
display_names_locale |
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 |
max_results |
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 |
score_threshold |
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 |
category_allowlist |
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 category_denylist e utilizza
entrambi generano un errore. |
Qualsiasi stringa | Non impostato |
category_denylist |
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 category_allowlist e l'utilizzo di entrambi genera un errore. |
Qualsiasi stringa | Non impostato |
result_callback |
Imposta il listener dei risultati in modo che riceva i risultati della classificazione
in modo asincrono quando il Classificatore audio si trova nello stream audio.
. Può essere utilizzato solo quando la modalità di corsa è impostata su AUDIO_STREAM |
N/D | Non impostato |
Preparazione dei dati
Classificatore audio funziona con clip audio e stream audio. L'attività gestisce la pre-elaborazione dell'input di dati, tra cui il ricampionamento, il buffering e l'inquadratura.
Prepara l'input come file audio o array numpy, quindi convertilo in un
Oggetto AudioData
MediaPipe. Puoi usare una libreria esterna come
SciPy per caricare gli audio di input come array numpy.
I seguenti esempi spiegano e mostrano come preparare i dati per il trattamento per: per ciascuno dei tipi di dati disponibili:
Clip 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)
Stream 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)
Esegui l'attività
Chiamerai la funzione di classificazione corrispondente alla tua modalità di corsa per attivare le inferenze. L'API Audio Classifier restituisce le possibili categorie per l'audio all'interno del buffer audio di input.
Clip audio
# Perform audio classification on the provided audio clip. audio_classifier_result_list = classifier.classify(audio_data)
Stream 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)
Tieni presente quanto segue:
- Quando è attiva la modalità stream audio, devi fornire anche il valore Classificatore audio attiva il timestamp dei dati audio di input.
- Quando viene eseguito nel modello di clip audio, l'attività Classificatore audio blocca le thread corrente finché non termina l'elaborazione dell'audio di input.
Per un esempio più completo di come utilizzare il Classificatore audio con clip audio, consulta la sezione codice esempio.
Gestire e visualizzare i risultati
Dopo l'esecuzione dell'inferenza, l'attività Classificatore audio restituisce un
Oggetto AudioClassifierResult
che contiene l'elenco delle possibili categorie
per gli eventi audio all'interno dell'audio di input.
Di seguito è riportato un esempio dei dati di output di questa attività:
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 risultati restituiti da questa attività, consulta il codice esempio per maggiori dettagli.