PDA

View Full Version : مقایسه کردن دو صدا



mojtaba_mr4
پنج شنبه 13 آبان 1389, 15:02 عصر
با سلام.
من می خواهم توی یک برنامه دو تا صدا رو با هم مقایسه کنم ، ببینم که اصل کلمه ی گفته شده یکی هستند یا نه.
ممنون می شوم از دوستانی که در این زمینه کمکم کنند.

مصطفی ساتکی
پنج شنبه 13 آبان 1389, 18:42 عصر
اولاً که جای این سوال تو تالار هوس مصنوعی بود نه اینجا.
برای انجام این کار شما بایستی کتاب که تو زمینه پردازش صوت وجود دارند یا اگر با signal processing آشنایی داشته باشین می تونین.
سیگنالی صوتی به صورت mono و stereo هستند در حالت mono شما یک بردار دارید و در حالت stereo به صورت جفت بردار.
پردازش صدا و پردازش صوت زیر مجموعه سیگنال هستند.صوت یک بعدی و تصویر دو بعدی.
شما برای اینکار می تونید نمونه صوت sample خودتون رو با صوت اصلی Convolution کنید که بهترین کار در حالت static برای اون fft .
در ضمن از دیگر تکنیک های pattern matching رد این زمینه هم می تونید استفاده کنید که invariant نباشند یعنی scalable باشند.

mojtaba_mr4
جمعه 14 آبان 1389, 11:37 صبح
خیلی سطح بالا توضیح دادید لطف کنید یه خورده مطلب رو باز کنید چون من میخوام توی یک برنامه دلفی ازش استفاده کنم.ممنون

مصطفی ساتکی
جمعه 14 آبان 1389, 11:54 صبح
باری یه مقایسه ساده شما اول اطلاعات صوتی تونو در یک آرایه بریزید و سپس اطلاعات صوتی sample رو هم در یک آرایه دیگه اگر نخاید Convolution انجام بدید مقایسه بایت به بایت بایستی انجام بدید. در در هر جا که برابر بود اون میشه جواب.
البته یک کوچولو نویز در sample وجود داشته باشه به جواب نمی رسید برای این کار در ابتدا هر دو صوت رو quantize کنید یا به اصطلاح خودمونی تر smooth ش کنید حالا اون نویز ها هم وجود نداره شما در اینجا برای حذف نویز اونها رو از فیلتر پایین گذر عبور دادید.
برای وارد شدن در این فیلد بایستی کتاب پردازش صوت مطالعه کنید حتی کتاب های در level پایین هم وجود داره .
من یه چند تا کتاب تو این زمینه دارم اگر خواستید به من اطلاع بدید براتون می فرستم.

مصطفی ساتکی
شنبه 15 آبان 1389, 10:44 صبح
شما به نظرم اول این کتاب رو مطالعه کنید مقدمات کارو یاد می گیرید.
introduction to sound processing by Davide Rocchesso
بعد این مقدمات اصول اولیه در مورد صدا و روش های مقایسه رو بهتون یاد میده بعد می تونید قوی رو speech کار کنید.

Saeed_m_Farid
شنبه 15 آبان 1389, 10:56 صبح
خیلی سطح بالا توضیح دادید لطف کنید یه خورده مطلب رو باز کنید چون من میخوام توی یک برنامه دلفی ازش استفاده کنم.ممنون
شما سوال ساده ای نپرسیدید که سطح پایین در موردش توضیح داده بشه! باز کردن همچین مطلبی به دانش بسیار قوی ریاضیات و سیگنال سیستم نیاز داره و تا دو-سه سال پیش موضوع غالب پایان نامه های ارشد و دکتری دانشگاه های معتبر داخلی بود (نمونه ها (http://www.asr-gooyesh.com/farsi/rd_publication.asp))

معمولاً از الگوریتم های ژنتیک که بر پایه شبکه های هوشمند عصبی هستند، برای چنین سیستم هایی استفاده میشه که یکی از معروفترین الگوریتم های بازشناسی گفتار هم "مدل مخفي مارکوف (http://ceit.aut.ac.ir/~shiry/lecture/machine-learning/tutorial/HMM/HMM.htm)" یا HMM (http://en.wikipedia.org/wiki/Hidden_Markov_model) هست که پایه بسیاری از سیستمهای تشخیص گفتار هست؛ اینها رو گفتم تا راه اشتباهی رو در پیش نگیرید چون بنظر من یا یک برنامه و دو سه تا تابع دلفی، صد سال دیگه هم نمی تونید به نتیجه درست حسابی در این زمینه برسید.

http://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/HiddenMarkovModel.png/300px-HiddenMarkovModel.png


باری یه مقایسه ساده شما اول اطلاعات صوتی تونو در یک آرایه بریزید و سپس اطلاعات صوتی sample رو هم در یک آرایه دیگه اگر نخاید Convolution انجام بدید مقایسه بایت به بایت بایستی انجام بدید. در در هر جا که برابر بود اون میشه جواب.
البته یک کوچولو نویز در sample وجود داشته باشه به جواب نمی رسید برای این کار در ابتدا هر دو صوت رو quantize کنید یا به اصطلاح خودمونی تر smooth ش کنید حالا اون نویز ها هم وجود نداره شما در اینجا برای حذف نویز اونها رو از فیلتر پایین گذر عبور دادید.
برای وارد شدن در این فیلد بایستی کتاب پردازش صوت مطالعه کنید حتی کتاب های در level پایین هم وجود داره .
من یه چند تا کتاب تو این زمینه دارم اگر خواستید به من اطلاع بدید براتون می فرستم.

راهکار شما -حتی با در نظر گرفتن تلاش شما برای ساده سازی- دید بد و غلطی به پرسش کننده میده چون اولاً : به احتمال قریب به یقین کسی که چنین سوالی رو میپرسه، دسترسی به اطلاعات RAW صوتی و منبع داده صوتی (مثلاً 11 khz هشت بیت مونو) نداره که اون رو بصورت استریم تو آرایه ریخته! و مقایسه دو به دو یا حتی کمی هوشمند تر روی اونها انجام بده و معمولاً روی اطلاعات صوتی کدک هایی اعمال شده و یا حداقلش هدر رو فایل میخوره و ...؛ ثانیاً : اطلاعات گفتاری رو Quantize یا Smooth کردن نمودار گفتاری و صوتی رو تغییر میده و اصلاً بفرض همچین کاری عملی بود، این دوستمون چطوری میخواد یک استریم (مثلاً کلمه موردنظر) رو در استریم دیگه ای که Quantize شده (جمله یا گفتار اصلی) جستجو کنه؟
برای نمونه کلمه طیف نگاشت (Spectrogram) "بسم ا... الرّحمن الرّحیم" یک چیزی مثل شکل زیر هست :

http://www.barnamenevis.org/forum/attachment.php?attachmentid=59731&stc=1&d=1289029840

حالا چطور باید اون رو بریزم تو آرایه؟ و بعدش دنبال مثلاً "رحیم" بگردم؟ اینجور کارها خیلی بعید هست که با روشهایی که شما فرمودید قابل پیاده سازی باشه؛ الگوریتمی مثل شکل زیر ساده ترین کاری هست که میشه انجام بشه :

http://www.barnamenevis.org/forum/attachment.php?attachmentid=59732&stc=1&d=1289029840

*************
مبحث Speech Recognition خیلی متفاوت از VAD (یا Voice activity detection) هست چون عوامل بسیاری غیر از خود صدا در چنین سیستم هایی دخیل هستند، مواردی مثل Language models، Acoustic models یا حتی Emotion Recognition و ... که معمولاً نیاز به اتوماتاهای یادگیر مختلفی هست؛ همه اینها هم در حالتی هست که مخاطب با حداقل های VAD آشنا یاشه که بعید میدونم که تعداد زیادی از بچه های برنامه نویس تو اینجور کارها باشند ...

http://www.barnamenevis.org/forum/attachment.php?attachmentid=59734&stc=1&d=1289029840

*************
اگه زحمتی نیست میتونم اون منابعی که فرمودید رو من هم داشته باشم؟

مصطفی ساتکی
شنبه 15 آبان 1389, 11:43 صبح
اهکار شما -حتی با در نظر گرفتن تلاش شما برای ساده سازی- دید بد و غلطی به پرسش کننده میده چون اولاً : به احتمال قریب به یقین کسی که چنین سوالی رو میپرسه، دسترسی به اطلاعات RAW صوتی و منبع داده صوتی (مثلاً 11 khz هشت بیت مونو) نداره که اون رو بصورت استریم تو آرایه ریخته! و مقایسه دو به دو یا حتی کمی هوشمند تر روی اونها انجام بده و معمولاً روی اطلاعات صوتی کدک هایی اعمال شده و یا حداقلش هدر رو فایل میخوره
اگر شما تا اینجا هم طالاعات ندارید بهتر بود وارد بحث نمیشدید.
شما به فرض یه IP Camera دارید که داره یه stream به شما می ده شما در نهایت می خاید رو این سینگال پردازش انجام بدید ابتدا زحمت می کشید اون stream رو decode می کنید و سپس به bitmap تبدیل می کنید و سپس پردازش تونو روش انجام میدید.
صوت هم به همین صورته اطلاعات با کدک های مختلف ذخیره میشن و سپس شما زحمت می کشی اونها رو به wav تبدیل می کنید تا بتونید روشون پردازشتونو انجام بدید.به همین سادگی.

طلاعات گفتاری رو Quantize یا Smooth کردن نمودار گفتاری و صوتی رو تغییر میده و اصلاً بفرض همچین کاری عملی بود، این دوستمون چطوری میخواد یک استریم (مثلاً کلمه موردنظر) رو در استریم دیگه ای که Quantize شده (جمله یا گفتار اصلی) جستجو کنه
وقتی می گم اطلاعات ندارید پا برهنه وارد بحث میشید اینطوریه.میشه یه نمه Signal processing بدونید با همون fft یا dft می تونید همچین چیزی رو بنویسید.میخاد یک sample مقایسه کنه نمی خاد یه Speech to text تجاری بنویسه.

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

در ضمن سعی کنید در زمینه اظهار دانایی کنید که در اون زمینه تجربه دارید که مجبور نشید کنایه های من رو تحمل کنید.
موفق باشید.

Saeed_m_Farid
شنبه 15 آبان 1389, 14:31 عصر
@ Delphi_CAT: دوست عزیز مگه من چی گفتم و چه بی احترامی کردم که این برخورد بد رو کردید؟ شما تو پست دوم (http://www.barnamenevis.org/forum/showpost.php?p=1144224&postcount=2) خودتون اطلاعات نسبتاً مفیدی دادین که موقع ساده کردن (یا بقول دوستمون باز کردن) موضوع از دید خودتون، بنظر من راه اشتباهی به کسی که مطالب شما رو دنبال میکنه، پیشنهاد کردید؛ وقتی اینطوری میگین که :
شما اول اطلاعات صوتی تونو در یک آرایه بریزید و سپس اطلاعات صوتی sample رو هم در یک آرایه دیگه اگر نخاید Convolution انجام بدید مقایسه بایت به بایت بایستی انجام بدید. خوب معلومه که این کار حتی برای یک واک ساده هم امکانپذیر نیست چه برسه یک کلمه یا جمله و ... و از طرف دیگه باید به دکد کردن هم اشاره کنید که اینکار رو انجام ندادید و این موضوع رو هم درنظر نگرفتید که وقتی صحبت از مقایسه بیت به بیت هست، مطمئناً استریم Decode شده مثلاً MP3 همون استریم RAW اولی نخواهد بود و منظور من هم همین بود.
ضمناً اشاره من به زبان برنامه نویسی، پیرو اشاره خود کاربر بوده و هیچ منظوری به زبان برنامه نویسی خاصی نداشتم و از نظر من کار به همین سادگی نیست، شما اگه احساس می کنید خیلی راحت میشه اینکار رو "به همین سادگی" انجام داد، یک برنامه بنویسید که یک کلمه تک سیلابی رو از یک ورودی بگیره و در یک جمله صوتی جستجو کنه، بیشتر نه!
قول میدم اصلآً پست من رو نخوندید و بیخودی به خودتون گرفتید؛ عرض کردم در جملات گفتاری، غیر از صوت عوامل دیگه ای هم دخیل هستند مثل مدلهای آکوستیک، مدلهای زبان گفتاری و حتی تاثیرات احساسی بر گفتار و تشخیص اونها؛ اینا چه ربطی به FFT یا DFT داره؟ سری فوریه برای اینجور موارد خیلی ابتدایی و بی معنی هست! همونطور که عرض کردم :


معمولاً از الگوریتم های ژنتیک که بر پایه شبکه های هوشمند عصبی هستند، برای چنین سیستم هایی استفاده میشه که یکی از معروفترین الگوریتم های بازشناسی گفتار هم "مدل مخفي مارکوف" (http://ceit.aut.ac.ir/~shiry/lecture/machine-learning/tutorial/HMM/HMM.htm) یا HMM (http://en.wikipedia.org/wiki/Hidden_Markov_model) هست که پایه بسیاری از سیستمهای تشخیص گفتار هست ...

و البته :

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

شما هم موفق باشید!

مصطفی ساتکی
شنبه 15 آبان 1389, 18:44 عصر
حالا که اینطوریه مشکلی نیست.ببینم مردش هستی یا نه.
شما HMM پیادش کن من با fft مرد حسابی .طرف میخاد یه مقایسه ساده انجام بده بیخودی شلوغش کردی.من convolve کردن به طرف می گم میگه سخته بعد تو می گی hmm .
یه مدیر هم باشه اینجا قضاوت کنه.
آقا بهروز هم بی جهت رفته به من اخطار داده.
شما به شرط اینکه حرفی که می زینه بتونی پیادش کنی . من کارم R&D بعد شما دارای صحبت از NN وHMM برام می کنی حتماً از مقاله ای که خوندید به همین 2 مورد classification اشاره کرده بود برید handbook اخیر رو که تو این زمینه publish شده رو بخونید بعداً اینجا نطق کنید .همیشه از نفر یه اشکال بگیر که بار اطلاعاتیش داشته باشی.


اولاً : به احتمال قریب به یقین کسی که چنین سوالی رو میپرسه، دسترسی به اطلاعات RAW صوتی و منبع داده صوتی (مثلاً 11 khz هشت بیت مونو) نداره که اون رو بصورت استریم تو آرایه ریخته! و مقایسه دو به دو یا حتی کمی هوشمند تر روی اونها انجام بده و معمولاً روی اطلاعات صوتی کدک هایی اعمال شده و یا حداقلش هدر رو فایل میخوره و
آخه این هم حرفه. چه ربطی داشت به بحث.مثل اینکه طرف بخاد media پروسس کنه شما برگردی بهش بگی که می تونی کدک ها مختلف رو بخونی.به نظر شما این توهین به طرف مقابل نیست.شما دارای ماهیت مقوله رو زیر سوال می بری.


طلاعات گفتاری رو Quantize یا Smooth کردن نمودار گفتاری و صوتی رو تغییر میده و اصلاً بفرض همچین کاری عملی بود، این دوستمون چطوری میخواد یک استریم (مثلاً کلمه موردنظر) رو در استریم دیگه ای که Quantize شده (جمله یا گفتار اصلی) جستجو کنه؟
دوست عزیز من در حد اطلاعت طرف با اون صحبت می کنم چرا نگفتم wavelet گفتم smooth چون می دونم طرف مخاطب من اون بار اطلاعاتی رو نداره.فیلتر های پایین گذر نویزهای احتمالی که وجود داره می گیرن حرف شما مثل اینکه ما میزان Focus تصویر رو نسبت به Object تو یه تصویر بدست بیاریم بگم نه رو تصویر فیلتر پایین گذر اعمال نمی کنیم چون محتوای خودشو از دست میده .مرد حسابی اینجا gaussian اعمال نکنی همه نویز های زائد هم گرادیانشون سر به فلک میرنه با یه support 5 مشکل مسئله حل میشه.

که گفته با quantize کردن دیتا ماهیتشو از دست میده اتفاقاً اینکارو انجام میدم که دیتای مطلوبی برای Classification داشته باشیم پس HMM چیکار می کنه . پس شما اگه از HMM هم بتونید همچین اظهار نظری نمی کنید چون HMM هم با فرمولاسیون خودش quantize رو صورت میده.
شما 4 تا تصویر از این طرف اون طرف برداشتی ضمیمه کرد تو پست تون .اگر میخاستم وارد مقوله pattern بشم برای طرف از اطلاعات خودم می گفتم .


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

Saeed_m_Farid
شنبه 15 آبان 1389, 23:36 عصر
مثل اینکه شما درست حرف زدن بلد نیستید! من برای تمام صحبت هایی که می کنم رفرنس و لینک میدم و شما اینقدر عشق جر و بحث الکی داری که به هیچکدوم توجه نمیکنی و فقط پشت سر هم توهین و حرفهای بیریط میزنید؛ یکمی سعی کنید همونطورکه میگید در یک محیط آکادمیک دارید بسر میبرید اونهم بخش تحقیق و توسعه، مدل چاله میدونی صحبت نکنید!
لازم نیست آدم همه چی رو پیادش کنه! برای HMM پیاده سازی هایی مثل Jahmm (http://www.run.montefiore.ulg.ac.be/~francois/software/jahmm/) وجود داره که implementation ای جاوایی از HMM هست، فقط کافیه کسی که میخواد ازش استفاده کنه، بدونه میخواد چکار کنه و از مفاهیم اساسی اطلاع داشته باشه و توسط راهنمایی های غلط گمراه نشده باشه! یه نمونه از استفاده از پکیج jahmm :
/* jahmm package - v@VERSION@ */

package be.ac.ulg.montefiore.run.jahmm.test;


/*
* SimpleExample.java: A simple example file for the jahmm package.
*
* Written by Jean-Marc Francois <francois-jahmm@run.montefiore.ulg.ac.be>
*
* The content of this file is public-domain.
*
* Compile with the following command:
* javac SimpleExample.java
* And run with:
* java SimpleExample
*
* This file (or a newer version) can be found at this URL:
* http://www.run.montefiore.ulg.ac.be/~francois/software/jahmm/example/
*
*
* Changelog:
* 2004-03-01: Creation. (JMF)
* 2004-04-27: Adapted to Jahmm 0.2.4. (JMF)
* 2005-01-31: Minor adaption for release 0.3.0. (JMF)
* 2005-11-25: Adapted to Jahmm 0.5.0. (JMF)
* 2006-01-11: Now prints the initial/learnt HMMs. (JMF)
* 2006-02-05: Small modification to avoid 'unchecked casting'. (JMF)
* 2006-02-05: Renamed, adapted to v0.6.0. (JMF)
*/

import java.util.*;

import be.ac.ulg.montefiore.run.jahmm.*;
import be.ac.ulg.montefiore.run.jahmm.draw.GenericHmmDraw erDot;
import be.ac.ulg.montefiore.run.jahmm.learn.BaumWelchLear ner;
import be.ac.ulg.montefiore.run.jahmm.toolbox.KullbackLei blerDistanceCalculator;
import be.ac.ulg.montefiore.run.jahmm.toolbox.MarkovGener ator;


/**
* This class demonstrates how to build a HMM with known parameters, how to
* generate a sequence of observations given a HMM, how to learn the parameters
* of a HMM given observation sequences, how to compute the probability of an
* observation sequence given a HMM and how to convert a HMM to a Postscript
* drawing.
* <p>
* The example used is that of a wireless computer network that can experience
* jamming. When the wireless medium is (resp. is not) jammed, a lot (resp.
* few) packets are lost. Thus, the HMMs built here have two states
* (jammed/not jammed).
*/
public class SimpleExample
{
/* Possible packet reception status */

public enum Packet {
OK, LOSS;

public ObservationDiscrete<Packet> observation() {
return new ObservationDiscrete<Packet>(this);
}
};


static public void main(String[] argv)
throws java.io.IOException
{
/* Build a HMM and generate observation sequences using this HMM */

Hmm<ObservationDiscrete<Packet>> hmm = buildHmm();

List<List<ObservationDiscrete<Packet>>> sequences;
sequences = generateSequences(hmm);

/* Baum-Welch learning */

BaumWelchLearner bwl = new BaumWelchLearner();

Hmm<ObservationDiscrete<Packet>> learntHmm = buildInitHmm();

// This object measures the distance between two HMMs
KullbackLeiblerDistanceCalculator klc =
new KullbackLeiblerDistanceCalculator();

// Incrementally improve the solution
for (int i = 0; i < 10; i++) {
System.out.println("Distance at iteration " + i + ": " +
klc.distance(learntHmm, hmm));
learntHmm = bwl.iterate(learntHmm, sequences);
}

System.out.println("Resulting HMM:\n" + learntHmm);

/* Computing the probability of a sequence */

ObservationDiscrete<Packet> packetOk = Packet.OK.observation();
ObservationDiscrete<Packet> packetLoss = Packet.LOSS.observation();

List<ObservationDiscrete<Packet>> testSequence =
new ArrayList<ObservationDiscrete<Packet>>();
testSequence.add(packetOk);
testSequence.add(packetOk);
testSequence.add(packetLoss);

System.out.println("Sequence probability: " +
learntHmm.probability(testSequence));

/* Write the final result to a 'dot' (graphviz) file. */

(new GenericHmmDrawerDot()).write(learntHmm, "learntHmm.dot");
}


/* The HMM this example is based on */

static Hmm<ObservationDiscrete<Packet>> buildHmm()
{
Hmm<ObservationDiscrete<Packet>> hmm =
new Hmm<ObservationDiscrete<Packet>>(2,
new OpdfDiscreteFactory<Packet>(Packet.class));

hmm.setPi(0, 0.95);
hmm.setPi(1, 0.05);

hmm.setOpdf(0, new OpdfDiscrete<Packet>(Packet.class,
new double[] { 0.95, 0.05 }));
hmm.setOpdf(1, new OpdfDiscrete<Packet>(Packet.class,
new double[] { 0.20, 0.80 }));

hmm.setAij(0, 1, 0.05);
hmm.setAij(0, 0, 0.95);
hmm.setAij(1, 0, 0.10);
hmm.setAij(1, 1, 0.90);

return hmm;
}


/* Initial guess for the Baum-Welch algorithm */

static Hmm<ObservationDiscrete<Packet>> buildInitHmm()
{
Hmm<ObservationDiscrete<Packet>> hmm =
new Hmm<ObservationDiscrete<Packet>>(2,
new OpdfDiscreteFactory<Packet>(Packet.class));

hmm.setPi(0, 0.50);
hmm.setPi(1, 0.50);

hmm.setOpdf(0, new OpdfDiscrete<Packet>(Packet.class,
new double[] { 0.8, 0.2 }));
hmm.setOpdf(1, new OpdfDiscrete<Packet>(Packet.class,
new double[] { 0.1, 0.9 }));

hmm.setAij(0, 1, 0.2);
hmm.setAij(0, 0, 0.8);
hmm.setAij(1, 0, 0.2);
hmm.setAij(1, 1, 0.8);

return hmm;
}


/* Generate several observation sequences using a HMM */

static <O extends Observation> List<List<O>>
generateSequences(Hmm<O> hmm)
{
MarkovGenerator<O> mg = new MarkovGenerator<O>(hmm);

List<List<O>> sequences = new ArrayList<List<O>>();
for (int i = 0; i < 200; i++)
sequences.add(mg.observationSequence(100));

return sequences;
}
}


حرف من اینه که جناب مسئول بخش R&D وقتی احساس میکنی استاد پردازش سیگنال هستید و غیر از شما کسی حق صحبت کردن در مورد سیگنالینگ رو نداره و هر صحبتی که بکنه اسمش رو میذاری مردحسابی، طرف 4 تا عکس از اینور اونور پیدا کرده، 2 تا کلمه از یک مقاله خونده، نطق الکی میکنه و ... لطف بفرمایید پیشنهادهای آبکی ندین! اول میگی FFT و DFT که بازم یه راه حل منطقی بنظر میاد و امکان به نتیجه رسیدن بحث هرچند کم ولی وجود داره؛ ولی اینکه بدون هیچ اشاره ای به نوع مدیا و ورودی و راه حل منطقی یکی بگه : " اطلاعات صوتی تونو در یک آرایه بریزید و smooth اش کنید، حالا اون نویز ها هم وجود نداره!!! و بیت به بیت مقایسه کنید" از یک طرف نشون میده که بار علمی چقدر هست و از طرف دیگه تنها در حد حرف هست و بس! من نمیگم خودتون این ایده خلااقانه رو پیاده سازی کنید و کدش رو اینجا بنویسید (که امکانش با دیدی که من از شما پیدا کردم = صفر هست!) ، یک نمونه از اینکار رو گوگل کنید ببینید یک آدم عاقل (نه رئیس کل R&D های کشور!) پیدا میشه که همچین کار خنده داری بکنه؛ پس زیاد هم بیراه نیست که هرکس بگه حرفی که زدی فلان جاش اشتباه داره، از کوره در برین و بدون لینک و سند و مدرک شروع کنید به بیراه گفتن و به رخ کشیدن جایگاه فرضی که واسه خودتون درست کردید و ...

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

***********
ضمناً یکمی خودتون رو کنترل کنید و جمله بندیهای با معنی بنویسید که بشه بهشون جواب داد؛ من که خیلی از جمله های شما رو با کلمات پس و پیشی که استفاده کردین متوجه نشدم، فقط احساس کردم با کیبرد دعوا داشتین!

مصطفی ساتکی
یک شنبه 16 آبان 1389, 08:02 صبح
چی بهت بگم وقتی گوش شنوا نداری میزارم دیگران قضاوت کنن.
فقط این قدر ادعا داری دوست دارم من رو در رو باهات تو این زمینه باهات بحث کنم ببینم چی می گی.
این کدی که از hmm گذاشتی راحت با یه search پیدا میشه مهم اونه که شما pattern بلد باشی یا نه.فکر نکن که pattern هم مثل برنامه نویسی چهار تا خط کد زدن نه عزیز من این فکرو از شرت بیرون کن.

Saeed_m_Farid
یک شنبه 16 آبان 1389, 09:24 صبح
چی بهت بگم وقتی گوش شنوا نداری میزارم دیگران قضاوت کنن.
فقط این قدر ادعا داری دوست دارم من رو در رو باهات تو این زمینه باهات بحث کنم ببینم چی می گی.
این کدی که از hmm گذاشتی راحت با یه search پیدا میشه مهم اونه که شما pattern بلد باشی یا نه.فکر نکن که pattern هم مثل برنامه نویسی چهار تا خط کد زدن نه عزیز من این فکرو از شرت بیرون کن.
اولاً اینجا دادگاه نیست کسی قضاوت کنه، بعدش هم من اصلاً تمایل ندارم با شخصی مثل شما رو در رو بحث کنم، به اندازه کافی دور و برم آدمای اعصاب خوردکن هستند! در مورد ادعا هم که میگی، من هیچوقت ادعایی نکردم و در هر زمینه که لازمم شده از دیگران کمک گرفتم و اگه کسی نکته ای رو گوشزد کرده باشه، اگه منطقی باشه بدون به رخ کشیدن چیزایی که به اون مربوط نیست قبول میکنم. ولی در مورد شما، این چیزیه که شما اسمش رو ادعا نمیذاری! :



شما به شرط اینکه حرفی که می زینه بتونی پیادش کنی . من کارم R&D بعد شما دارای صحبت از NN وHMM برام می کنی حتماً از مقاله ای که خوندید به همین 2 مورد classification اشاره کرده بود برید handbook اخیر رو که تو این زمینه publish شده رو بخونید بعداً اینجا نطق کنید .همیشه از نفر یه اشکال بگیر که بار اطلاعاتیش داشته باشی.
...
طرف پست بزنه بار اطلاعاتیش تو فیلد مورد نظر مشخص میشه. شما تو هر زمینه ای اطلاعات داشته باشید با این پست هایی که من دیدم کارتون سیگنال نیست .

در مورد پیدا شدن راحت کدی که من گذاشتم با یه search ساده : من هم نگفتم دوست دارم چرخ رو از اول ابداع کنم، بنده عرض میکنم همه صحبت های شما درست ولی در مورد راه حل ساده شما (ریختن اطلاعات صوتی در آرایه و مقایسه بیت به بیت) قابل پیاده سازی نیست و بعنوان کسی که این راه رو رفتم - فقط هم در همین زمینه که دوستمون سوال کردن، نه اینکه متخصص سیگنال پروسس بشم! - فکر نمیکنم بشه همچین کدی نوشت حتی برای مقایسه یه واک ساده؛ ولی شما در جواب بنده، رجز میخونی :


حالا که اینطوریه مشکلی نیست.ببینم مردش هستی یا نه.
شما HMM پیادش کن من با fft مرد حسابی .

بنده هم عرض کردم :



لازم نیست آدم همه چی رو پیادش کنه! برای HMM پیاده سازی هایی مثل Jahmm (http://www.run.montefiore.ulg.ac.be/~francois/software/jahmm/) وجود داره که implementation ای جاوایی از HMM هست، فقط کافیه کسی که میخواد ازش استفاده کنه، بدونه میخواد چکار کنه و از مفاهیم اساسی اطلاع داشته باشه و ...

نه گفتم این کد رو من نوشتم نه ادعایی کردم؛ کلاً شما هستی که بحث pattern و R&D و classification و quantize و ... رو که هیچ ربطی به سوال دوستمون نداشت وسط کشیدی و تنها چیزی که من گفتم این بود که مقایسه بیت به بیت راه حل جوابگوی این مساله نیست، همین تذکر ساده اینقدر شما رو شاکی کرده! کسی منکر سواد و دانایی شما در زمینه سیگنالینگ نشده و هیچ حرف بیربطی هم در مورد توانایی شما زده نشده ولی کُرکُری کردن و به حاشیه کشیدن بحث کار درستی نیست؛ حالا شما هرکسی هستی باش، واسه خودت؛ من خیلی آدم معمولی و برنامه نویسی هستم که بقول شما بلدم 4 خط کد بنویسم و یه مقدار جزئی هم از مخابرات اطلاعات دارم، در ضمن پترن-مترن هم بلد نیستم ولی چون یک جایی لازمم شده تو این زمینه تحقیق کردم واسه یکی از پروژه هایی که تو RFB اش VAD و Speech Recognition لحاظ شده بود، بدون اینکه Pattern بلد باشم و به همه بپرم، آروم رفتم دنبالش و به اینایی که تا حالا عرض کردم رسیدم، گفتم با دوستان به اشتراک بذارم، همین و والسلام.
حداقل به امضاء خودت پایبند باش : I share, U share, V learn