اطلاعیه

Collapse
No announcement yet.

FFT از صوت

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    FFT از صوت

    با سلام
    ببخشید من میخوام از یک صوت FFT بگیرم و یک مشکل بزرگ دارم!
    کار من با میکروکنترلر هست!
    و دیدم که گرفتن FFT و برنامه نویسی اون تخصص میخواهد
    اما شنیدم matlab این کار رو میکنه!
    میشه من کدهای matlab یک جوری تحت میکرو اجرا کنم؟ مثلا میکرویی داشته باشم که تحت سیستم عامل winCE کار میکنه.

    با تشکر

    #2
    پاسخ : FFT از صوت

    دیگه اونقدرها هم تخصصی نیست، اگه به FFT با دید بسیار تخصصی نگاه کنیم اونوقت به کارهای پیچیده تر از اون چی بگیم؟

    برای گرفتن FFT ابتدا یک FIFO نرم افزاری در میکرو بسازید که سمپلهای صدای رو در اون قرار بدین و روی اون FFT رو حساب کنید، حالا اگه برای یک ثانیه و مثلا برای سمپل ریت 8000 هرتز میخواین FFT رو حساب کنید، FIFO باید بتونه 8000 سمپل رو در خودش جا بده، بعد با محاسبه FFT که سورس Cش رو راحت توی اینترنت میتونید گیربیارید، میتونید باندهای مختلف فرکانسی رو که در FIFO قرار داره رو تشخیص بدید.
    اسمایل، تومورو ویل بی وُرس

    دیدگاه


      #3
      پاسخ : FFT از صوت

      من 9 ثانیه صوت رو میخوام ضبط کنم و رفتم الگوریتم و کد FFT که با c بود رو دیدم اما اونا برای مثلا یک موج سینوسی گفته بودند
      من نرخ نمونه برداری 48k رو دارم و به قول شما باید 9 تا FIFO بسازم و در هر fifo باید 48000 تا سمپل از صوت بزارم؟
      من صوت را فرمت mp3 ضبط میکنم به نظرتون مستقیم با میکرو نمونه گیری کنم یا همین ضبط کردن خوبه؟
      یعنی با همون الگوریتم کولی میشه به همین سادگی از این دیتاها FFT گرفت؟
      چیزی که من دیدم این بود که نرم افزار FFT این 9 ثانیه رو انداخته بود و بعد روی هر نقطه میرفتم فرکانس وشدتش رو مینداخت
      آخه این فرکانس مربوط به چی هست؟ مگه صوت یک موج پیوسته نیست؟
      منظورتون ار باند فرکانسی چیه؟ من توی همون نرم افزار دیدم کنار پنجرش 5 تا باند فرکانسی گذاشته که میشد انتخابش کرد:
      40-640Hz
      40-320Hz
      60-480Hz
      80-640Hz
      40-1280Hz
      نفهمیدم چی هستند!!!

      من نیاز به چیزی بنام lpc spectrum هم داشتم که بسیار شبیه همین fft هست
      برای ساخت fifo چیکار کنم؟ خودش میدونم چی هست ولی تا حالا در عمل کارش نکردم؟ منظورتون این هست که سمپل ها را به ترتیب ذخیره کنم؟
      اگر هم خرج دارد مشکلی نیست. :mrgreen:

      تراشه من 72 مگاهرتز سرعت داره. به نظرتون سراغ تراشه dsp برم یا همین میکرو خوبه؟

      دیدگاه


        #4
        پاسخ : FFT از صوت

        کلا FFT یک تبدیل پیوسته از نمودار زمان-دامنه به نمودار فرکانس-دامنه است، در این تبدیل شما میتونید مثلا بازه فرکانسی 0 تا 24000 هرتز رو به سه دسته یا 10 دسته و یا هر چند دسته ای که لازم دارید تقسیم کنید که به هر قسمت یک باند یا به صورت صحیح تر Sub-band یا باندک(از خودم درآوردم) گفته میشه. :biggrin:

        حالا اگه برای ساخت FIFO از یک آرایه استفاده کنید، هر دفعه که یک سمپل جدید رو میخواید از A/D بخونید، ابتدا همه اعضای آرایه رو به سمت اولین عضو آرایه شیفت میدید و عضو اول رو دور میریزید و عدد جدید رو در آخرین عضو آرایه میریزید. مثلا اگه طول آرایه شما به اندازه سمپلهای یک ثانیه، 48000 تا باشه، با گرفتن FFT از این آرایه و با تقسیم فرکانسی 0 تا 24000 به 10 قسمت، میشه 10 تا بار(Bar) رو نمایش داد که هر کدوم دامنه رنجی از فرکانسها رو نمایش میدن، 0 تا 2400، 2400 تا 4800 الی آخر. اگه برای 9 ثانیه لازم دارید، لزومی نداره که 9 تا FIFO بسازید بلکه طول همون FIFO رو افزایش بدید، اما برای نمایش FFT برای یک ثانیه همون 48000 سمپل رو FFT بگیربد، برای نمایش FFT در زمانهای دیگه کافیه که نمونه برداری از FIFO رو شیفت بدید، یعنی تا الآن از عضو اول تا عضو 47999 ام رو برای نمایش FFT استفاده میکردید، حالا میتونید از عضو 2300 تا 50299 رو استفاده کنید و FFTش رو نمایش بدید.

        اسمایل، تومورو ویل بی وُرس

        دیدگاه


          #5
          پاسخ : FFT از صوت

          اقای ژوپیتر به جان خودم به جان هر کسی توی این عالم من الان دقیقا 3 ماهه که دارم روی مسئله FFT وقت میگذارم و آخرش هم نفهمیدم چی شد!!!! من رفتم الگوریتمش دیدم همون الگوریتم توکی و همین چیزهایی که شما گفتی رو مثلا همین آرایه ها رو اشاره کرده بود و بعد اینکه عناصر چه جوری قرار میگیرند و ... فقط در مورد این باندها و اینا هیچی نگفته بود :cry2:
          من n ثانیه دارم و نرخ نمونه برداری b هست و لذا طبق گفته شما کلا b.n تا عنصر ارایه میخوام
          فرض کنید من الان دیتای دیجیتال این n ثانیه صوت رو دارم و طبق گفته شما در هر کدام از این عناصر آرایه هم دیتا را ریخته ام
          چیزی که من دیدم یک منحنی بود ( حالا شما در واقع گفتید بار که برای کار من باید نقطه های روی سر بارها بهم بچسبه)
          من منظور شما رو کاملا فهمیدم فقط یک چیزی هست:
          من با همون الگوریتم fft رو محاسبه کنم
          این عکس رو ببینید: دقیقا چیزی هست که من میخوام:
          http://www.4shared.com/photo/TzXoHwdF/abcdefgh.html
          اگر میشه مثلا روی این عکس بگویید چه شده
          مثلا فرکانس و شدت دو تا پوینت رو به من داده.

          با تشکر

          دیدگاه


            #6
            پاسخ : FFT از صوت

            اگه در مورد باندها توضیح نداده، پس محاسباتش توی فضای پیوسته است و نه گسسته. چون معمولا فرمتهایی مثل MP3 که حوزه فرکانسی رو به چند Sub-band تقسیم میکنند از این روش استفاده میکنند.

            اون نقاط قرمز و آبی هم نشانه پیک تغییر فاز LPC در نموداره که با نمایش فرکانس و دامنه اونها رو مشخص کرده.
            اون نموداری که در تصویر هست که Magnitude Spectrum هست و در منبع زیر هم کمی در موردش توضیح داده:
            http://www.rowetel.com/blog/?p=132

            درسته، در مورد کار شما تنها نیازه که به صورت Spectrum نمودارتون رو رسم کنید، اگه میخواین کل 9 ثانیه رو در یک نمودار رسم کنید، باید در میکرو حافظه کافی داشته باشین، هم صدا رو به صورت خام ذخیره کنین، هم داده های حاصل از FFT رو. یک کد براتون میذارم که با پخش فایلهای صوتی از روی کامپیوتر و محاسبه FFT نمودار (Bar) رو نمایش میده که بهتر با مفهوم گرفتن FFT از یک آرایه نمونه برداری شده آشنا بشین.
            http://www.codeproject.com/KB/audio-video/DSound_Spectrum3.aspx

            اسمایل، تومورو ویل بی وُرس

            دیدگاه


              #7
              پاسخ : FFT از صوت

              اقای ژوپیتر بسیار سپاس گذارم
              من این چیزهایی که گذاشتید رو میخونم
              آدرس بدهید بیام چند مدتی شاگردی کنم استاد :mrgreen:
              من اگر بخوام یک کمی اطلاعات بیشتری کسب کنم منبع خاصی هست یا مثل همیشه باید چند رفرنسی رفت؟ البته من اینجا رو ول نمیکنم! چون واقعا کمک بسیاری کردید! در مورد حافظه هم مشکلی نیست به اندازه چند صد مگابایت حافظه پرسرعت دارم.

              دیدگاه


                #8
                پاسخ : FFT از صوت

                سلام


                دوستان میتونید از این مثالها و کدها استفاده کنید :


                http://hotfile.com/dl/121757661/d358e07/fft.zip.html

                http://hotfile.com/dl/121757618/0b72474/fft_source.zip.html

                http://hotfile.com/dl/121757738/b77cf48/ksTools050.zip.html

                http://hotfile.com/dl/121759455/c10e3da/TSpectrum3D_1.0.zip.html

                دیدگاه


                  #9
                  پاسخ : FFT از صوت

                  ببخشید آقای ژوپیتر در مورد jitter-shimmer و HNRچیزی میدونید؟ میخوام با میکرو تحلیلش کنم. نمیدونم چه جوری تحلیل میشه. اصلا چنین چیزهایی کجا باید دنبالش برم؟ چون من پارامترهای دیگری هم دارم میخواستم یک جایی پیدا کنم حداقل بگوید اینها چی هستند و ...
                  من صوتی که ظبط کردم به فرمت mp3 هست. چه جوری تبدیلش کنم به باینری که بتونم از طریق میکرو روی اون تحلیل داشته باشم؟

                  دیدگاه


                    #10
                    پاسخ : FFT از صوت

                    نوشته اصلی توسط masoodhashemy
                    ببخشید آقای ژوپیتر در مورد jitter-shimmer و HNRچیزی میدونید؟ میخوام با میکرو تحلیلش کنم. نمیدونم چه جوری تحلیل میشه. اصلا چنین چیزهایی کجا باید دنبالش برم؟ چون من پارامترهای دیگری هم دارم میخواستم یک جایی پیدا کنم حداقل بگوید اینها چی هستند و ...
                    من صوتی که ظبط کردم به فرمت mp3 هست. چه جوری تبدیلش کنم به باینری که بتونم از طریق میکرو روی اون تحلیل داشته باشم؟
                    Jitter و Shimmer در تشخیص میزان نویز به سیگنال به کار میرن که اولی براساس فرکانس عمل میکنه و دومی براساس دامنه. مثلا در تشخیص صدای افراد از این روشها هم استفاده میشه.
                    http://en.wikipedia.org/wiki/Jitter

                    HNR همون نسبت هارمونیک به نویز هست که باز هم در تشخیص صدا کاربرد داره.
                    http://tcts.fpms.ac.be/publications/papers/2005/eusipco05_fsbbtd.pdf

                    اگه فرمت ذخیره تون MP3 هست که برای انجام اینکارها باید اونها رو دیکد کنید و صدا رو به صورت PCM RAW استفاده کنید که مثلا هر سمپل صدا یک عدد 16 بیتی بشه و بعد روش محاسبات دلخواه تون رو انجام بدید. در ضمن MP3 صدا رو خراب میکنه چون از روش تقسیم Sub-Band استفاده میکنه و بعضی از فرکانسها رو از دست میدید، اگه امکان داره که به همون صورت PCM ذخیره کنید بهتره. :agree:
                    اسمایل، تومورو ویل بی وُرس

                    دیدگاه


                      #11
                      پاسخ : FFT از صوت

                      آقای ژوپیتر شما کجا کار میکنی؟
                      من از دیروز وقتم آزاد شده بگذارید بیام شاگردی کنم! باور کنید خیلی نیازمندم به این اطلاعات. یک متخصص صحبت باهاش بحث میکردم یک هندبوک بهم معرفی کرد و گفت این برای ما مرجع است! ولیکن بدرد هیچ نمیخورد! چون اصلا اطلاعات داخلش کاربردی نبود و مثلا انتگرالهای چندگانه و ... (یک چیزی بدتر از سیگنال و سیستم!!!)
                      پس من اشتباه هزینه کردم! چون من بردهایی با چیپ ضبط صدا به فرمت mp3 خریدم. کسی نبود راهنمایی کنه. همه اینها رو از آمریکا سفارش دادم! و قرار هست تا چند مدت دیگه برسه دستم! :cry2: ای کاش سخت افزارهای لازم رو راهنمایی میکردید. مثلا همین که گفتید صدا رو mp3 نکنید خیلی ارزشمند بود برای نمونه برداری صوت از a2d 16bit استفاده کنم؟ چه چیپی مناسبه؟ دستتون رو میبوسم فقط سریع بگویید چه چیزهایی نیاز هست که اگر چیزی نبود بگم از همون طرف بیاورند فرصتی ندارم.
                      کل چیزی که من میخوام:
                      http://www.4shared.com/photo/TzXoHwdF/abcdefgh.html (که قبلا گفتم)
                      http://www.4shared.com/photo/3iqPdrlh/abcdefg1.html
                      http://www.4shared.com/photo/V2TQeGB3/abcdefg2.html

                      برای چنین کاری سرعت میکروی من باید حداقل چقدر باشه؟

                      دیدگاه


                        #12
                        پاسخ : FFT از صوت

                        نوشته اصلی توسط masoodhashemy
                        آقای ژوپیتر شما کجا کار میکنی؟
                        من از دیروز وقتم آزاد شده بگذارید بیام شاگردی کنم! باور کنید خیلی نیازمندم به این اطلاعات. یک متخصص صحبت باهاش بحث میکردم یک هندبوک بهم معرفی کرد و گفت این برای ما مرجع است! ولیکن بدرد هیچ نمیخورد! چون اصلا اطلاعات داخلش کاربردی نبود و مثلا انتگرالهای چندگانه و ... (یک چیزی بدتر از سیگنال و سیستم!!!)
                        پس من اشتباه هزینه کردم! چون من بردهایی با چیپ ضبط صدا به فرمت mp3 خریدم. کسی نبود راهنمایی کنه. همه اینها رو از آمریکا سفارش دادم! و قرار هست تا چند مدت دیگه برسه دستم! :cry2: ای کاش سخت افزارهای لازم رو راهنمایی میکردید. مثلا همین که گفتید صدا رو mp3 نکنید خیلی ارزشمند بود برای نمونه برداری صوت از a2d 16bit استفاده کنم؟ چه چیپی مناسبه؟ دستتون رو میبوسم فقط سریع بگویید چه چیزهایی نیاز هست که اگر چیزی نبود بگم از همون طرف بیاورند فرصتی ندارم.
                        کل چیزی که من میخوام:
                        http://www.4shared.com/photo/TzXoHwdF/abcdefgh.html (که قبلا گفتم)
                        http://www.4shared.com/photo/3iqPdrlh/abcdefg1.html
                        http://www.4shared.com/photo/V2TQeGB3/abcdefg2.html

                        برای چنین کاری سرعت میکروی من باید حداقل چقدر باشه؟
                        شما لطف دارید ولی من در حال حاضر ایران نیستم که بتونم از نزدیک کمکتون کنم :redface:
                        اینطور که به نظر میرسه قصد دارید یک آنالایزر بسازید که اطلاعات دقیقی رو در یک بازه زمانی نمایش بده، در این مورد دو روش موجوده، یکی Real-time ودیگری Offline. که روش اول نیاز به سرعت بالای پردازش و محاسبات موازی داره که تنها با FPGA امکان پذیره و دومی که ابتدا داده ها رو ذخیره و سپس روی اونها محاسبات رو به صورت ترتیبی انجام میده که با هر میکرویی میشه اون کار رو کرد، فقط در مدت زمان اجرا و رسیدن به نتیجه متفاوته.

                        برای سمپل برداری چیپهای مختلفی هستند که از ایران هم میشه تهیشون کرد، یادم میاد که جوان الکترونیک داشت ولی شمارش یادم نیست، در حد مگا سمپل هم داشت که من برای سیگنال CVBS لازم داشتم و برای صدا که دیگه خیلی بهتره. در سایتش حتما با توضیح و شماره پیدا میکنید.
                        همون بردی که دارین اگه پورت خارجی داره که بشه یک PCB کوچیک برای A2D زد و از اون طریق به همون برد وصل بشه که عالیه و بردتون زنده میشه
                        وگرنه باید یا یه برد آماده با A2D بخرید یا اگه پورت خارجی داشته باشن استفاده کنید.
                        بعد به حافظه نیاز دارید که این سمپلها رو برای روش دوم ذخیره کنید، اونوقت برای محاسبه هر قسمت از آنالیز، از اون حافظه استفاده کنید و اطلاعات رو نمایش بدید. مثلا در اوسیلوسکوپ یک رنجی از سمپلها، مثلا 1 نانوثانیه تا 10 ثانیه قابل نمایشه، حالا نسبت به میزان حافظه ای که دارین و نرخ نمونه برداریتون شما هم مثل اوسیلوسکوپ دیجیتالی باید یک رنجی برای کاربر تعریف کنید که تا اون مقدار سمپل فقظ قابل نمایشه، چون همون مقدار حافظه موجود برای محاسبه دارید و نه بیشتر. مثلا برای آنالیز 9 ثانیه از صدای ضبط شده با سمپل ریت 44100 16 بیتی به حافظه ای نیاز دارین که علاوه بر این مقادیر میزان حافظه لازم برای انجام محاسبات دیگه رو هم تامین کنه.
                        حداقل فرکانس کاری میکرو هم باید به میزانی باشه که فقط در زمان نمونه برداری بشه با سمپل ریت مورد نظر نمونه برداری کرد و برای انجام محاسبات سرعت بالاتری لازم نیست و همون کلاک جواب میده. چون روش Offline هست میشه با تعیین میزان دقت در محاسبات، سرعت اجرای اون رو برای یک نمونه ثابت تغییر داد.
                        اسمایل، تومورو ویل بی وُرس

                        دیدگاه


                          #13
                          پاسخ : FFT از صوت

                          دیدم برای اسپکتورام گفته broadband 300Hz و narraowband 40hz . شما میدونید مفهوم اینها چی هست؟ میشه توی چیپ کدک صدا با استفاده از فیلترهای خود چیپ این دو تا رو انتخاب کرد؟

                          دیدگاه


                            #14
                            پاسخ : FFT از صوت

                            نوشته اصلی توسط masoodhashemy
                            دیدم برای اسپکتورام گفته broadband 300Hz و narraowband 40hz . شما میدونید مفهوم اینها چی هست؟ میشه توی چیپ کدک صدا با استفاده از فیلترهای خود چیپ این دو تا رو انتخاب کرد؟
                            منظور از Narrow Band Signal سیگنالی هست که همیشه بیشترین پهنای باندش برابر و یا کوچکتر از میزان پهنای باند فیلتر هست یا همون دریافت کننده مثلا همون 40 هرتزی که گفتین. یعنی همواره سیگنال در همون محدوده هست و چیز دیگه ای وجود نداره. اما در مورد Broad Band Signal همیشه پهنای باند بالاتر از فیلتر و یا همون دریافت کننده است.
                            به عبارتی منظور از Narrow Band 40Hz نمایش سیگنال با پهنای باند کوچکتر و مساوی 40Hz و منظور از Broad Band 300Hz نمایش سیگنال با پهنای باند بزرگتر از 300Hz هست که دقت اون هم بستگی به نرخ نمونه برداری فیلتر داره.
                            در مورد Codec کی که براتون فرستادم ندیدم که همچین فیلتری داشته باشه. باید به صورت دیجیتالی و با همون FPGA پیاده سازی کنید.


                            http://www.conformity.com/artman/publish/printer_232.shtml
                            اسمایل، تومورو ویل بی وُرس

                            دیدگاه


                              #15
                              پاسخ : FFT از صوت

                              ببخشید انگار من دارم با دم شیر بازی میکنم :mrgreen: :mrgreen: :mrgreen: پس فعلا اینNARROW BAND و اینا باید بیخیالش بشم.با همون برد DE1 میشه پیاده سازی کرد؟ میخوام REAL باشه.

                              دیدگاه

                              لطفا صبر کنید...
                              X