\documentclass[paper=a4, fontsize=11pt]{article}

\usepackage{setspace}
\usepackage{wrapfig}
\usepackage{caption}
\usepackage{mathtools}
\usepackage{hyperref}

\usepackage{cleveref}
\usepackage{graphicx}
\graphicspath{ {images/} }

\usepackage{xepersian}
\settextfont[Path=fonts/]{Samim.ttf}
\setlatintextfont{Chilanka}

\begin{document}
\setstretch{2}
	\begin{titlepage}
		\begin{center}
		
       \vspace*{1cm}
       
       \textbf{پروژه امتیازی درس سیگنال‌ها و سیستم‌ها}

       \vspace{0.5cm}
       
الگوریتم‌هایی برای پردازش صدا
       \vspace{2cm}
       
       \textbf{علی فرجی}
       
       \vspace{2cm}
       
      استاد درس دکتر مهدی راستی
 \vfill
       
 
       \includegraphics[width=0.4\textwidth]{aut}
 
       دانشکده مهندسی کامپیوتر\\
       بهمن ماه سال 1398 
   \end{center}
\end{titlepage}




\section{تشخیص جنسیت از روی صدا}
\subsection{ تجزیه و تحلیل طیفی به کمک تبدیل فوریه}

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

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

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

\subsection{ بررسی دو مورد از صدا ها}

همان طور که در اول تعریف پروژه یک نمودار آورده شده است ما نیز با توجه به شکل های بدست آمده به آن پی میبریم مثلا برای مرد  شکل 1 حاصل که مطابق با نمودار است زیرا یک پیک بزرگ اطراف 120 و یک پیک کمی کوچکتر اطراف 220 دارد.
کد نوشته شده در فایل  \lr{ A1.m } قرار دارد.

\begin{figure}
\centering
\includegraphics[width=\textwidth]{man1}
\caption{طیف توان برای صدای ضبط شده مرد شماره 3}
\end{figure}

همچنین مشاهده می شود (شکل 2) که برای زن فرکانس های بدست آمده اطراف 210 هرتز قدرت بیشتری دارند.

پس میتوان با استفاده از نقاط ماکسیمم های طیف فرکانس به جنسیت صاحب صدا پی برد.
\begin{figure}
\centering
\includegraphics[width=\textwidth]{woman1}
\caption{طیف توان برای صدای ضبط شده زن شماره 10}
\end{figure}

\subsection{اوج صدا}

میتوانیم تابع ماکزیمم را روی مقدار اندازه تبدیل فوریه صدا بزنیم تا مقدار اوج را به ما بدهد.
تابع   \lr{ getPeak } نوشته شد که مقدار پیک و فرکانس در آن پیک را برمیگرداند همچنین در فایل   \lr{ A3.m }  میتوانیم خروجی های آن را ببینیم.

\subsection{تشخیص جنسیت}
پس از پیدا کردن اوج و مقدار ایندکس آن میتوان فرکانس آن را حساب کرد سپس میتوان با توجه به مقدار این فرکانس زن یا مرد بودن را تشخیص داد.
کد های در فایل  \lr{ A4.m }  نوشته شدند که از تابعی که در بالا نوشتیم استفاده میکند.

توجه کنید که بعد از اجرای دستور \lr{ A4 }  با تایپ \lr{ result }  که محتویات خروجی را در درون آن می نویسد، میتوان برچسب ها و فایل مربوطه را مشاهده کرد.

\begin{latin}
>> result\\
result =\\
voices/v0.wav women\\
voices/v1.wav man\\
voices/v10.wav women\\
voices/v11.wav man\\
voices/v2.wav man\\
voices/v3.wav man\\
voices/v4.wav women\\
voices/v5.wav women\\
voices/v6.wav man\\
voices/v7.wav women\\
voices/v8.wav man\\
voices/v9.wav women\\
\end{latin}

پیشنهاد برای افزایش دقت: ما چون فقط بر اساس یک ماکزیمم درحال تصمیم گیری هستیم خطای بالایی داریم بهتر است برای بهینه کردن و افزایش دقت مجموعه ای از ماکسیمم ها و مینیمم های محلی را پیدا کنیم  و الگوی انها را با الگوی اکسترمم های محلی هر جنسیت تطابق دهیم. البته چون ویس های ما زیاد نویز ندارند پس زیاد فرکانس ها تغییر نکرده اند و با همان پیک فرکانس میتوان به راحتی تشخیص داد.
برای این کار میتوان از تابع  \lr{findpeaks} استفاده کرد که در نرم افزار \lr{octave} در پکیج  \lr{signal} است.


\section{ الگوریتم هایی برای بهبود صدا}

\subsection{معرفی مختصری از الگوریتم تفاضل طیف}

الگوریتم تفاضل طیف یکی از قدیمی ترین و مشهورترین روش های بهسازی سیگنال گفتار است که برای بازیابی طیف توان سیگنال آلوده به نویز استفاده می شود. در این روش طیف توان نویز تخمین زده شده را از طیف توان سیگنال نویزی کم کرده و سیگنال بهسازی شده را تولید می کند.

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

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

میدانیم که عواملی مانند طول فریم و… روی دقت تخمین طیف نویز موثر هستند و به طور خاص اثر آن بر روی نویز موزیکال ایجاد شده مورد مطالعه قرار می گیرد. مطالعات انجام شده نشان می دهند که هر چقدر طول فریم کمتر باشد و به عبارتی پنجره کوتاهتر باشد به علت \lr{convolve} شدن طیف گفتار و طیف پنجره، طیف سیگنال گفتار نیز به این طریق خراب خواهد شد.

همه عوامل فوق ما را به این سمت سوق می دهند که طول فریم را بزرگ انتخاب کنیم. بزرگتر گرفتن طول فریم دقت تخمین طیف نویز را افزایش داده و بنابراین موجب کاهش نویز موزیکال و افزایش کیفیت سیگنال شنیداری بهسازی شده می گردد و ثانیأ اگر دقت تخمین طیف بیشتر باشد می توان در روش تفریق طیفی،ضریب تفریق را بزرگتر انتخاب کرده و مقدار بهبود \lr{SNR} را افزایش داد.

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

نسبت سیگنال به نویز \lr{(SNR - Signal to Noise ratio) } معیاری برای نمایش میزان سیگنال مفید در مقابل سیگنال مزاحم (یا نویز) در سیستم‌های الکتریکی است. این عدد، نسبت توان سیگنال به توان نویز است، و آن را بر حسب دسی‌بل بیان می‌کنند.

\subsection{پیاده سازی و نکات آن}
ایده اصلی این الگوریتم برای حذف نویز صحبت در سال 1975 توسط ویس ارائه شد و نتیجه عملی آن در سال 1979 توسط بول منتشر گردید.
ابتدائا برای حذف نویز های سفید و ایسا طراحی شده بود و محدودیت عملیاتی زیادی داشت که از جمله آن نویز های موزیکال بودند.
این روش بعد ها اصلاح شد و الگوریتم های پیچیده و روش های غیر خطی به کار گرفته شد تا علاوه بر حذف نویزهای واقعی محیط، نویز موزیکال را نیز کاهش دهد.

ما در اینجا الگوریتم بول را پیاده سازی کرده‌ایم که در فایل 
\lr{SSA.m} 
قرار دارد.

 روش کار الگوریتم: ما از ناحیه ای که صدا ندارد و به اصطلاح سکوت است کمک میگیریم که نویز را تخمین بزنیم حال فرض میکنیم که این نویز از هر فریم به فریم دیگر زیاد تغییر نمیکند و در هر فریم طیف نویز را از صوت کم میکنیم.

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

توضیحات  الگوریتم:
 \href{http://practicalcryptography.com/miscellaneous/machine-learning/tutorial-spectral-subraction/}{این وب سایت} 

\subsection{تست الگوریتم در مقابل نویزهای متفاوت}
با اجرا کردن فایل 
\lr{B3.m} 
میتوانیم قدرت الگوریتم را در مقابل 4 نویز مشاهده کنیم.



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

تمامی سیگنال های اولیه از سیگنال نویز دار بطور خوبی استخراج شده اند.

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


\begin{figure}
\centering
\includegraphics[width=\textwidth]{snr50}
\caption{خروجی برای نسبت سیگنال به نویز 50}
\end{figure}

\begin{figure}
\centering
\includegraphics[width=\textwidth]{snr70}
\caption{خروجی برای نسبت سیگنال به نویز 70}
\end{figure}

\begin{figure}
\centering
\includegraphics[width=\textwidth]{snr100}
\caption{خروجی برای نسبت سیگنال به نویز 100}
\end{figure}

\begin{figure}
\centering
\includegraphics[width=\textwidth]{snr120}
\caption{خروجی برای نسبت سیگنال به نویز 120}
\end{figure}



\end{document}