Datasets documentation

إنشاء مجموعة بيانات صوتية

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

إنشاء مجموعة بيانات صوتية

يمكنك مشاركة مجموعة بيانات مع فريقك أو مع أي شخص في المجتمع من خلال إنشاء مستودع مجموعة بيانات على Hugging Face Hub:

from datasets import load_dataset

dataset = load_dataset("<username>/my_dataset")

تتوفر عدة طرق لإنشاء مجموعة بيانات صوتية ومشاركتها:

  • أنشئ مجموعة بيانات صوتية من ملفات محلية بلغة بايثون باستخدام Dataset.push_to_hub(). هذه طريقة سهلة تتطلب بضع خطوات فقط في بايثون.

  • أنشئ مستودع مجموعة بيانات صوتية باستخدام منشئ AudioFolder. هذا حل بدون كتابة أكواد لإنشاء مجموعة بيانات صوتية بسرعة تحتوي على آلاف الملفات الصوتية.

يمكنك التحكم في الوصول إلى مجموعة بياناتك من خلال اشتراط مشاركة المستخدمين لمعلومات التواصل الخاصة بهم أولاً. اطّلع على دليل مجموعات البيانات المُقيَّدة لمزيد من المعلومات حول كيفية تفعيل هذه الميزة على Hub.

الملفات المحلية

يمكنك تحميل مجموعة بياناتك الخاصة باستخدام المسارات إلى ملفات الصوت الخاصة بك. استخدم دالة cast_column() لأخذ عمود من مسارات ملفات الصوت، وتحويله إلى ميزة Audio:

>>> audio_dataset = Dataset.from_dict({"audio": ["path/to/audio_1", "path/to/audio_2", ..., "path/to/audio_n"]}).cast_column("audio", Audio())
>>> audio_dataset[0]["audio"]
<datasets.features._torchcodec.AudioDecoder object at 0x11642b6a0>

ثم ارفع مجموعة البيانات إلى Hugging Face Hub باستخدام Dataset.push_to_hub():

audio_dataset.push_to_hub("<username>/my_dataset")

سيؤدي هذا إلى إنشاء مستودع مجموعة بيانات يحتوي على مجموعة بيانات الصوت الخاصة بك:

my_dataset/
├── README.md
└── data/
    └── train-00000-of-00001.parquet

AudioFolder

يُعدّ AudioFolder أداة لبناء مجموعات البيانات مصممة لتحميل مجموعة بيانات صوتية تضم آلاف الملفات الصوتية بسرعة دون الحاجة إلى كتابة أي كود.

💡 اطّلع على تسلسل هرمية نمط التقسيم لمعرفة المزيد حول كيفية إنشاء AudioFolder لتقسيمات مجموعة البيانات بناءً على بنية مستودع مجموعة البيانات الخاصة بك.

يستنتج AudioFolder تلقائيًا تسميات الفئات في مجموعة بياناتك بناءً على اسم المجلد. قم بتخزين مجموعة بياناتك في بنية مجلدات على النحو التالي:

folder/train/dog/golden_retriever.mp3
folder/train/dog/german_shepherd.mp3
folder/train/dog/chihuahua.mp3

folder/train/cat/maine_coon.mp3
folder/train/cat/bengal.mp3
folder/train/cat/birman.mp3

إذا اتبع مجموعة البيانات بنية AudioFolder، فيمكنك تحميلها مباشرةً باستخدام load_dataset():

>>> from datasets import load_dataset

>>> dataset = load_dataset("username/dataset_name")

يعادل هذا تمرير audiofolder يدويًا في load_dataset() والمجلد في data_dir:

>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")

يمكنك أيضًا استخدام audiofolder لتحميل مجموعات البيانات التي تتضمن تقسيمات متعددة. للقيام بذلك، يجب أن يكون لمجلد مجموعة البيانات البنية التالية:

folder/train/dog/golden_retriever.mp3
folder/train/cat/maine_coon.mp3
folder/test/dog/german_shepherd.mp3
folder/test/cat/bengal.mp3

إذا كانت جميع ملفات الصوت موجودة في مجلد واحد أو لم تكن على نفس مستوى هيكل المجلدات، فلن يتم إضافة عمود label تلقائيًا. إذا كنت بحاجة إليه، فقم بتعيين drop_labels=False بشكل صريح.

إذا كانت هناك معلومات إضافية ترغب في تضمينها حول مجموعة بياناتك، مثل التسميات النصية أو صناديق الحدود، أضفها كملف metadata.csv في مجلدك. يتيح لك ذلك إنشاء مجموعات بيانات بسرعة لمهام مختلفة في مجال الرؤية الحاسوبية مثل التسمية النصية أو كشف الكائنات. يمكنك أيضًا استخدام ملف JSONL metadata.jsonl أو ملف Parquet metadata.parquet.

folder/train/metadata.csv
folder/train/0001.mp3
folder/train/0002.mp3
folder/train/0003.mp3

يمكنك أيضًا ضغط ملفات الصوت الخاصة بك، وفي هذه الحالة يجب أن يحتوي كل ملف مضغوط على ملفات الصوت وبيانات الوصف معًا

folder/train.zip
folder/test.zip
folder/validation.zip

يجب أن يحتوي ملف metadata.csv الخاص بك على حقل file_name أو *_file_name يربط ملفات الصوت ببياناتها الوصفية:

file_name,additional_feature
0001.mp3,This is a first value of a text feature you added to your audio files
0002.mp3,This is a second value of a text feature you added to your audio files
0003.mp3,This is a third value of a text feature you added to your audio files

أو باستخدام metadata.jsonl:

{"file_name": "0001.mp3", "additional_feature": "This is a first value of a text feature you added to your audio files"}
{"file_name": "0002.mp3", "additional_feature": "This is a second value of a text feature you added to your audio files"}
{"file_name": "0003.mp3", "additional_feature": "This is a third value of a text feature you added to your audio files"}

هنا يجب أن يكون file_name اسم ملف الصوت المجاور لملف البيانات الوصفية. وبشكل أكثر عمومية، يجب أن يكون المسار النسبي من المجلد الذي يحتوي على البيانات الوصفية إلى ملف الصوت.

من الممكن الإشارة إلى أكثر من ملف صوتي في كل صف من مجموعة البيانات الخاصة بك، على سبيل المثال إذا كان كلٌّ من مدخلاتك ومخرجاتك ملفات صوتية:

{"input_file_name": "0001.mp3", "output_file_name": "0001_output.mp3"}
{"input_file_name": "0002.mp3", "output_file_name": "0002_output.mp3"}
{"input_file_name": "0003.mp3", "output_file_name": "0003_output.mp3"}

يمكنك أيضًا تعريف قوائم من ملفات الصوت. في هذه الحالة، يجب أن تسمي الحقل file_names أو *_file_names. إليك مثال:

{"recordings_file_names": ["0001_r0.mp3", "0001_r1.mp3"], label: "same_person"}
{"recordings_file_names": ["0002_r0.mp3", "0002_r1.mp3"], label: "same_person"}
{"recordings_file_names": ["0003_r0.mp3", "0003_r1.mp3"], label: "different_person"}

WebDataset

يعتمد تنسيق WebDataset على أرشيفات TAR وهو مناسب لمجموعات بيانات الصوت الكبيرة. فعلاً يمكنك تجميع ملفات الصوت في أرشيفات TAR (مثلاً 1 جيجابايت من ملفات الصوت لكل أرشيف TAR) ولديك آلاف من أرشيفات TAR:

folder/train/00000.tar
folder/train/00001.tar
folder/train/00002.tar
...

في الأرشيف، يتكوّن كل مثال من ملفات تتشارك نفس البادئة:

e39871fd9fd74f55.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.mp3
f18b91585c4d3f3e.json
ede6e66b2fb59aab.mp3
ede6e66b2fb59aab.json
ed600d57fcee4f94.mp3
ed600d57fcee4f94.json
...

يمكنك وضع ملفات الصوت الخاصة بك مع التسميات/الوصف/صناديق الحدود باستخدام ملفات JSON أو نصية، على سبيل المثال.

حمّل WebDataset الخاص بك وسيُنشئ عمودًا لكل لاحقة ملف (هنا “mp3” و “json”):

>>> from datasets import load_dataset

>>> dataset = load_dataset("webdataset", data_dir="/path/to/folder", split="train")
>>> dataset[0]["json"]
{"transcript": "Hello there !", "speaker": "Obi-Wan Kenobi"}

كما يمكن تضمين عدة ملفات صوتية لكل مثال على النحو التالي:

e39871fd9fd74f55.input.mp3
e39871fd9fd74f55.output.mp3
e39871fd9fd74f55.json
f18b91585c4d3f3e.input.mp3
f18b91585c4d3f3e.output.mp3
f18b91585c4d3f3e.json
...

لمزيد من التفاصيل حول صيغة WebDataset ومكتبة python، يرجى الاطلاع على توثيق WebDataset.

Update on GitHub