رویدادهای صوتی را با آمازون Rekognition PlatoBlockchain Data Intelligence شناسایی کنید. جستجوی عمودی Ai.

شناسایی رویدادهای صوتی با آمازون Rekognition

وقتی اکثر مردم به استفاده از یادگیری ماشینی (ML) با داده های صوتی فکر می کنند، مورد استفاده ای که معمولاً به ذهن می رسد این است رونویسی، همچنین به عنوان گفتار به متن شناخته می شود. با این حال، برنامه های مفید دیگری نیز وجود دارد، از جمله استفاده از ML برای تشخیص صداها.

استفاده از نرم افزار برای تشخیص صدا نامیده می شود تشخیص رویداد صوتی، و تعدادی کاربرد دارد. به عنوان مثال، فرض کنید می خواهید صداهای یک کارخانه پر سر و صدا را کنترل کنید و به زنگ هشداری گوش دهید که نشان دهنده مشکل یک دستگاه است. در یک محیط مراقبت های بهداشتی، می توانید از تشخیص رویداد صوتی برای گوش دادن منفعلانه به صداهای یک بیمار که نشان دهنده یک مشکل حاد سلامتی است استفاده کنید. حجم کاری رسانه ها برای این تکنیک مناسب است، به عنوان مثال برای تشخیص زمانی که سوت داور در یک ویدیوی ورزشی زده می شود. و البته، می‌توانید از این تکنیک در انواع کارهای نظارتی، مانند گوش دادن به یک تیراندازی یا صدای تصادف اتومبیل از میکروفون نصب شده در بالای خیابان شهر استفاده کنید.

این پست نحوه تشخیص صداها در یک فایل صوتی را توضیح می‌دهد، حتی اگر صداهای پس‌زمینه قابل توجهی در همان زمان اتفاق بیفتد. علاوه بر این، شاید به طور شگفت انگیزی، ما از تکنیک های مبتنی بر بینایی کامپیوتری برای انجام تشخیص، با استفاده از شناسایی آمازون.

استفاده از داده های صوتی با یادگیری ماشینی

اولین قدم در تشخیص رویدادهای صوتی، درک نحوه نمایش داده های صوتی است. برای اهداف این پست، ما فقط با صدای ضبط شده سروکار داریم، اگرچه این تکنیک ها با پخش صدا کار می کنند.

صدای ضبط‌شده معمولاً به‌عنوان دنباله‌ای از نمونه‌های صدا ذخیره می‌شود، که شدت امواج صوتی را که در طول ضبط به میکروفون برخورد می‌کند، در طول زمان اندازه‌گیری می‌کند. فرمت‌های بسیار متنوعی برای ذخیره‌سازی این نمونه‌ها وجود دارد، اما یک رویکرد رایج ذخیره 10,000، 20,000 یا حتی 40,000 نمونه در ثانیه است که هر نمونه یک عدد صحیح از 0 تا 65535 (دو بایت) است. از آنجایی که هر نمونه فقط شدت امواج صوتی را در یک لحظه خاص اندازه گیری می کند، داده های صوتی به طور کلی برای فرآیندهای ML مفید نیستند زیرا هیچ ویژگی مفیدی در حالت خام خود ندارند.

برای اینکه این داده ها مفید باشند، نمونه صدا به تصویری به نام a تبدیل می شود طیف سنجی، که نمایشی از داده های صوتی است که شدت باندهای فرکانسی مختلف را در طول زمان نشان می دهد. تصویر زیر نمونه ای را نشان می دهد.

محور X این تصویر نشان دهنده زمان است، به این معنی که لبه سمت چپ تصویر همان ابتدای صدا و لبه سمت راست تصویر انتهای آن است. هر ستون از داده ها در تصویر نشان دهنده باندهای فرکانسی متفاوتی است (که با مقیاس سمت چپ تصویر مشخص می شود)، و رنگ در هر نقطه نشان دهنده شدت آن فرکانس در آن لحظه از زمان است.

مقیاس بندی عمودی برای طیف نگارها را می توان به نمایش های دیگر تغییر داد. به عنوان مثال، مقیاس بندی خطی به این معنی است که محور Y به طور مساوی بر روی فرکانس ها تقسیم می شود، مقیاس لگاریتمی از مقیاس لگاریتمی استفاده می کند و غیره. مشکل استفاده از این نمایش‌ها این است که فرکانس‌های یک فایل صوتی معمولاً به طور یکنواخت توزیع نمی‌شوند، بنابراین بیشتر اطلاعاتی که ممکن است به آن علاقه مند باشیم در نزدیکی پایین تصویر (فرکانس‌های پایین‌تر) خوشه‌بندی می‌شوند.

برای حل آن مشکل، تصویر نمونه ما مثالی از a است طیف نگار مل، که برای تقریب نزدیک نحوه درک صدا توسط انسان ها مقیاس بندی شده است. به نشانگرهای فرکانس در امتداد سمت چپ تصویر توجه کنید - آنها ایده ای از نحوه توزیع عمودی آنها را ارائه می دهند، و واضح است که یک مقیاس غیر خطی است.

به‌علاوه، می‌توانیم اندازه‌گیری شدت را بر اساس فرکانس بر حسب زمان تغییر دهیم تا ویژگی‌های مختلف صدای اندازه‌گیری شده را افزایش دهیم. همانند مقیاس‌گذاری محور Y که توسط طیف‌نگار Mel پیاده‌سازی می‌شود، دیگران بر ویژگی‌هایی مانند شدت 12 کلاس صدای متمایز که برای مطالعه موسیقی (کروما) استفاده می‌شوند، تأکید می‌کنند. کلاس دیگری بر ویژگی های افقی (هارمونیک) یا ویژگی های عمودی (ضربه ای) تأکید دارد. نوع صدایی که تشخیص داده می شود باید نوع طیف نگار مورد استفاده برای سیستم تشخیص را تعیین کند.

طیف‌نگار مثال قبلی یک کلیپ موسیقی را نشان می‌دهد که کمی بیش از ۲ دقیقه طول دارد. زوم کردن جزئیات بیشتری را نشان می دهد، همانطور که در تصویر زیر نشان داده شده است.

رویدادهای صوتی را با آمازون Rekognition PlatoBlockchain Data Intelligence شناسایی کنید. جستجوی عمودی Ai.

اعداد بالای تصویر تعداد ثانیه های شروع فایل صوتی را نشان می دهد. شما به وضوح می‌توانید دنباله‌ای از صداها را ببینید که به نظر می‌رسد بیش از چهار بار در ثانیه تکرار می‌شوند، که با رنگ‌های روشن نزدیک پایین تصویر مشخص می‌شود.

همانطور که می بینید، این یکی از مزایای تبدیل صدا به طیف نگار است - صداهای متمایز اغلب به راحتی با چشم غیرمسلح قابل مشاهده هستند و حتی اگر اینطور نباشند، اغلب با استفاده از الگوریتم های تشخیص اشیا بینایی کامپیوتری قابل تشخیص هستند. در واقع این دقیقاً همان فرآیندی است که ما برای تشخیص صداها دنبال می کنیم.

به دنبال صداهای گسسته در طیفگرام

بسته به طول فایل صوتی که در حال جستجو هستیم، یافتن صدای مجزا که فقط یک یا دو ثانیه طول می کشد یک چالش است. به اولین طیف نگاری که به اشتراک گذاشتیم مراجعه کنید—زیرا ما در حال مشاهده کل داده های 3:30 دقیقه ای هستیم، جزئیاتی که فقط یک ثانیه یا بیشتر طول می کشد قابل مشاهده نیستند. برای دیدن ریتمی که در تصویر دوم نشان داده شده است، مقدار زیادی زوم کردیم. واضح است که با فایل‌های صوتی بزرگ‌تر (و در نتیجه طیف‌نگارهای بسیار بزرگ‌تر)، ما به سرعت با مشکلاتی مواجه می‌شویم، مگر اینکه از رویکرد متفاوتی استفاده کنیم. آن رویکرد نامیده می شود پنجره سازی.

پنجره کشی به استفاده از یک پنجره کشویی اشاره دارد که در کل طیف گرا حرکت می کند و هر بار چند ثانیه (یا کمتر) را جدا می کند. با جداسازی مکرر بخش‌هایی از تصویر کلی، تصاویر کوچک‌تری دریافت می‌کنیم که برای حضور صدا قابل جستجو هستند. از آنجایی که هر پنجره می تواند تنها بخشی از تصویر مورد نظر ما را ایجاد کند (مانند جستجوی صدایی که دقیقاً در ابتدای پنجره شروع نمی شود)، پنجره سازی اغلب با همپوشانی پنجره های بعدی انجام می شود. به عنوان مثال، پنجره اول از ساعت 0:00 شروع می شود و 2 ثانیه طول می کشد، سپس پنجره دوم از 0:01 شروع می شود و 2 ثانیه ادامه می یابد و پنجره سوم از 0:02 شروع می شود و 2 ثانیه ادامه می یابد و به همین ترتیب.

پنجره یک تصویر طیف گرا را به صورت افقی تقسیم می کند. ما می‌توانیم کارایی فرآیند تشخیص را با جداسازی باندهای فرکانسی خاص با برش یا جستجوی بخش‌های عمودی خاصی از تصویر بهبود ببخشیم. برای مثال، اگر می‌دانید که زنگ هشداری که می‌خواهید تشخیص دهید صداهایی را ایجاد می‌کند که از یک فرکانس خاص به فرکانس دیگر متغیر است، می‌توانید پنجره فعلی را طوری تغییر دهید که فقط آن محدوده فرکانس را در نظر بگیرد. این به میزان قابل توجهی مقدار داده هایی را که باید دستکاری شوند کاهش می دهد و منجر به جستجوی بسیار سریعتر می شود. همچنین دقت را بهبود می بخشد، زیرا مطابقت های احتمالی مثبت کاذب را که در باندهای فرکانسی خارج از محدوده مورد نظر رخ می دهد، حذف می کند. تصاویر زیر یک محور کامل Y (چپ) را با یک محور Y محدود (راست) مقایسه می‌کنند.

محور Y کامل

محور Y کامل

محور Y محدود

محور Y محدود

اکنون که می دانیم چگونه می توان روی یک طیف نگار با رویکرد پنجره ای تکرار کرد و در باندهای فرکانسی خاص فیلتر کرد، گام بعدی این است که جستجوی واقعی صدا را انجام دهیم. برای آن استفاده می کنیم برچسب های سفارشی شناسایی آمازون. ویژگی Rekognition Custom Labels از قابلیت‌های موجود آمازون Rekognition است که قبلاً روی ده‌ها میلیون تصویر در دسته‌های مختلف آموزش داده شده است. به جای هزاران تصویر، شما فقط باید مجموعه کوچکی از تصاویر آموزشی را آپلود کنید (معمولاً چند صد تصویر، اما اندازه مجموعه داده های آموزشی بهینه باید به صورت آزمایشی بر اساس مورد استفاده خاص به دست آید تا از آموزش کم یا بیش از حد مدل جلوگیری شود. ) که مخصوص مورد استفاده شما از طریق کنسول Rekognition Custom Labels هستند.

اگر تصاویر شما قبلاً برچسب گذاری شده اند، آموزش تشخیص آمازون تنها با چند کلیک قابل دسترسی است. همچنین، می‌توانید تصاویر را مستقیماً در رابط برچسب‌گذاری آمازون برچسب‌گذاری کنید یا از آن استفاده کنید. Amazon SageMaker Ground Truth برای شما برچسب زدن به آنها هنگامی که آمازون Rekognition آموزش را از مجموعه تصویر شما شروع می کند، تنها در چند ساعت یک مدل تجزیه و تحلیل تصویر سفارشی را برای شما تولید می کند. در پشت صحنه، Rekognition Custom Labels به طور خودکار داده های آموزشی را بارگیری و بررسی می کند، الگوریتم های ML مناسب را انتخاب می کند، یک مدل را آموزش می دهد و معیارهای عملکرد مدل را ارائه می دهد. سپس می توانید از مدل سفارشی خود از طریق استفاده کنید API برچسب‌های سفارشی شناسایی و آن را در برنامه های خود ادغام کنید.

جمع آوری داده های آموزشی و آموزش مدل برچسب های سفارشی شناسایی

در مخزن GitHub مرتبط با این پست، کدی را خواهید یافت که نشان می دهد چگونه به صدای زنگ هشدار دود بدون توجه به نویز پس زمینه گوش دهید. در این مورد، مدل برچسب‌های سفارشی شناسایی ما یک مدل طبقه‌بندی باینری است، به این معنی که نتایج یا «صدای زنگ هشدار دود شناسایی شد» یا «صدای زنگ هشدار دود شناسایی نشد».

برای ایجاد یک مدل سفارشی، به داده های آموزشی نیاز داریم. این داده های آموزشی از دو نوع اصلی تشکیل شده است: صداهای محیطی، و صداهایی که می خواهید تشخیص دهید (مانند زنگ هشدار دود).

داده‌های محیطی باید طیف گسترده‌ای از مناظر صوتی را نشان دهند که برای محیطی که می‌خواهید صدا را در آن تشخیص دهید معمولی است. برای مثال، اگر می‌خواهید صدای هشدار دود را در یک محیط کارخانه تشخیص دهید، با صداهای ضبط شده در آن محیط کارخانه شروع کنید. موقعیت های مختلف (البته بدون زنگ هشدار دود).

صداهایی که می خواهید تشخیص دهید در صورت امکان باید جداسازی شوند، به این معنی که صداهای ضبط شده باید فقط خود صدا باشند بدون هیچ گونه صدای پس زمینه محیطی. برای مثال ما، این صدای زنگ هشدار دود است.

پس از جمع‌آوری این صداها، کد موجود در مخزن GitHub نشان می‌دهد که چگونه صداهای محیطی را با صداهای هشدار دود به روش‌های مختلف ترکیب کنید (و سپس آنها را به طیف‌نگار تبدیل کنید) تا تعدادی تصویر ایجاد کنید که صداهای محیطی را نشان می‌دهد. با و بدون صداهای هشدار دود که روی آنها پوشانده شده است. تصویر زیر نمونه ای از صداهای محیطی با صدای هشدار دود (نوارهای افقی روشن) است که در بالای آن قرار گرفته است.

رویدادهای صوتی را با آمازون Rekognition PlatoBlockchain Data Intelligence شناسایی کنید. جستجوی عمودی Ai.

داده های آموزش و آزمون در یک ذخیره می شود سرویس ذخیره سازی ساده آمازون سطل (Amazon S3). ساختار دایرکتوری زیر نقطه شروع خوبی برای سازماندهی داده ها در داخل سطل است.

رویدادهای صوتی را با آمازون Rekognition PlatoBlockchain Data Intelligence شناسایی کنید. جستجوی عمودی Ai.

کد نمونه موجود در مخزن GitHub به شما این امکان را می دهد که تعداد تصاویر آموزشی ایجاد کنید. Rekognition Custom Labels به تعداد زیادی تصویر آموزشی نیاز ندارد. یک مجموعه آموزشی از 200 تا 500 تصویر باید کافی باشد.

ایجاد یک پروژه Rekognition Custom Labels مستلزم آن است که URI های پوشه S3 را که حاوی داده های آموزشی است و (به صورت اختیاری) داده های آزمایشی را مشخص کنید. هنگام تعیین منابع داده برای کار آموزشی، یکی از گزینه ها این است برچسب زدن خودکار، همانطور که در تصویر زیر نشان داده شده است.

رویدادهای صوتی را با آمازون Rekognition PlatoBlockchain Data Intelligence شناسایی کنید. جستجوی عمودی Ai.

استفاده از این گزینه به این معنی است که آمازون Rekognition از نام پوشه ها به عنوان نام برچسب استفاده می کند. برای استفاده از تشخیص هشدار دود، ساختار پوشه داخل قطار و پوشه‌های آزمایشی مانند تصویر زیر است.

رویدادهای صوتی را با آمازون Rekognition PlatoBlockchain Data Intelligence شناسایی کنید. جستجوی عمودی Ai.

تصاویر داده‌های آموزشی به آن پوشه‌ها می‌روند، با طیف‌نگاری‌های حاوی صدای هشدار دود در پوشه هشدار و طیف‌نگاری‌هایی که حاوی صدای هشدار دود نیستند در no_alarm پوشه آمازون Rekognition از این نام ها به عنوان نام کلاس های خروجی برای مدل برچسب های سفارشی استفاده می کند.

آموزش یک مدل برچسب سفارشی معمولاً 30 تا 90 دقیقه طول می کشد. در پایان آن آموزش، باید مدل آموزش دیده را شروع کنید تا برای استفاده در دسترس قرار گیرد.

معماری End-to-End برای تشخیص صدا

پس از ایجاد مدل خود، مرحله بعدی راه اندازی خط لوله استنتاج است، بنابراین می توانیم از مدل برای تشخیص وجود صدای هشدار دود در فایل صوتی استفاده کنیم. برای انجام این کار، صدای ورودی باید به یک طیف‌نگار تبدیل شود و سپس پنجره‌بندی شده و بر اساس فرکانس فیلتر شود، همانطور که برای فرآیند آموزش انجام شد. هر پنجره از طیف نگار به مدل داده می شود، که طبقه بندی را برمی گرداند که نشان می دهد زنگ دود به صدا درآمده است یا خیر.

نمودار زیر نمونه ای از معماری را نشان می دهد که این خط لوله استنتاج را پیاده سازی می کند.

رویدادهای صوتی را با آمازون Rekognition PlatoBlockchain Data Intelligence شناسایی کنید. جستجوی عمودی Ai.

این معماری منتظر می ماند تا یک فایل صوتی در یک سطل S3 قرار گیرد، که سپس باعث ایجاد یک سطل می شود AWS لامبدا تابعی که باید فراخوانی شود Lambda یک سرویس محاسباتی بدون سرور و رویداد محور است که به شما امکان می‌دهد کد تقریباً برای هر نوع برنامه کاربردی یا سرویس پشتیبان را بدون تهیه یا مدیریت سرورها اجرا کنید. می‌توانید یک تابع Lambda را از بیش از 200 سرویس و نرم‌افزار AWS به‌عنوان برنامه‌های سرویس (SaaS) فعال کنید و فقط برای آنچه استفاده می‌کنید بپردازید.

تابع Lambda نام سطل و نام کلید (یا نام فایل) فایل صوتی را دریافت می کند. فایل از آمازون S3 به حافظه تابع دانلود می شود، سپس آن را به یک طیف نگار تبدیل می کند و پنجره سازی و فیلتر فرکانس را انجام می دهد. سپس هر بخش پنجره‌دار طیف‌نگار به آمازون Rekognition فرستاده می‌شود که از مدل آموزش‌دیده قبلی Amazon Custom Labels برای تشخیص صدا استفاده می‌کند. اگر آن صدا پیدا شود، تابع لامبدا با استفاده از یک علامت می دهد سرویس اطلاع رسانی ساده آمازون اعلان (Amazon SNS). Amazon SNS یک رویکرد میخانه/زیر ارائه می دهد که می توان اعلان ها را به آن ارسال کرد سرویس صف ساده آمازون صف‌های (Amazon SQS)، توابع Lambda، نقاط پایانی HTTPS، آدرس‌های ایمیل، فشار موبایل و موارد دیگر.

نتیجه

می‌توانید از یادگیری ماشینی با داده‌های صوتی استفاده کنید تا مشخص کنید چه زمانی صداهای خاصی رخ می‌دهند، حتی زمانی که صداهای دیگر هم‌زمان در حال شنیدن هستند. انجام این کار مستلزم تبدیل صدا به تصویر طیف‌نگاری و سپس ورود به قسمت‌های مختلف آن طیف‌نگار با پنجره‌بندی و فیلتر کردن بر اساس باند فرکانس است. Rekognition Custom Labels آموزش یک مدل سفارشی برای تشخیص صدا را آسان می کند.

شما می توانید با استفاده از GitHub repo حاوی کد مثال برای این پست به عنوان نقطه شروع برای آزمایش های خود شما. برای کسب اطلاعات بیشتر در مورد تشخیص رویداد صوتی، مراجعه کنید تشخیص رویداد صدا: یک آموزش.


درباره نویسندگان

رویدادهای صوتی را با آمازون Rekognition PlatoBlockchain Data Intelligence شناسایی کنید. جستجوی عمودی Ai.گرگ سامرویل یک معمار ارشد نمونه سازی در تیم AWS Prototyping و Cloud Engineering است که به مشتریان AWS کمک می کند راه حل های نوآورانه ای را برای مشکلات چالش برانگیز یادگیری ماشین، اینترنت اشیا و فناوری های بدون سرور پیاده سازی کنند. او در Ann Arbor، میشیگان زندگی می کند و از تمرین یوگا، غذا دادن به سگ هایش و بازی پوکر لذت می برد.

رویدادهای صوتی را با آمازون Rekognition PlatoBlockchain Data Intelligence شناسایی کنید. جستجوی عمودی Ai.جف هارمن یک معمار ارشد نمونه سازی در تیم AWS Prototyping و Cloud Engineering است که به مشتریان AWS کمک می کند تا راه حل های نوآورانه ای را برای مشکلات چالش برانگیز پیاده کنند. او در Unionville، Connecticut زندگی می کند و از نجاری، آهنگری و Minecraft لذت می برد.

تمبر زمان:

بیشتر از آموزش ماشین AWS