در این مقاله سعی داریم با کتابحانه های داده های صوتی کار کنیم. کتابخانه Datasets یکی از این کتابخانه هاست که برای دانلود و آماده سازی همه نوع داده استفاده می شود و می توان برای داده های صوتی نیز از آن استفاده کرد. این کتابخانه دسترسی به مجمئعه داده های عمومی که در Hugging Face Hub موجود است را فراهم می کند. همچنین این کتابخانه امکاناتی را برای مار با داده های صوتی فراهم می کند که فرآیند پردازش داده های صوتی با مدل های هوش مصنوعی را برای کاربران راحت تر می کند.
قبل از مطالعه این مقاله، نوشته انتشار سورس کد دیپ سیک توسط huginface با نام Open-R1 را برای مطالعه کنید.
نحوه استفاده و بارگیری داده صوتی ( پردازش صوت در هوش مصنوعی )
برای شروع کار با داده های صوتی ابتدا مطمعن شوید که کتابخانه Datasets را به کدهای خود اضافه کرده اید.
pip install datasets
یکی از ویژگی های فوق العاده کتابخانه Datasets توانایی دانلود و پیش پردازش محموعه داده ها تنها با نوشتن یک خط مد برنامه نویسی پایتون و استفاده از تابع load_dataset() است. با اهداف اموزشی در این مقاله ما از مجموعه داده های صوتی بانکداری الکترونیک با عنوان MINDS-14, استفاده می کنیم. این مجموعه داده شامل داده های صوتی، شامل سوالات مرتبط با بانکداری الکترونیک به زبان ها و لهجه های مختلف است.
برای استفاده از مجموعه داده MINDS-14، باید آدرس آن از هاب هاینگ فیس را به تابع load_dataset بدهیم و مشخص کنیم چه لهجه ای را نیاز دارین. در اینجا ما زیر مجموعه داده استرالیایی (en-AU) را انتخاب می کنیم.
from datasets import load_dataset
minds = load_dataset('PolyAI/minds14', name='en-AU', split='train')
minds
خروجی
خروجی کد بالا به شکل زیر است:
Dataset( { features: [ 'path', 'audio', 'transcription', 'english_transcription', 'intent_class', 'lang_id', ], num_rows: 654, } )
این خروجی نشان می دهد که مجموعه داده لهجه استرالیایی شامل 654 سطر یا فایل صوتی است. هر فایل دارای متن متناظر فایل (transcription)، ترجمه انگلیسی (english_transcription)، یک لیبل که نشان دهنده هدف کاربر از پرسیدن سوال است (intent_class)، و ای دی ستونی که داده صوتی خام وحود دارد است. برای مثال یکی اط ستون ها را به شکل زیر چاپ می کنیم:
example = minds[0] example
خروجی
{ 'path': '/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-AU~PAY_BILL/response_4.wav', 'audio': { 'path': '/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-AU~PAY_BILL/response_4.wav', 'array': array( [0.0, 0.00024414, -0.00024414, ..., -0.00024414, 0.00024414, 0.0012207], dtype=float32, ), 'sampling_rate': 8000, }, 'transcription': 'I would like to pay my electricity bill using my card can you please assist', 'english_transcription': 'I would like to pay my electricity bill using my card can you please assist', 'intent_class': 13, 'lang_id': 2, }
در خروجی بالا ستون audio چندین ویژگی از داده صوتی خام را نشان می دهد که به شرح زیر است:
- Path: مسیر داده فایل صوتی
- Array: داده صوتی رمزگشایی شده که به عنوان NumPy یک بعدی نمایش داده می شود.
- sampling_rate: نرخ نمونه برداری داده صوتی که در این فایل 8000 هرتز است.
مقدار intent_class یک دسته بندی از داده صوتی است که برای قابل فهم کردن آن می توان از تابع int2str() استفاده کرد.
id2label = minds.features['intent_class'].int2str id2label(example['intent_class'])
خروجی
'pay_bill'
خب به همان ترتیبی که در transcription می بنید و از معنی آن مشخص است فرد در باره پرداخت صورت حساب سوال می پرسد و در دسته بندی intent_class نیز در کروه pay_bill قرار گرفته است.
اگر قصد دارید دسته بندی کننده صوت (audio classifier) را در این دستاشت آموزش دهید، به همه ویژگس ها نیاز ندارید. به عنوان مثال ویژگی lang_id در این آیتم ( با توحه به اینکه ما فقط داده لهجه استرالیایی را انتخاب کردیم) برای تمام فایل ها عدد یکسانی دارد. علاوه بر این مقدار english_transcription و transcription یکسان است چون زبات فایل صوتی انگلیسی است. بنابر این ما می توانیم این ویژگسی ها را پاک کنیم.
برای پاک کردن این ویژگس ها نیز در کتابخانه Datasets تابعی وجود دارد با نام remove_columns که به شکل زیر عمل می کند.
columns_to_remove = ['lang_id', 'english_transcription'] minds = minds.remove_columns(columns_to_remove) minds
خروجی:
Dataset({features: ['path', 'audio', 'transcription', 'intent_class'], num_rows: 654})
تبریک میگم! شما موفق شدید به درستی یک مجموعه داده را بارگیری کنید و به مقادیر آن دسترسی داشته باشید. بیایید چند مثال بیشتر را بررسی کنیم. ما قادر هستیم از ویژگی های Blocks و Audio کتابخانه Gradio برای رمزگشایی چند نمونه صوت تصادفی از محموعه داده استفاده کنیم.
import gradio as gr def generate_audio(): example = minds.shuffle()[0] audio = example['audio'] return ( audio['sampling_rate'], audio['array'], ), id2label(example['intent_class']) with gr.Blocks() as demo: with gr.Column(): for _ in range(4): audio, label = generate_audio() output = gr.Audio(audio, label=label) demo.launch(debug=True)
ما همچنین می توانیم مجموعه داده را بشکل تصویری نیز مشاهده کنیم.
import librosa import matplotlib.pyplot as plt import librosa.display array = example['audio']['array'] sampling_rate = example['audio']['sampling_rate'] plt.figure().set_figwidth(12) librosa.display.waveshow(array, sr=sampling_rate)
شما نیز می توانید این کار را اتجام دهید یک گویش یا زبان دیگه از دیتاست MINDS-14 انتخاب کنید. آن را بشنوید، به شکا تصویری دربیاورید و ویژگی های آن را ببینید.
نرم افزار آموزش زبان انگلیسی هوش مصنوعی آلفا
مطالب مرتبط
درس اول: مقدمات آموزش پردازش صوت و تشخیص گفتار
درس دوم: آشنایی با کتابخانه Datasets در پردازش های هوش مصنوعی داده های صوتی
درس سوم: پیش پردازش داده های صوتی برای کاربردهای هوش مصنوعی
درس چهارم: حالت استریم مود در پردازش تشخیص گفتار