La tâche de classification audio MediaPipe vous permet d'effectuer une classification sur des données audio. Vous pouvez utilisez cette tâche pour identifier les événements sonores à partir d'un ensemble de catégories entraînées. Ces vous explique comment utiliser le classificateur audio avec Python.
Pour en savoir plus sur les fonctionnalités, les modèles et les options de configuration de cette tâche, consultez la section Présentation.
Exemple de code
L'exemple de code pour le classificateur audio fournit une implémentation complète de ce dans Python à titre de référence. Ce code vous aide à tester cette tâche et à obtenir vous avez commencé à créer votre propre classificateur audio. Vous pouvez afficher, exécuter et modifier les Exemple de classificateur audio du code en utilisant simplement votre navigateur Web avec Google Colab. Vous pouvez afficher le code source cet exemple sur GitHub
Si vous mettez en œuvre le classificateur audio pour Raspberry Pi, consultez l'exemple de Raspberry Pi l'application Nest.
Configuration
Cette section décrit les étapes clés à suivre pour configurer votre environnement de développement spécifiquement pour utiliser le classificateur audio. Pour obtenir des informations générales sur configurer votre environnement de développement pour utiliser les tâches MediaPipe, y compris version de la plate-forme requise, consultez le guide de configuration Python.
<ph type="x-smartling-placeholder">Colis
Tâche de classificateur audio dans le package Mediapipe pip. Vous pouvez installer par ce qui suit:
$ python -m pip install mediapipe
Importations
Importez les classes suivantes pour accéder aux fonctions de la tâche de classificateur audio:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import audio
Modèle
La tâche de classification audio MediaPipe nécessite un modèle entraîné et compatible avec tâche. Pour en savoir plus sur les modèles entraînés disponibles pour le classificateur audio, consultez la section Modèles de la présentation des tâches.
Sélectionnez et téléchargez un modèle, puis stockez-le dans un répertoire local. Vous pouvez utiliser les recommandations Yamnet dans un modèle de ML.
model_path = '/absolute/path/to/lite-model_yamnet_classification_tflite_1.tflite'
Spécifiez le chemin d'accès du modèle dans le paramètre "Nom du modèle", comme indiqué ci-dessous:
base_options = BaseOptions(model_asset_path=model_path)
Créer la tâche
Utilisez la fonction create_from_options
pour créer la tâche. La
La fonction create_from_options
accepte les options de configuration, y compris l'exécution
mode, paramètres régionaux des noms à afficher, nombre maximal de résultats, seuil de confiance,
la liste d'autorisation
des catégories et la liste de refus. Pour en savoir plus sur la configuration
consultez la page Présentation de la configuration.
La tâche "Outil de classification audio" accepte les extraits audio et les flux audio en tant qu'entrée. Toi vous devez spécifier le mode d'exécution correspondant au type de données d'entrée lorsque la création de la tâche. Sélectionnez l'onglet correspondant au type de données d'entrée pour afficher comment créer la tâche et exécuter l'inférence.
Clips 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. # ...
Flux 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. # ...
Pour obtenir un exemple complet de création d'un classificateur audio à utiliser avec des fichiers audio, consultez la code exemple.
Options de configuration
Cette tâche comporte les options de configuration suivantes pour les applications Python:
Nom de l'option | Description | Plage de valeurs | Valeur par défaut |
---|---|---|---|
running_mode |
Définit le mode d'exécution de la tâche. Le classificateur audio propose deux modes: AUDIO_CLIPS: mode d'exécution de la tâche audio sur des clips audio indépendants AUDIO_STREAM: mode permettant d'exécuter la tâche audio sur un flux audio, par exemple à partir d'un micro. Dans ce mode, resultListener doit être appelé pour configurer un écouteur afin de recevoir les résultats de la classification. de manière asynchrone. |
{AUDIO_CLIPS, AUDIO_STREAM } |
AUDIO_CLIPS |
display_names_locale |
Définit la langue des libellés à utiliser pour les noms à afficher fournis dans les
les métadonnées du modèle de la tâche, le cas échéant. La valeur par défaut est en pour
anglais. Vous pouvez ajouter des libellés localisés aux métadonnées d'un modèle personnalisé
à l'aide de l'API TensorFlow Lite Metadata Writer ;
| Code des paramètres régionaux | en |
max_results |
Définit le nombre maximal facultatif de résultats de classification les mieux notés sur retour. Si < 0, tous les résultats disponibles sont renvoyés. | Tous les nombres positifs | -1 |
score_threshold |
Définit le seuil de score de prédiction qui remplace celui indiqué dans les métadonnées du modèle (le cas échéant). Les résultats inférieurs à cette valeur sont refusés. | [0,0, 1,0] | Non défini |
category_allowlist |
Définit la liste facultative des noms de catégories autorisés. Si ce champ n'est pas vide,
les résultats de classification dont le nom de catégorie ne fait pas partie de cet ensemble seront
filtrées. Les noms de catégories en double ou inconnus sont ignorés.
Cette option s'exclue mutuellement avec category_denylist et utilise
génèrent une erreur. |
Toutes les chaînes | Non défini |
category_denylist |
Définit la liste facultative des noms de catégories non autorisés. Si
non vide, les résultats de classification dont le nom de catégorie se trouve dans cet ensemble seront filtrés
s'affiche. Les noms de catégories en double ou inconnus sont ignorés. Cette option est mutuellement
exclusive avec category_allowlist et l'utilisation des deux entraîne une erreur. |
Toutes les chaînes | Non défini |
result_callback |
Définit l'écouteur des résultats pour qu'il reçoive les résultats de la classification.
de manière asynchrone lorsque le classificateur audio se trouve dans le flux audio.
. Ne peut être utilisé que lorsque le mode d'exécution est défini sur AUDIO_STREAM |
N/A | Non défini |
Préparer les données
Le classificateur audio fonctionne avec les clips audio et les flux audio. La tâche gère le prétraitement de l'entrée de données, y compris le rééchantillonnage, la mise en mémoire tampon et le cadrage.
Préparez votre entrée en tant que fichier audio ou tableau Numpy, puis convertissez-la en
Objet AudioData
MediaPipe. Vous pouvez utiliser une bibliothèque externe
SciPy pour charger vos données audio d'entrée en tant que tableaux Numpy.
Les exemples suivants expliquent et montrent comment préparer les données à traiter pour chacun des types de données disponibles:
Clips 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)
Flux 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)
Exécuter la tâche
Vous appelez la fonction de classification correspondant à votre mode de course pour déclencher les inférences. L'API Audio Classifier renvoie les catégories possibles pour le contenu audio. dans la mémoire tampon du contenu audio d'entrée.
Clips audio
# Perform audio classification on the provided audio clip. audio_classifier_result_list = classifier.classify(audio_data)
Flux 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)
Veuillez noter les points suivants :
- Lors de l'exécution en mode de flux audio, vous devez également fournir le paramètre Tâche de classificateur audio avec le code temporel des données audio d'entrée.
- Lors de l'exécution dans le modèle de clips audio, la tâche de classificateur audio bloque les jusqu'à ce qu'il ait fini de traiter l'audio d'entrée.
Pour obtenir un exemple plus complet d'exécution d'un classificateur audio avec des clips audio, consultez la code exemple.
Gérer et afficher les résultats
Lors de l'exécution de l'inférence, la tâche de classificateur audio renvoie une
Un objet AudioClassifierResult
contenant la liste des catégories possibles
pour les événements audio dans l'audio d'entrée.
Voici un exemple de données de sortie de cette tâche:
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'exemple de code du classificateur audio montre comment afficher la classification résultats renvoyés par cette tâche, consultez le code exemple pour en savoir plus.