Un guide complet des ensembles de données audio
'Guide complet des jeux de données audio'
Introduction
🤗 Datasets est une bibliothèque open-source permettant de télécharger et de préparer des ensembles de données provenant de tous les domaines. Son API minimaliste permet aux utilisateurs de télécharger et de préparer des ensembles de données en seulement une ligne de code Python, avec une suite de fonctions qui permettent un prétraitement efficace. Le nombre d’ensembles de données disponibles est sans précédent, avec tous les ensembles de données d’apprentissage automatique les plus populaires disponibles en téléchargement.
Non seulement cela, mais 🤗 Datasets est également équipé de fonctionnalités spécifiques à l’audio qui facilitent le travail avec des ensembles de données audio pour les chercheurs et les praticiens. Dans ce blog, nous présenterons ces fonctionnalités, en montrant pourquoi 🤗 Datasets est l’endroit idéal pour télécharger et préparer des ensembles de données audio.
Table des matières
- Le Hub
- Charger un ensemble de données audio
- Facile à charger, facile à traiter
- Mode de streaming : la solution miracle
- Une visite des ensembles de données audio sur le Hub
- Remarques finales
Le Hub
Le Hub Hugging Face est une plateforme pour héberger des modèles, des ensembles de données et des démonstrations, tous en open source et disponibles publiquement. Il abrite une collection croissante d’ensembles de données audio qui couvrent divers domaines, tâches et langues. Grâce à des intégrations étroites avec 🤗 Datasets, tous les ensembles de données sur le Hub peuvent être téléchargés en une seule ligne de code.
- Parlons des biais dans l’apprentissage automatique ! Newsletter d’éthique et de société n°2
- Cartes de modèle
- Segmentation d’image sans apprentissage préalable avec CLIPSeg
Allons sur le Hub et filtrons les ensembles de données par tâche :
- Ensembles de données de reconnaissance vocale sur le Hub
- Ensembles de données de classification audio sur le Hub
Au moment de la rédaction, il y a 77 ensembles de données de reconnaissance vocale et 28 ensembles de données de classification audio sur le Hub, et ces chiffres augmentent constamment. Vous pouvez choisir n’importe lequel de ces ensembles de données en fonction de vos besoins. Voyons le premier résultat de reconnaissance vocale. En cliquant sur common_voice
, nous faisons apparaître la fiche de l’ensemble de données :
Ici, nous pouvons trouver des informations supplémentaires sur l’ensemble de données, voir sur quels modèles il a été entraîné et, surtout, écouter des échantillons audio réels. L’aperçu de l’ensemble de données est présenté au milieu de la fiche de l’ensemble de données. Il nous montre les 100 premiers échantillons pour chaque sous-ensemble et partition. De plus, il charge les échantillons audio prêts à être écoutés en temps réel. Si nous cliquons sur le bouton de lecture du premier échantillon, nous pouvons écouter l’audio et voir le texte correspondant.
L’aperçu de l’ensemble de données est un moyen brillant de découvrir des ensembles de données audio avant de décider de les utiliser. Vous pouvez choisir n’importe quel ensemble de données sur le Hub, parcourir les échantillons et écouter l’audio pour les différents sous-ensembles et partitions, afin de déterminer s’il convient à vos besoins. Une fois que vous avez sélectionné un ensemble de données, il est facile de charger les données pour commencer à les utiliser.
Charger un ensemble de données audio
Une des caractéristiques clés de 🤗 Datasets est la possibilité de télécharger et de préparer un ensemble de données en seulement une ligne de code Python. Cela est rendu possible grâce à la fonction load_dataset
. En général, charger un ensemble de données implique : i) télécharger les données brutes, ii) les extraire de leur format compressé, et iii) préparer les échantillons individuels et les partitions. En utilisant load_dataset
, tout le travail lourd est effectué en interne.
Prenons l’exemple du chargement de l’ensemble de données GigaSpeech depuis Speech Colab. GigaSpeech est un ensemble de données de reconnaissance vocale relativement récent pour l’évaluation des systèmes de reconnaissance vocale académiques, et il fait partie des nombreux ensembles de données audio disponibles sur le Hub Hugging Face.
Pour charger l’ensemble de données GigaSpeech, il suffit de prendre l’identifiant de l’ensemble de données sur le Hub ( speechcolab/gigaspeech
) et de le spécifier à la fonction load_dataset
. GigaSpeech est disponible en cinq configurations de taille croissante, allant de xs
(10 heures) à xl
(10 000 heures). Dans le cadre de ce tutoriel, nous chargerons la plus petite de ces configurations. L’identifiant de l’ensemble de données et la configuration souhaitée sont tout ce dont nous avons besoin pour télécharger l’ensemble de données :
from datasets import load_dataset
gigaspeech = load_dataset("speechcolab/gigaspeech", "xs")
print(gigaspeech)
Sortie d’impression :
DatasetDict({
train: Dataset({
features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
num_rows: 9389
})
validation: Dataset({
features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
num_rows: 6750
})
test: Dataset({
features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
num_rows: 25619
})
})
Et voilà, nous avons le jeu de données GigaSpeech prêt ! Il n’y a tout simplement pas de moyen plus facile de charger un jeu de données audio. Nous pouvons voir que nous avons les partitions d’entraînement, de validation et de test pré-définies, avec les informations correspondantes pour chacune.
L’objet gigaspeech
retourné par la fonction load_dataset
est un DatasetDict
. Nous pouvons le traiter de la même manière qu’un dictionnaire Python ordinaire. Pour obtenir la partition d’entraînement, nous passons la clé correspondante au dictionnaire gigaspeech
:
print(gigaspeech["train"])
Sortie d’impression :
Dataset({
features: ['segment_id', 'speaker', 'text', 'audio', 'begin_time', 'end_time', 'audio_id', 'title', 'url', 'source', 'category', 'original_full_path'],
num_rows: 9389
})
Cela renvoie un objet Dataset
, qui contient les données de la partition d’entraînement. Nous pouvons aller un niveau plus profond et obtenir le premier élément de la partition. Encore une fois, cela est possible grâce à l’indexation standard de Python :
print(gigaspeech["train"][0])
Sortie d’impression :
{'segment_id': 'YOU0000000315_S0000660',
'speaker': 'N/A',
'text': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>",
'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav',
'array': array([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
0.00036621], dtype=float32),
'sampling_rate': 16000
},
'begin_time': 2941.889892578125,
'end_time': 2945.070068359375,
'audio_id': 'YOU0000000315',
'title': 'Return to Vasselheim | Critical Role: VOX MACHINA | Episode 43',
'url': 'https://www.youtube.com/watch?v=zr2n1fLVasU',
'source': 2,
'category': 24,
'original_full_path': 'audio/youtube/P0004/YOU0000000315.opus',
}
Nous pouvons voir qu’il y a plusieurs caractéristiques renvoyées par la partition d’entraînement, notamment segment_id
, speaker
, text
, audio
et plus encore. Pour la reconnaissance vocale, nous nous intéresserons aux colonnes text
et audio
.
En utilisant la méthode remove_columns
de 🤗 Datasets, nous pouvons supprimer les caractéristiques du jeu de données qui ne sont pas nécessaires pour la reconnaissance vocale :
COLUMNS_TO_KEEP = ["text", "audio"]
all_columns = gigaspeech["train"].column_names
columns_to_remove = set(all_columns) - set(COLUMNS_TO_KEEP)
gigaspeech = gigaspeech.remove_columns(columns_to_remove)
Vérifions que nous avons bien conservé les colonnes texte
et audio
:
print(gigaspeech["train"][0])
Résultat de l’impression:
{'texte': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>",
'audio': {'chemin': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav',
'tableau': tableau([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
0.00036621], dtype=float32),
'taux_échantillonnage': 16000}}
Génial ! Nous pouvons voir que nous avons les deux colonnes requises texte
et audio
. Le texte
est une chaîne de caractères avec la transcription de l’échantillon et l’audio
est un tableau à une dimension contenant les valeurs d’amplitude à un taux d’échantillonnage de 16 kHz. Notre ensemble de données est chargé !
Facile à Charger, Facile à Traiter
Charger un ensemble de données avec 🤗 Datasets est seulement la moitié du plaisir. Nous pouvons maintenant utiliser l’ensemble d’outils disponibles pour prétraiter efficacement nos données afin de les rendre prêtes pour l’entraînement ou l’inférence du modèle. Dans cette section, nous effectuerons trois étapes de prétraitement des données :
- Resampling des données audio
- Fonction de prétraitement
- Fonction de filtrage
1. Resampling des données audio
La fonction load_dataset
prépare les échantillons audio avec le taux d’échantillonnage avec lequel ils ont été publiés. Ce n’est pas toujours le taux d’échantillonnage attendu par notre modèle. Dans ce cas, nous devons rééchantillonner l’audio au taux d’échantillonnage correct.
Nous pouvons définir les entrées audio avec le taux d’échantillonnage souhaité en utilisant la méthode cast_column
de 🤗 Datasets. Cette opération ne modifie pas l’audio en place, mais indique plutôt à datasets
de rééchantillonner les échantillons audio à la volée lorsqu’ils sont chargés. Le code suivant définira le taux d’échantillonnage sur 8 kHz :
from datasets import Audio
gigaspeech = gigaspeech.cast_column("audio", Audio(sampling_rate=8000))
Le rechargement du premier échantillon audio dans l’ensemble de données GigaSpeech rééchantillonnera celui-ci au taux d’échantillonnage souhaité :
print(gigaspeech["train"][0])
Résultat de l’impression :
{'texte': "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>",
'audio': {'chemin': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav',
'tableau': tableau([ 0.00046338, 0.00034808, -0.00086153, ..., 0.00099299,
0.00083484, 0.00080221], dtype=float32),
'taux_échantillonnage': 8000}
}
Nous pouvons voir que le taux d’échantillonnage a été réduit à 8 kHz. Les valeurs du tableau sont également différentes, car nous avons maintenant environ une valeur d’amplitude pour chaque deux que nous avions auparavant. Rétablissons le taux d’échantillonnage de l’ensemble de données à 16 kHz, le taux d’échantillonnage attendu par la plupart des modèles de reconnaissance vocale :
gigaspeech = gigaspeech.cast_column("audio", Audio(sampling_rate=16000))
print(gigaspeech["train"][0])
Sortie imprimée :
{'text': "ALORS QU'ILS PARTENT <VIRGULE> EST-CE QUE KASH PEUT ATTIRER ZAHRA À PART TRÈS RAPIDEMENT <POINT D'INTERROGATION>",
'audio': {'path': '/home/sanchit_huggingface_co/.cache/huggingface/datasets/downloads/extracted/7f8541f130925e9b2af7d37256f2f61f9d6ff21bf4a94f7c1a3803ec648d7d79/xs_chunks_0000/YOU0000000315_S0000660.wav',
'array': array([0.0005188 , 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294,
0.00036621], dtype=float32),
'sampling_rate': 16000}
}
Facile ! cast_column
offre un mécanisme simple pour rééchantillonner les ensembles de données audio selon les besoins.
2. Fonction de prétraitement
L’un des aspects les plus difficiles de travailler avec des ensembles de données audio est de préparer les données dans le bon format pour notre modèle. En utilisant la méthode map
de 🤗 Datasets, nous pouvons écrire une fonction pour prétraiter un seul échantillon de l’ensemble de données, puis l’appliquer à chaque échantillon sans aucun changement de code.
Tout d’abord, chargeons un objet processeur à partir de 🤗 Transformers. Ce processeur prétraite l’audio en fonctionnalités d’entrée et tokenise le texte cible en étiquettes. La classe AutoProcessor
est utilisée pour charger un processeur à partir d’un point de contrôle de modèle donné. Dans l’exemple, nous chargeons le processeur à partir du point de contrôle Whisper VoAGI.en d’OpenAI, mais vous pouvez le modifier pour n’importe quel identifiant de modèle sur le Hub Hugging Face :
from transformers import AutoProcessor
processor = AutoProcessor.from_pretrained("openai/whisper-VoAGI.en")
Génial ! Maintenant, nous pouvons écrire une fonction qui prend un seul échantillon d’entraînement et le passe à travers le processeur
pour le préparer pour notre modèle. Nous calculerons également la longueur d’entrée de chaque échantillon audio, une information dont nous aurons besoin pour l’étape suivante de préparation des données :
def prepare_dataset(batch):
audio = batch["audio"]
batch = processor(audio["array"], sampling_rate=audio["sampling_rate"], text=batch["text"])
batch["input_length"] = len(audio["array"]) / audio["sampling_rate"]
return batch
Nous pouvons appliquer la fonction de préparation des données à tous nos exemples d’entraînement en utilisant la méthode map
de 🤗 Datasets. Ici, nous supprimons également les colonnes text
et audio
, car nous avons prétraité l’audio en fonctionnalités d’entrée et tokenisé le texte en étiquettes :
gigaspeech = gigaspeech.map(prepare_dataset, remove_columns=gigaspeech["train"].column_names)
3. Fonction de filtrage
Avant l’entraînement, nous pouvons avoir une heuristique pour filtrer nos données d’entraînement. Par exemple, nous voulons peut-être filtrer tous les échantillons audio plus longs que 30s pour éviter de tronquer les échantillons audio ou de risquer des erreurs de mémoire insuffisante. Nous pouvons le faire de la même manière que nous avons préparé les données pour notre modèle à l’étape précédente.
Nous commençons par écrire une fonction qui indique quels échantillons conserver et lesquels rejeter. Cette fonction, is_audio_length_in_range
, renvoie un booléen : les échantillons plus courts que 30s renvoient True, et ceux qui sont plus longs renvoient False.
DURÉE_MAX_EN_SECONDES = 30.0
def is_audio_length_in_range(input_length):
return input_length < DURÉE_MAX_EN_SECONDES
Nous pouvons appliquer cette fonction de filtrage à tous nos exemples d’entraînement en utilisant la méthode filter
de 🤗 Datasets, en conservant tous les échantillons plus courts que 30s (True) et en écartant ceux qui sont plus longs (False) :
gigaspeech["train"] = gigaspeech["train"].filter(is_audio_length_in_range, input_columns=["input_length"])
Et voilà, l’ensemble de données GigaSpeech est entièrement préparé pour notre modèle ! Au total, ce processus a nécessité 13 lignes de code Python, depuis le chargement de l’ensemble de données jusqu’à l’étape finale de filtrage.
En gardant le cahier aussi général que possible, nous avons seulement effectué les étapes fondamentales de préparation des données. Cependant, il n’y a aucune restriction quant aux fonctions que vous pouvez appliquer à votre ensemble de données audio. Vous pouvez étendre la fonction prepare_dataset
pour effectuer des opérations beaucoup plus complexes, telles que l’augmentation des données, la détection d’activité vocale ou la réduction du bruit. Avec 🤗 Datasets, si vous pouvez l’écrire dans une fonction Python, vous pouvez l’appliquer à votre ensemble de données !
Mode Streaming : La Solution Miracle
Un des plus grands défis auxquels sont confrontés les ensembles de données audio est leur taille considérable. La configuration xs
de GigaSpeech ne contenait que 10 heures de données d’entraînement, mais a nécessité plus de 13 Go d’espace de stockage pour le téléchargement et la préparation. Alors que se passe-t-il lorsque nous voulons nous entraîner sur une partition plus grande ? La configuration xl
complète contient 10 000 heures de données d’entraînement, nécessitant plus de 1 To d’espace de stockage. Pour la plupart des chercheurs en parole, cela dépasse largement les spécifications d’un disque dur typique. Devons-nous investir et acheter un espace de stockage supplémentaire ? Ou existe-t-il un moyen de s’entraîner sur ces ensembles de données sans contraintes d’espace disque ?
🤗 Datasets nous permet de faire exactement cela. C’est possible grâce à l’utilisation du mode streaming, représenté graphiquement dans la Figure 1. Le streaming nous permet de charger les données progressivement au fur et à mesure que nous itérons sur l’ensemble de données. Au lieu de télécharger l’ensemble de données en une fois, nous chargeons l’échantillon de données par échantillon. Nous itérons sur l’ensemble de données, en chargeant et en préparant les échantillons au fur et à mesure de leur besoin. De cette façon, nous ne chargeons jamais que les échantillons que nous utilisons, et pas ceux que nous n’utilisons pas ! Une fois que nous avons terminé avec un échantillon, nous continuons d’itérer sur l’ensemble de données et chargeons le suivant.
Cela est analogue au téléchargement d’une émission de télévision par rapport à son streaming. Lorsque nous téléchargeons une émission de télévision, nous téléchargeons la vidéo entière hors ligne et la sauvegardons sur notre disque. Nous devons attendre que la vidéo entière se télécharge avant de pouvoir la regarder et cela nécessite autant d’espace disque que la taille du fichier vidéo. Comparez cela au streaming d’une émission de télévision. Ici, nous ne téléchargeons aucune partie de la vidéo sur le disque, mais itérons plutôt sur le fichier vidéo distant et chargeons chaque partie en temps réel au fur et à mesure de notre besoin. Nous n’avons pas besoin d’attendre que la vidéo entière soit mise en mémoire tampon avant de pouvoir commencer à regarder, nous pouvons commencer dès que la première partie de la vidéo est prête ! C’est le même principe de streaming que nous appliquons au chargement des ensembles de données.

Le mode streaming présente trois avantages principaux par rapport au téléchargement de l’ensemble de données en une fois :
- Espace disque : les échantillons sont chargés en mémoire un par un au fur et à mesure de notre itération sur l’ensemble de données. Étant donné que les données ne sont pas téléchargées localement, il n’y a pas de contraintes d’espace disque, vous pouvez donc utiliser des ensembles de données de taille arbitraire.
- Temps de téléchargement et de traitement : les ensembles de données audio sont volumineux et nécessitent une quantité importante de temps pour être téléchargés et traités. Avec le streaming, le chargement et le traitement sont effectués à la volée, ce qui signifie que vous pouvez commencer à utiliser l’ensemble de données dès que le premier échantillon est prêt.
- Expérimentation facile : vous pouvez expérimenter sur un petit nombre d’échantillons pour vérifier que votre script fonctionne sans avoir à télécharger l’ensemble de données entier.
Il y a une exception au mode streaming. Lorsque nous téléchargeons un ensemble de données, les données brutes et les données traitées sont toutes deux enregistrées localement sur le disque. Si nous voulons réutiliser cet ensemble de données, nous pouvons directement charger les données traitées à partir du disque, en évitant ainsi les étapes de téléchargement et de traitement. Par conséquent, nous ne devons effectuer les opérations de téléchargement et de traitement qu’une seule fois, après quoi nous pouvons réutiliser les données préparées. Avec le mode streaming, les données ne sont pas téléchargées sur le disque. Ainsi, ni les données téléchargées ni les données prétraitées ne sont mises en cache. Si nous voulons réutiliser l’ensemble de données, les étapes de streaming doivent être répétées, avec les fichiers audio chargés et traités à la volée à nouveau. Pour cette raison, il est conseillé de télécharger les ensembles de données que vous êtes susceptible d’utiliser plusieurs fois.
Comment pouvez-vous activer le mode streaming ? Facile ! Il vous suffit de définir streaming=True
lorsque vous chargez votre ensemble de données. Le reste sera pris en charge pour vous :
gigaspeech = load_dataset("speechcolab/gigaspeech", "xs", streaming=True)
Toutes les étapes couvertes jusqu’à présent dans ce tutoriel peuvent être appliquées à l’ensemble de données en streaming sans aucun changement de code. La seule différence est que vous ne pouvez plus accéder aux échantillons individuels en utilisant l’indexation Python (c.-à-d. gigaspeech["train"][sample_idx]
). Au lieu de cela, vous devez itérer sur l’ensemble de données, en utilisant par exemple une boucle for
.
Le mode streaming peut faire passer votre recherche au niveau supérieur : non seulement les plus grands ensembles de données vous sont accessibles, mais vous pouvez facilement évaluer des systèmes sur plusieurs ensembles de données en une seule fois sans vous soucier de l’espace de votre disque. Comparé à l’évaluation sur un seul ensemble de données, l’évaluation multi-ensemble donne une meilleure mesure des capacités de généralisation d’un système de reconnaissance vocale (cf. End-to-end Speech Benchmark (ESB)). Le Google Colab accompagnant fournit un exemple d’évaluation du modèle Whisper sur huit ensembles de données de reconnaissance vocale en anglais dans un seul script utilisant le mode streaming.
Une visite des ensembles de données audio sur The Hub
Cette section sert de guide de référence pour les ensembles de données les plus populaires de reconnaissance vocale, de traduction vocale et de classification audio sur le Hugging Face Hub. Nous pouvons appliquer tout ce que nous avons couvert pour l’ensemble de données GigaSpeech à n’importe lequel des ensembles de données sur le Hub. Tout ce que nous avons à faire est de changer l’identifiant de l’ensemble de données dans la fonction load_dataset
. C’est aussi simple que ça !
- Reconnaissance vocale en anglais
- Reconnaissance vocale multilingue
- Traduction vocale
- Classification audio
Reconnaissance vocale en anglais
La reconnaissance vocale, ou la conversion de la parole en texte, est la tâche qui consiste à mapper la parole parlée sur le texte écrit, où la parole et le texte sont dans la même langue. Nous fournissons un résumé des ensembles de données de reconnaissance vocale les plus populaires en anglais sur le Hub :
Consultez le Google Colab pour un guide sur l’évaluation d’un système sur les huit ensembles de données de reconnaissance vocale en anglais dans un seul script.
Les descriptions d’ensemble de données suivantes sont largement tirées de l’article de référence de l’ESB Benchmark.
LibriSpeech ASR
LibriSpeech est un ensemble de données standard à grande échelle pour l’évaluation des systèmes ASR. Il est composé d’environ 1 000 heures de livres audio narrés collectés à partir du projet LibriVox. LibriSpeech a été essentiel pour permettre aux chercheurs de tirer parti d’un large corpus de données de parole transcrit préexistantes. En tant que tel, il est devenu l’un des ensembles de données les plus populaires pour l’évaluation des systèmes académiques de parole.
librispeech = load_dataset("librispeech_asr", "all")
Common Voice
Common Voice est une série d’ensembles de données vocales sous licence libre et contributive, où les locuteurs enregistrent du texte provenant de Wikipédia dans différentes langues. Étant donné que n’importe qui peut contribuer à l’enregistrement, il existe une variation significative tant en termes de qualité audio que de locuteurs. Les conditions audio sont difficiles, avec des artefacts sonores, de la parole accentuée, des hésitations et la présence de mots étrangers. Les transcriptions sont en minuscules et ponctuées. Le sous-ensemble anglais de la version 11.0 contient environ 2 300 heures de données validées. L’utilisation de l’ensemble de données nécessite votre accord sur les conditions d’utilisation de Common Voice, que vous pouvez trouver sur le Hugging Face Hub : mozilla-foundation/common_voice_11_0. Une fois que vous avez accepté les conditions d’utilisation, vous aurez accès à l’ensemble de données. Vous devrez ensuite fournir un jeton d’authentification à partir du Hub lorsque vous chargez l’ensemble de données.
common_voice = load_dataset("mozilla-foundation/common_voice_11", "en", use_auth_token=True)
VoxPopuli
VoxPopuli est un corpus vocal multilingue à grande échelle composé de données provenant d’enregistrements d’événements du Parlement européen de 2009 à 2020. En conséquence, il occupe le domaine unique de l’oratoire, du discours politique, principalement issus de locuteurs non natifs. Le sous-ensemble anglais contient environ 550 heures de discours étiquetés.
voxpopuli = load_dataset("facebook/voxpopuli", "en")
TED-LIUM
TED-LIUM est un ensemble de données basé sur des vidéos de conférences TED Talk en langue anglaise. Le style de parole est celui des discours éducatifs. Les discours transcrits couvrent un éventail de sujets culturels, politiques et académiques différents, ce qui entraîne un vocabulaire technique. La version 3 (la plus récente) de l’ensemble de données contient environ 450 heures de données d’entraînement. Les données de validation et de test proviennent de l’ensemble hérité, conforme aux versions précédentes.
tedlium = load_dataset("LIUM/tedlium", "release3")
GigaSpeech
GigaSpeech est un corpus de reconnaissance automatique de la parole anglais multi-domaine sélectionné à partir de livres audio, de podcasts et de YouTube. Il couvre à la fois la parole narrée et spontanée sur une variété de sujets tels que les arts, la science et les sports. Il contient des ensembles d’entraînement variant de 10 heures à 10 000 heures et des ensembles de validation et de test standardisés.
gigaspeech = load_dataset("speechcolab/gigaspeech", "xs", use_auth_token=True)
SPGISpeech
SPGISpeech est un corpus de reconnaissance automatique de la parole anglais composé d’appels de résultats d’entreprise qui ont été transcrits manuellement par S&P Global, Inc. Les transcriptions sont entièrement formatées selon un guide de style professionnel pour l’éloquence et la parole spontanée. Il contient des ensembles d’entraînement allant de 200 heures à 5 000 heures, avec des ensembles de validation et de test canoniques.
spgispeech = load_dataset("kensho/spgispeech", "s", use_auth_token=True)
Earnings-22
Earnings-22 est un corpus de 119 heures d’appels de résultats en langue anglaise provenant d’entreprises mondiales. L’ensemble de données a été développé dans le but de regrouper un large éventail de locuteurs et d’accents couvrant une gamme de sujets financiers réels. Il y a une grande diversité dans les locuteurs et les accents, avec des locuteurs issus de sept régions linguistiques différentes. Earnings-22 a été principalement publié en tant qu’ensemble de données uniquement pour les tests. Le Hub contient une version de l’ensemble de données qui a été partitionnée en ensembles d’entraînement, de validation et de test.
earnings22 = load_dataset("revdotcom/earnings22")
AMI
AMI comprend 100 heures d’enregistrements de réunions capturés à l’aide de différents flux d’enregistrement. Le corpus contient des transcriptions orthographiques annotées manuellement des réunions alignées au niveau des mots. Les échantillons individuels de l’ensemble de données AMI contiennent des fichiers audio très volumineux (entre 10 et 60 minutes), qui sont segmentés à des longueurs praticables pour l’entraînement de la plupart des systèmes de reconnaissance de la parole. AMI contient deux ensembles : IHM et SDM. IHM (microphone individuel) contient une parole de champ proche plus facile, et SDM (microphone distant unique) contient une parole de champ lointain plus difficile.
ami = load_dataset("edinburghcstr/ami", "ihm")
Reconnaissance de la parole multilingue
La reconnaissance de la parole multilingue fait référence à la reconnaissance de la parole (conversion de la parole en texte) pour toutes les langues sauf l’anglais.
Multilingual LibriSpeech
Multilingual LibriSpeech est l’équivalent multilingue du corpus d’ASR (Automatic Speech Recognition) LibriSpeech. Il comprend un grand corpus de livres audio lus à partir du projet LibriVox, ce qui en fait un ensemble de données adapté à la recherche universitaire. Il contient des données réparties dans huit langues à ressources élevées : anglais, allemand, néerlandais, espagnol, français, italien, portugais et polonais.
Common Voice
Common Voice est une série d’ensembles de données vocales sous licence libre et réalisés en crowdsourcing, dans lesquels les locuteurs enregistrent du texte provenant de Wikipédia dans différentes langues. Étant donné que n’importe qui peut contribuer aux enregistrements, il y a une variation significative tant au niveau de la qualité audio que des locuteurs. Les conditions audio sont difficiles, avec des artefacts d’enregistrement, de la parole avec accent, des hésitations et la présence de mots étrangers. Les transcriptions sont en majuscules et ponctuées. À partir de la version 11, plus de 100 langues sont disponibles, tant à ressources faibles que élevées.
VoxPopuli
VoxPopuli est un corpus vocal multilingue à grande échelle composé de données provenant d’enregistrements d’événements du Parlement européen de 2009 à 2020. Par conséquent, il occupe le domaine unique de l’éloquence, du discours politique, principalement provenant de locuteurs non natifs. Il contient des données audio-transcription étiquetées pour 15 langues européennes.
FLEURS
FLEURS (Few-shot Learning Evaluation of Universal Representations of Speech) est un ensemble de données permettant d’évaluer les systèmes de reconnaissance de la parole dans 102 langues, dont beaucoup sont classées comme “à faible ressource”. Les données sont dérivées de l’ensemble de données FLoRes-101, un corpus de traduction automatique comprenant 3001 traductions de phrases de l’anglais vers 101 autres langues. Des locuteurs natifs enregistrent les transcriptions des phrases dans leur langue maternelle. Les données audio enregistrées sont associées aux transcriptions des phrases pour permettre la reconnaissance de la parole multilingue dans les 101 langues. Les ensembles d’entraînement contiennent environ 10 heures de données audio-transcription supervisées par langue.
Traduction de la parole
La traduction de la parole est la tâche qui consiste à mapper la parole parlée en texte écrit, où la parole et le texte sont dans des langues différentes (par exemple, de l’anglais parlé au texte français).
CoVoST 2
CoVoST 2 est un corpus de traduction de la parole multilingue à grande échelle couvrant les traductions de 21 langues vers l’anglais et de l’anglais vers 15 langues. Le jeu de données est créé à partir de la base de données Common Voice de Mozilla, qui est une base de données de voix enregistrées provenant de la foule. Il y a 2 900 heures de discours représentées dans le corpus.
FLEURS
FLEURS (Evaluation de l’apprentissage à partir de quelques exemples des représentations universelles de la parole) est un ensemble de données pour l’évaluation des systèmes de reconnaissance de la parole dans 102 langues, dont beaucoup sont classées comme « à faibles ressources ». Les données sont dérivées de l’ensemble de données FLoRes-101, un corpus de traduction automatique comprenant 3001 traductions de phrases de l’anglais vers 101 autres langues. Les locuteurs natifs enregistrent les transcriptions des phrases dans leurs langues maternelles. Un corpus parallèle n-n-n de données de traduction de la parole est construit en associant les données audio enregistrées aux transcriptions des phrases pour chacune des 101 langues. Les ensembles d’entraînement contiennent environ 10 heures de données audio-transcription supervisées par combinaison de langues source-cible.
Classification audio
La classification audio est la tâche qui consiste à mapper une entrée audio brute à une étiquette de classe de sortie. Les applications pratiques de la classification audio incluent la détection de mots-clés, l’intention des locuteurs et l’identification de la langue.
SpeechCommands
SpeechCommands est un ensemble de données composé de fichiers audio d’une seconde, contenant chacun un seul mot parlé en anglais ou du bruit de fond. Les mots sont extraits d’un petit ensemble de commandes et sont prononcés par plusieurs locuteurs différents. L’ensemble de données est conçu pour aider à entraîner et évaluer les petits systèmes de détection de mots-clés embarqués.
Mots parlés multilingues
Mots parlés multilingues est un corpus à grande échelle d’échantillons audio d’une seconde, contenant chacun un seul mot parlé. L’ensemble de données comprend 50 langues et plus de 340 000 mots-clés, soit un total de 23,4 millions d’exemples parlés d’une seconde ou plus de 6 000 heures d’audio. Les données audio-transcription sont issues du projet Common Voice de Mozilla. Des horodatages sont générés pour chaque énoncé au niveau des mots et utilisés pour extraire les mots parlés individuels et leurs transcriptions correspondantes, formant ainsi un nouveau corpus de mots parlés uniques. L’utilisation prévue de l’ensemble de données est la recherche académique et les applications commerciales dans la détection multilingue de mots-clés et la recherche de termes parlés.
FLEURS
FLEURS (Evaluation de l’apprentissage à partir de quelques exemples des représentations universelles de la parole) est un ensemble de données pour l’évaluation des systèmes de reconnaissance de la parole dans 102 langues, dont beaucoup sont classées comme « à faibles ressources ». Les données sont dérivées de l’ensemble de données FLoRes-101, un corpus de traduction automatique comprenant 3001 traductions de phrases de l’anglais vers 101 autres langues. Les locuteurs natifs enregistrent les transcriptions des phrases dans leurs langues maternelles. Les données audio enregistrées sont associées à une étiquette pour la langue dans laquelle elles sont parlées. L’ensemble de données peut être utilisé comme ensemble de données de classification audio pour l’identification de la langue : les systèmes sont entraînés à prédire la langue de chaque énoncé dans le corpus.
Remarques finales
Dans ce billet de blog, nous avons exploré le Hub Hugging Face et avons utilisé l’aperçu de l’ensemble de données, un moyen efficace d’écouter les ensembles de données audio avant de les télécharger. Nous avons chargé un ensemble de données audio avec une seule ligne de code Python et avons effectué une série d’étapes de prétraitement génériques pour le préparer à un modèle d’apprentissage automatique. Au total, cela n’a nécessité que 13 lignes de code, en utilisant des fonctions Python simples pour effectuer les opérations nécessaires. Nous avons introduit le mode de streaming, une méthode pour charger et préparer des échantillons de données audio à la volée. Nous avons conclu en résumant les ensembles de données les plus populaires de reconnaissance de la parole, de traduction de la parole et de classification audio sur le Hub.
Après avoir lu ce blog, nous espérons que vous êtes d’accord que 🤗 Datasets est le meilleur endroit pour télécharger et préparer des ensembles de données audio. 🤗 Datasets est rendu possible grâce au travail de la communauté. Si vous souhaitez contribuer à un ensemble de données, consultez le guide pour ajouter un nouvel ensemble de données.
Nous tenons à remercier les personnes suivantes qui ont contribué à ce billet de blog : Vaibhav Srivastav, Polina Kazakova, Patrick von Platen, Omar Sanseviero et Quentin Lhoest.
We will continue to update IPGirl; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Accélérer les transformateurs PyTorch avec Intel Sapphire Rapids – partie 1
- IA pour le développement de jeux Création d’un jeu de ferme en 5 jours. Partie 1
- Introduction à l’apprentissage machine sur les graphes
- IA pour le développement de jeux Création d’un jeu de ferme en 5 jours. Partie 2
- Similarité d’image avec les ensembles de données et les transformateurs Hugging Face
- Bienvenue à PaddlePaddle sur le Hugging Face Hub
- Segmentation universelle des images avec Mask2Former et OneFormer