آموزش

تشخیص نویز از صدای اصلی به کمک یادگیری ماشین

سو تیتر

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

نیاز به تشخیص نویز در محیط های شلوغ

نویز چیست؟

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

دو نوع نویز داریم: غیرایستا و ایستا

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

تشخیص نویز ایستا از غیر ایستا

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

نمونه‌ای از کاربردهای تشخیص نویز از صدای اصلی

  • در تماس‌های تلفنی برای برقراری بهتر ارتباط.
  • در تماس‌های تصویری بخصوص ویدیو کنفرانس‌ها که چندین نفر باهم در ارتباط هستن.
  • در دوربین‌های مدار بسته برای تشخیص صدای گفت‌وگوی افراد بدون نویز محیط.
  • در دستگاه‌های نظارتی؛ به‌عنوان مثال برای هشدار در زمان گریه‌ی نوزاد و فریاد کمک.
  • در دستیارهای صوتی برای بهتر شنیده‌شدن دستور.

البته، نویز زدایی از سال‌ها قبل در برنامه‌های Microsoft Teams، Skype و Skype for Business وجود داشته. سایر ابزارهای ارتباط و برنامه‌های کنفرانس ویدیویی دارای نوعی نویز زدایی هستند.

نویززدایی

نویز زدایی

نویز زدایی به معنی حذف هر گونه صدای ناخواسته و اضافیه. حذف فعال نویز معمولا به چند میکروفون (مانند Bose QuiteComfort) نیاز داره؛ مانند شکل زیر. البته در اینجا بیشتر ما بر نویز زدایی تمرکز می‌کنیم نه حذف فعال نویز.

نویززدایی

رویکرد سنتی تشخیص نویز و نویز زدایی

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

تلفن‌های نسل فعلی شامل دو یا چند میکروفون هستن. جدیدترین گوشی‌های شرکت اپل 4 میکروفن دارن. طراحان تلفن، میکروفون دوم رو تا جای ممکن از میکروفون اول دور گذاشتند. معمولا این میکروفن، در قسمت پشت تلفن قرار داره.

تشخیص نویز با چند میکروفن

هر دو میکروفن صداهای اطراف رو ضبط می‌کنن. میکروفون نزدیک به دهان انرژی صوتی بیشتری می‌گیره. مورد دوم، صدای کم‌تری رو ضبط می‌کنه. نرم افزاری وجود داره که این دو صدا رو می‌گیره و صدای واضحی ارائه میده. اما این رویکرد مشکلاتی داشت: مثلا زمانی که فرد صحبت نمی‌کرد، تمام میکروفون‌ها نویز دریافت می‌کردن؛ یا زمانی که فرد در حال دویدن و لرزش و چرخاندن تلفن بود هم این‌چنین می‌شد.

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

انتقال از طرح چند میکروفون به تک میکروفون

طرح‌های میکروفونی چند نقص مهم دارند:

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

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

الگوریتم پردازش سیگنال دیجیتال (DSP)

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

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

تشخیص نویز به کمک هوش مصنوعی

تفکیک نویز پس‌زمینه با استفاده از هوش‌مصنوعی و یادگیری عمیق

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

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

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

تاخیر در صدا

تأخیر کم در ارتباط صوتی بسیار مهمه. انسان هنگام مکالمه می‌تونه تا 200 میلی‌ثانیه تاخیر انتها به انتها رو تحمل کنه، در غیر این‌صورت مکالمات ما بیش از حد طول می‌کشه. هر چی تاخیر بیشتر باشه، بیش‌تر متوجه اون میشیم و بیشتر اذیت میشیم.

سه عامل می‌تونه تاخیر انتها به انتها رو تحت تاثیر قرار بده: شبکه، محاسبه و بُعد. معمولا تاخیر شبکه بیشترین تاثیر رو داره. تاخیر کدک‌ها بسته به کدک‌ها و حالت اون‌ها بین 5-80 میلی‌ثانیه‌س، اما کدک‌های مدرن، کاملا کارآمد شدند. تأخیر محاسبه، واقعا به چیزهای زیادی بستگی داره.

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

تأخیر در محاسبه به عوامل مختلفی بستگی دارد

قابلیت‌های پلت فرم

تعبیه‌ی DNN بزرگ در داخل هدست کاری نیست که بخواین انجام بدین. محدودیت‌هایی در ظرفیت CPU و توان اون وجود داره. دستیابی به سرعت پردازش بلادرنگ بسیار چالش برانگیزه؛ مگر اینکه پلتفرم دارای یک شتاب‌دهنده باشه که ضرب ماتریس رو بسیار سریع‌تر و با قدرت کم‌تری انجام بده.

معماری DNN

سرعت DNN به تعداد پارامترها و لایه‌های DNN و عملکردهای گره بستگی داره. اگر می‌خواین صوتی با کیفیت بالا و کمترین نویز تولید کنید، DNN شما نمی‌تونه خیلی کوچیک باشه. به‌عنوان مثال، Mozilla’s rnnoise بسیار سریعه و ممکنه بشه اون رو در هدست اعمال کرد. با این حال، کیفیت اونا در صداهای غیرایستا چشمگیر نیست.

میزان نمونه‌گیری صوتی

عملکرد DNN به میزان نمونه‌گیری صوتی بستگی داره. هر چی میزان نمونه‌برداری بیشتر باشه، پارامترهای بیش‌تری باید به DNN بدیم. در مقابل، Mozilla’s rnnoise در باندهایی کار می‌کنه که فرکانس‌ها رو گروه‌بندی می‌کنن. بنابراین، عملکرد به میزان نمونه‌گیری بستگی داره. اگرچه ایده‌ی جالبیه، اما تاثیر نامطلوبی بر کیفیت نهایی داره.

سیگنال صوتی با باند باریک (نرخ نمونه برداری 8 کیلوهرتز) کیفیت پایینی داره؛ اما بیشتر ارتباطات ما هنوز در باند باریک اتفاق می‌افته. زیرا زیرساخت‌های شبکه اکثر اپراتورهای تلفن‌همراه هنوز از رمزگذارهای خاصی برای رمزگذاری و رمزگشایی صدا استفاده می‌کنن.

از اونجا که باند باریک به داده‌های کم‌تری در هر فرکانس نیاز داره، می‌تونه هدف خوبی برای DNN بلادرنگ باشه. اما وقتی به پشتیبانی از باند پهن یا فوق پهن‌ (16 کیلو هرتز یا 22 کیلوهرتز) و سپس باند کامل (44.1 یا 48 کیلو هرتز) نیاز  دارید، همه‌چیز بسیار دشوار میشه.

در طرحی ساده‌لوحانه، DNN شما ممکنه نیاز داشته باشه که 64 برابر رشد کنه و بنابراین برای پشتیبانی از باند کامل 64 برابر کندتر می‌شه.

چگونه الگوریتم‌های جلوگیری از نویز رو آزمایش کنیم؟

آزمایش کیفیت صدا، بسیار کار سختیه. گوش انسان قابل‌اعتماد نیست. عوامل بسیاری مانند سن، آموزش، توانایی شنوایی در شنیدن تاثیر داره. هیچ معیار واضحی برای اینکه نویززدایی موفق بوده یا نه وجود نداره. بیشتر مقالات دانشگاهی، برای مقایسه‌ی نتایج از PESQ، MOS و STOI استفاده می‌کنن. در این روش، صدای صوتی اصلی و صدای تحریف‌شده رو به الگوریتم میدین و بر حسب موفقیت‌آمیز بودن نمره‌ای دریافت می‌کنید. برای مثال، نمرات PESQ بین 0.5-4.5 هست، به‌طوری که نمره‌ی 4.5 به‌معنی یک صدای کاملا پاک و بدون نویز هست.

اتاق ETSI

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

اتاق ETSI برای تست تشخیص نویز

 

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

نویز خروجی در مقابل نویز ورودی

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

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

فیلم زیر نشون میده که چگونه میشه با استفاده از DNN نویزی غیرایستا رو به‌طور کامل از بین‌ برد.

حرکت به سمت ابر

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

انتقال به ابر

پاسخ «بله» است.

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

حرف آخر

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

اگر به هوش مصنوعی علاقه‌مند هستید، توصیه می‌کنم مقاله‌ی یادگیری ماشین چه نقشی در تکامل هوش مصنوعی دارد رو مطالعه کنید.

سوالات متداول

چگونه سیگنال نویز از سیگنال صدا شناخته میشه؟

بر حسب شکل سیگنال، قدرت سیگنال و دامنه سیگنال.

منظور از نویز در گفتار چیه؟

نویز در گفتار هر صدای اضافیه. شامل صدای محیط، پرندگان، ماشین‌ها…

چند نوع نویز داریم؟

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

احسان نعنایی

احسان، مؤسس هلدینگ EMNCO و جوان‌ترین کارآفرین سال 98 و 99، از سن کم در حوزه شبکه مشغول به فعالیته و تونسته به موفقیت‌های بزرگی دست پیدا کنه. احسان نعنایی بنیان‌گذار نت‌رانه و اولین عضو، از این خانواده بزرگه...
خبرنامه
Notify of
guest
0 نظرات
Inline Feedbacks
View all comments
همچنین ببینید
بستن
دکمه بازگشت به بالا