پروژه ضبط و پخش کننده صدا با متلب به همراه داکیومنت
در این پست پروژه ضبط و پخش کننده صدا به همراه داکیومنت را آماده کرده ایم که یک پروژه مناسب در زمینه پردازش گفتار، پردازش صدا و صوت می باشد که در در یک محیط گرافیکی (GUI) با قابلیت های پیشرفته پیاده سازی شده است. در ادامه به توضیح امکانات این پروژه ضبط و پخش کننده صدا پرداخته و فیلم اجرایی آن به همراه قسمتی از داکیومنت قرار داده شده است.
قابلیت های پروژه ضبط و پخش کننده صدا:
پردازش سیگنال های صوتی تک کاناله ۸ و ۱۶ بیتی – پردازش سیگنال های صوتی با فرکانس های مختلف نمونه برداری در بازه ۸ الی ۳۲ کیلوهرتز – امکان ضبط و توقف در زمان ضبط و ادامه ضبط – تنظیم دقت چندی سازی و فرکانس نمونه برداری برای ضبط صدا – ذخیره سازی صدای ضبط شده با فرمت wav – اجرای فایل های صوتی با فرمت wav – نمایش شکل موج صدای ضبط شده و فراخوانی شده – نمایش قطع هایی از زمان سیگنال گفتار (بزرگنمایی زمانی).
فیلم و قسمتی از داکیومنت پروژه ضبط و پخش کننده صدا در ادامه مطلب.
از طریق واسط گرافیکی guide تمامی ابزار های مورد نیاز پروژه را ایجاد می کنیم.
nos=1; save nos.mat nos p=0; save p.mat p
متغیر nos برای مشخص کردن وضعیت یکی از ۳ کلید new, open, save قرار داده شده و متغیر p برای مشخص کردن حالت اولیه کلید pause در نظر گرفته شده است که این دو متغیر را در مت فایل هایی ذخیره می کنیم.
برای کلید Record کد زیر را اضافه می کنیم:
load nos.mat if nos==1 time=get(handles.Duration,'string'); Fs=get(handles.Frequenc1,'string'); Fs=str2num(Fs)*1000; nBits=get(handles.bitt,'string'); save Fs.mat Fs save nBits.mat nBits zabt = audiorecorder(Fs, str2num(nBits),1); zabt.StartFcn = 'disp(''Start speaking.'')'; zabt.StopFcn = 'disp(''stop speaking.'')'; record(zabt, str2num(time)); t=str2num(time); i=1; while i<=t load p.mat if p==1 pause(zabt); i=1; end if p==2 resume(zabt); end pause(1); i=i+1; end stop(zabt); myRecording = getaudiodata(zabt); save myRecording.mat myRecording subplot(handles.axes1),plot(myRecording); subplot(handles.axes2),specgram(myRecording, 512, Fs); guidata(hObject, handles); end
با لود کردن متغیر nos اگر مقدار این متغیر برابر با ۱ بود (کلید new فشرده شده بود) عملیات ضبط آغاز می شود. مقادیر زمان، فرکانس و بیت بر ثانیه را از ادیت تکست ها می گیریم، این مقادیر به صورت رشته هستند، پس آنها را به صورت عدد تبدیل می کنیم.
time=get(handles.Duration,'string'); Fs=get(handles.Frequenc1,'string'); Fs=str2num(Fs)*1000; nBits=get(handles.bitt,'string'); save Fs.mat Fs save nBits.mat nBits
حال متغیر مربوط به ضبط رو ایجاد می کنیم و وضبط شروع می شود.
zabt = audiorecorder(Fs, str2num(nBits),1); zabt.StartFcn = 'disp(''Start speaking.'')'; zabt.StopFcn = 'disp(''stop speaking.'')'; record(zabt, str2num(time));
یک حلقه شرطی قرار به تعداد ثانیه های ضبط قرار دادیم تا در صورتی که دو کلید pause, resum فشرده شوند، عملیات pause, resum اعمال شوند. در انتها صدای ضبط شده را ذخیره میکنیم و روی axes ها شکل موج صدا را نمایش میدهیم.
برنامه نویس پروژه: طیب حسینی
(زوم بر روی موج صدای اجرا شده)
مشاهده ویدئو در این باره
سلام می تونید مقاله این پروژرو برام آماده کنید ممنون ؟
سلام من به آموزش این پروژه خیلی احتیاج داشتم خوب شد آموزششو هم گذاشتید لطف کردید .
سلام کدهای کامل این پروژه هم داخل محصول هست که بشه ویراشش کرد؟
بله کدها به صورت اپن سورس ارائه میشه و هر گونه تغییرات در آن قابل اعمال است.
سلام من با متلب 2016 باز می کنم خطا میده با چه ورژنی باز کنم بهتره؟
با نسخه 2013 بهتر عمل می کنه
سلام با چه دستوری میشه در متلب صدا ضبط کرد و شکل موج رو نمایش داد ؟
سلام و خسته نباشید . من قصد تهیه آموزش ها رو دارم . هدف من اینه که کاربر مثلا یک کلمه انگلیسی بیان کند و در متلب تشخیص داده شود که کلمه ای ک کاربر گفته چی بوده و متناسب با اون کلمه یه سری دستور العمل ها اجرا شود . بنظر شما کدوم قسمت از آموزش ها بدرد کار من میخوره؟ سوال بعدی این هست که فایل های آموزشیتون صدا دارن؟ چون خلاصه آموزش هایی ک گذاشته اید بی صدا بودن. تشکر
پروژه های مرتبط با درخواست شما داریم، بعضی ها آموزش مختصر داره که راهنمای برای نحوه کار با برنامه است. آموزشی که شما مدنظر دارید تا بتونید طبق اون، پروژه خود رو انجام بدید، نیست متاسفانه. این پروژه نیز آموزش کوتاه برای نحوه کار با برنامه داره که فیلمش هم با صدا قرار داده شده است. لیست پروژه های تشخیص گفتار و پردازش صدا رو می تونید از لینک زیر پیگیری کنید:
پروژه های تشخیص گفتار و پردازش صدا
سلام وقتی از سیمولینک برای ضبط صدا استفاده می کنیم بازم باید دستور wavrecord به کار ببریم ؟
سلام. بنده این پروژه رو خریداری کردم و موقع باز کردن فایل wav مشکل داره چیکار کنم؟
برای اجرای صحیح این پروژه از MATLAB 2009b استفاده کنید.