Hub documentation
مجموعة بيانات صوتية
مجموعة بيانات صوتية
ستوضح لك هذه الدليل كيفية تكوين مستودع مجموعة البيانات الخاصة بك مع ملفات الصوت. يمكنك العثور على أمثلة مرافقة للمستودعات في مجموعة أمثلة مجموعات بيانات الصوت.
يتمتع مجموعة بيانات ذات بنية مدعومة وصيغ ملفات تلقائيًا بمشغل مجموعات البيانات في صفحتها على Hub.
تُحمَّل معلومات إضافية حول ملفات الصوت الخاصة بك - مثل النصوص المنقولة - تلقائيًا ما دمتَ تتضمن هذه المعلومات في ملف بيانات وصفية (metadata.csv/metadata.jsonl/metadata.parquet).
بديلًا عن ذلك، يمكن أن تكون ملفات الصوت في ملفات Parquet أو في أرشيفات TAR تتبع صيغة WebDataset.
ملفات صوتية فقط
إذا كان مجموعة بياناتك تتكون من عمود واحد فقط يحتوي على الصوت، يمكنك ببساطة تخزين ملفات الصوت الخاصة بك في الجذر:
my_dataset_repository/ ├── 1.wav ├── 2.wav ├── 3.wav └── 4.wav
أو في مجلد فرعي:
my_dataset_repository/
└── audio
├── 1.wav
├── 2.wav
├── 3.wav
└── 4.wavتُؤيَّد عدة صيغ في الوقت نفسه، بما في ذلك AIFF وFLAC وMP3 وOGG وWAV.
my_dataset_repository/
└── audio
├── 1.aiff
├── 2.ogg
├── 3.mp3
└── 4.flacإذا كان لديك عدة تقسيمات، يمكنك وضع ملفات الصوت في مجلدات تحمل أسماء مناسبة:
my_dataset_repository/
├── train
│ ├── 1.wav
│ └── 2.wav
└── test
├── 3.wav
└── 4.wavراجع أسماء الملفات والتقسيمات لمزيد من المعلومات وطرق أخرى لتنظيم البيانات حسب التقسيمات.
أعمدة إضافية
إذا كانت هناك معلومات إضافية ترغب في تضمينها حول مجموعة بياناتك، مثل النص المنقول، أضفها كملف metadata.csv في مستودعك. يتيح لك ذلك إنشاء مجموعات بيانات بسرعة لمهام صوتية مختلفة مثل النص إلى كلام أو التعرف التلقائي على الكلام.
my_dataset_repository/ ├── 1.wav ├── 2.wav ├── 3.wav ├── 4.wav └── metadata.csv
يجب أن يحتوي ملف metadata.csv الخاص بك على عمود file_name يربط ملفات الصور ببياناتها الوصفية:
file_name,animal
1.wav,cat
2.wav,cat
3.wav,dog
4.wav,dogيمكنك أيضًا استخدام ملف JSONL metadata.jsonl:
{"file_name": "1.wav","text": "cat"}
{"file_name": "2.wav","text": "cat"}
{"file_name": "3.wav","text": "dog"}
{"file_name": "4.wav","text": "dog"}وللبيانات الأكبر حجماً أو إذا كنت مهتماً بميزات استرجاع البيانات المتقدمة، يمكنك استخدام ملف Parquet metadata.parquet.
المسارات النسبية
يجب أن يكون ملف البيانات الوصفية موجودًا إما في نفس المجلد الذي توجد فيه ملفات الصوت المرتبطة به، أو في أي مجلد أب، كما في هذا المثال:
my_dataset_repository/
└── test
├── audio
│ ├── 1.wav
│ ├── 2.wav
│ ├── 3.wav
│ └── 4.wav
└── metadata.csvفي هذه الحالة، يجب أن تكون عمود file_name مسارًا نسبيًا كاملًا إلى ملفات الصوت، وليس مجرد اسم الملف:
file_name,animal
audio/1.wav,cat
audio/2.wav,cat
audio/3.wav,dog
audio/4.wav,dogلا يمكن وضع ملفات البيانات الوصفية في مجلدات فرعية من المجلد الذي تحتوي عليه ملفات الصوت.
بشكلٍ أكثر عمومية، يجب أن تحتوي أي عمود يُسمى file_name أو *_file_name على المسار النسبي الكامل لملفات الصوت.
في هذا المثال، يُستخدم مجلد test لإعداد اسم مجموعة التدريب. راجع أسماء الملفات والمجموعات لمزيد من المعلومات.
تصنيف الصوت
لأُطُر بيانات تصنيف الصوت، يمكنك أيضًا استخدام إعداد بسيط: استخدم المجلدات لتسمية فئات الصوت. احفظ ملفات الصوت لديك في بنية مجلدات على النحو التالي:
my_dataset_repository/
├── cat
│ ├── 1.wav
│ └── 2.wav
└── dog
├── 3.wav
└── 4.wavيتضمن مجموعة البيانات المُنشأة بهذه البنية عمودين: audio وlabel (بقيم cat وdog).
يمكنك أيضًا توفير عدة تقسيمات. للقيام بذلك، يجب أن يكون لمجلد مجموعة البيانات البنية التالية (انظر أسماء الملفات والتقسيمات لمزيد من المعلومات):
my_dataset_repository/
├── test
│ ├── cat
│ │ └── 2.wav
│ └── dog
│ └── 4.wav
└── train
├── cat
│ └── 1.wav
└── dog
└── 3.wavيمكنك تعطيل الإضافة التلقائية لعمود label في إعدادات YAML. إذا لم تحمل أسماء المجلدات أي معنى خاص، فاضبط drop_labels: true في ترويسة README:
configs:
- config_name: default # Name of the dataset subset, if applicable.
drop_labels: trueمجموعات بيانات كبيرة الحجم
تنسيق WebDataset
يناسب تنسيق WebDataset مجموعات البيانات الصوتية واسعة النطاق (انظر AlienKevin/sbs_cantonese على سبيل المثال). يتكون من أرشيفات TAR تحتوي على ملفات الصوت وبياناتها الوصفية، وهو مُحسَّن للبث. وهو مفيد إذا كان لديك عدد كبير من ملفات الصوت ولتحصل على محمّلات بيانات للبث للتدريب واسع النطاق.
my_dataset_repository/ ├── train-0000.tar ├── train-0001.tar ├── ... └── train-1023.tar
لإنشاء أرشيف WebDataset بصيغة TAR، أنشئ مجلداً يحتوي على ملفات الصوت وملفات البيانات الوصفية المراد أرشفتها، ثم أنشئ أرشيف TAR باستخدام أمر tar على سبيل المثال.
عادةً ما يكون الحجم المعتاد لكل أرشيف حوالي 1 غيغابايت.
تأكد من أن كل زوج من ملف الصوت وملف البيانات الوصفية يتشاركان في نفس بادئة الملف، على سبيل المثال:
train-0000/ ├── 000.flac ├── 000.json ├── 001.flac ├── 001.json ├── ... ├── 999.flac └── 999.json
لاحظ أنه من أجل راحة المستخدم وتمكين Dataset Viewer، يتم تحويل كل مجموعة بيانات مستضافة في Hub تلقائيًا إلى صيغة Parquet حتى حجم 5 جيجابايت. اقرأ المزيد حول ذلك في وثائق Parquet format.
تنسيق Parquet
بدلاً من رفع ملفات الصوت والبيانات الوصفية كملفات منفصلة، يمكنك تضمين كل شيء داخل ملف Parquet. يكون هذا مفيداً إذا كان لديك عدد كبير من ملفات الصوت، أو إذا كنت ترغب في تضمين أعمدة صوتية متعددة، أو إذا كنت تريد تخزين معلومات إضافية حول الصوت في نفس الملف. كما أن Parquet مفيد لتخزين بيانات مثل البايتات الخام، وهو ما لا يدعمه JSON/CSV.
my_dataset_repository/ └── train.parquet
يمكن إنشاء ملفات Parquet تحتوي على بيانات صوتية باستخدام pandas أو مكتبة datasets. لإنشاء ملفات Parquet تحتوي على بيانات صوتية في pandas، يمكنك استخدام pandas-audio-methods وdf.to_parquet(). في datasets، يمكنك تعيين نوع العمود إلى Audio() واستخدام الطريقة ds.to_parquet(...) أو ds.push_to_hub(...). يمكنك العثور على دليل حول تحميل مجموعات البيانات الصوتية في datasets هنا.
بديلًا عن ذلك، يمكنك ضبط نوع الصوت لملفات Parquet التي أُنشئت باستخدام أدوات أخرى يدويًا. أولًا، تأكد من أن أعمدة الصوت لديك من النوع struct، مع حقل ثنائي "bytes" لبيانات الصوت وحقل نصي "path" لاسم ملف الصوت أو مساره. ثم يجب عليك تحديد أنواع الميزات للأعمدة مباشرةً في YAML داخل ترويسة README، على سبيل المثال:
dataset_info:
features:
- name: audio
dtype: audio
- name: caption
dtype: stringيُوصى باستخدام Parquet للملفات الصوتية الصغيرة (<1MB لكل ملف صوتي) ومجموعات الصفوف الصغيرة (100 صفوف لكل مجموعة صفوف، وهو ما يستخدمه datasets للصوت). أما للملفات الصوتية الأكبر، فيُوصى باستخدام تنسيق WebDataset، أو مشاركة الملفات الصوتية الأصلية (اختياريًا مع ملفات البيانات الوصفية).