Minggu, 29 November 2015


Haar Cascade Classifier

OpenCV ialah open source library computer vision, yang memudahkan pemrograman  deteksi wajah, face tracking, face recognition, kalman filtering dn berbagai metode artificial intelligent.
OpenCV menggunakan sebuah tipe face detector yang dsebut Haar Cascade classifier.  Gambar menunjukkan face detector berhasil bekerja pada sebuah gambar.  Jika ada sebuah image (bias dari file /live video), face detector menguji tiap lokasi image dan mengklasifikasinya sebagai “wajah” atau “bukan wajah”. Klasifikasi dimisalkan sebuah skala fix untuk wajah, misal 50x50 pixel.  Jika wajah pada image lebih besar atau lebih kecil dari pixel tersebut, classifier terus menerus jalan beberapa kali, untuk mencari wajah  pada gambar tersebut.
Classifier menggunakan data yang disimpan pada file XML untuk memutuskan bagaimana mengklasifikasi tiap lokasi image.  OpenCV menggunakan 4 data XML untuk deteksi wajah depan, dan 1 untuk wajah profile.  Termasuk juga 3 file XML bukan wajah: 1 untuk deteksi full body, 1 untuk upper body, dan 1 untuk lower body.  Anda harus memberitahukan classifier dimana menemukan file data yang akan anda gunakan. Salah satunya bernama haarcascade_frontalface_default.xml. Pada OpenCV, terletak pada :
Program_Files/OpenCV/data/haarcasades/haarcascade_frontalface_default.xml.

Konsep Pendeteksian Wajah
OpenCV face detector menggunakan metode Paul Viola dan Michael Jones, silahkan baca detail paper mereka di CD Program. Metode mengkombinasikan :
·           Fitur  rectangular sederhana yang disebut fitur Haar
·           Integral imag untuk deteksi fitur yang cepat
·           Metode machine learning AdaBoost.
·           Sebuah pengklasifikasi cascade untkmengkombinasikan banyak fitur secara efisien.
Fitur yang digunakan Viola dan Jones menggunakan bentuk gelombang Haar. Bentuk gelombang Haar ialah sebuah gelombang kotak.  Pada 2 dimensi, gelombang kotak ialah pasangan persegi yang bersebelahan, 1 terang dan 1 gelap. Haar ditentukan oleh pengurangan pixel rata-rata daerah gelap dari pixel rata-rata daerah terang.  Jika perbedeaan diatas threshold (diset selama learning), fitur tersebut dikatakan ada.

Implementasi Deteksi Wajah:
1.        Variable CvHaarClassifierCascade * pCascade menyimpan data dari file XML.  Untuk meload data XML ke pCascade, Anda dapat menggunakan fungsi cvLoad().  cvLoad ialah fungsi umum untuk meload data dari file yang membutuhkan hingga 3 parameter input. JIka anda membuat kode pada C, set parameter sisanya menjadi 0, jika menggunakan C++ hilangkan parameter yang tidak digunakan.
2.        Sebelum mendeteksi wajah pada images, Anda membutuhkan objek  CvMemStorage.  Detector akan mendaftar wajah yang terdeteki ke buffer. Yang harus anda kerjakan ialah membuatnya
pStorage=CvCreateMemStorage(0);

 dan mereleasenya ketika telah selesai.

cvReleaseMemStorage(&pStorage);


3.        Anda akan sering meload data dari file, tentu ada kemungkinan salah path, sebaiknya berikan pengecekan untuk memastikan file diload dengan benar.
if(!pInpImg ||  !pStorage  || !pCascade)
{
printf (“Inisialisasi gagal \n”);
}
exit (-1);
}


4.        Untuk menjalankan detector, panggil objek cvHaarDetect.  Fungsi ini membutuhkan 7  parameter, 3 pertama ialah pointer image,  XML data dan memory buffer, sisanya diset pada default C++.
pFaceRectSeq =cvHaarDetectObjects
(pInpImg, pCascade, pStorage,
1.1, //tingkatkan skala pencarian dengan 10% tiap passing
3,  //drop group yang kurang dari 3 deteksi
CV_HAAR_DO_CANNY_PRUNNING //skip region yang tidak berisi wajah
cvSize(0,));  //gunakan XML default untuk skala pencarian terkecil.

5.    Untuk membuat display Window gunakan cvNamedWindow seperti berikut:
cvNamedWindow (“Haar Window”, CV_WINDOW_AUTOSIZE);
Untuk memasukkan image ke display, panggil fungsi cvShowImage() dengan nama yang telah dibuat pada window dan nama image yang ingin ditampilkan.

Berikut ini kode lengkapnya :

DetectFace.cpp:
// Capturing.cpp : Defines the entry point for the console application.

static CvMemStorage* storage = 0;
static CvHaarClassifierCascade* cascade = 0;

void detect_and_draw( IplImage* image );

const char* cascade_name =
    "C:/Program Files/OpenCV/data/haarcascades/haarcascade_frontalface_alt.xml";
    /*"haarcascade_profileface.xml";*/

int main(int argc, char** argv)
{
    CvCapture* capture = 0;
    IplImage *frame, *frame_copy = 0;
    argc = 1;
    argv = 0;
    int optlen = strlen("--cascade=");
    const char* input_name;
        input_name = 0;

    if( argc > 1 && strncmp( argv[1], "--cascade=", optlen ) == 0 )
    {
        cascade_name = argv[1] + optlen;
        input_name = argc > 2 ? argv[2] : 0;
    }
    else
    {
        fprintf( stderr,
        "Usage: facedetect --cascade=\"\" [filename|camera_index]\n" );
        //return -1;
        /*input_name = argc > 1 ? argv[1] : 0;*/
    }

    cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );
    if( !cascade )
    {
        fprintf( stderr, "ERROR: Could not load classifier cascade\n" );
        //return -1;
    }

    storage = cvCreateMemStorage(0);

    if( !input_name || (isdigit(input_name[0]) && input_name[1] == '\0') )
        capture = cvCaptureFromCAM( !input_name ? 0 : input_name[0] - '0' );
    else
        capture = cvCaptureFromAVI( input_name );

    cvNamedWindow( "Face Detection", 1 );

    if( capture )
    {
        for(;;)
        {
            if( !cvGrabFrame( capture ))
                break;
            frame = cvRetrieveFrame( capture );
            if( !frame )
                break;
            if( !frame_copy )
                frame_copy = cvCreateImage( cvSize(frame->width,frame->height),
                                            IPL_DEPTH_8U, 3 );
            if( frame->origin == IPL_ORIGIN_TL )
                cvCopy( frame, frame_copy, 0 );
            else
                cvFlip( frame, frame_copy, 0 );
          
            detect_and_draw( frame_copy );

            if( cvWaitKey( 10 ) >= 0 )
                break;
        }

        cvReleaseImage( &frame_copy );
        cvReleaseCapture( &capture );
    }
    else
    {
        const char* filename = "lena.jpg";
        IplImage* image = cvLoadImage( filename, 1 );

        if( image )
        {
            detect_and_draw( image );
            cvWaitKey(0);
            cvReleaseImage( &image );
        }
        else
        {
            /* assume it is a text file containing the
               list of the image filenames to be processed - one per line */
            FILE* f = fopen( filename, "rt" );
            if( f )
            {
                char buf[1000+1];
                while( fgets( buf, 1000, f ) )
                {
                    int len = (int)strlen(buf);
                    while( len > 0 && isspace(buf[len-1]) )
                        len--;
                    buf[len] = '\0';
                    image = cvLoadImage( buf, 1 );
                    if( image )
                    {
                        detect_and_draw( image );
                        cvWaitKey(0);
                        cvReleaseImage( &image );
                    }
                }
                fclose(f);
            }
        }
    }

    cvDestroyWindow("Face Detection");

     return 0;
}

void detect_and_draw( IplImage* img )
{
    int scale = 1;
    IplImage* temp = cvCreateImage( cvSize(img->width/scale,img->height/scale), 8, 3 );
    CvPoint pt1, pt2;
    int i;

    //cvPyrDown( img, temp, CV_GAUSSIAN_5x5 );
    cvClearMemStorage( storage );

    if( cascade )
    {

        CvSeq* faces = cvHaarDetectObjects( img, cascade, storage,
                                            1.2, 2, CV_HAAR_DO_CANNY_PRUNING,
                                            cvSize(40, 40) );
        for( i = 0; i < (faces ? faces->total : 0); i++ )
        {
            CvRect* r = (CvRect*)cvGetSeqElem( faces, i );
            pt1.x = r->x*scale;
            pt2.x = (r->x+r->width)*scale;
            pt1.y = r->y*scale;
            pt2.y = (r->y+r->height)*scale;
            cvRectangle( img, pt1, pt2, CV_RGB(0,255,0), 3, 8, 0 );

        /*    IplImage * faceSave = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
            IplImage * faceToSave = 0;
            if( !faceToSave )
                faceToSave = cvCreateImage( cvGetSize(pImg), 8, 3 );
            cvCopy(pImg, faceToSave, 0);
            faceToSave->origin = pImg->origin;
            int pointX = 0;
            int pointY = 0;
            int lebar = 0;
            if (r->width > r->height)
            {
                lebar = r->width;
                pointX = r->x - ((r->width - r->height)/2);
                pointY = r->y - ((r->width - r->height)/3);
            } else if (r->width < r->height)
            {
                lebar = r->height;
                pointX = r->x - ((r->height - r->width)/2);
                pointY = r->y - ((r->height - r->width)/3);
            }
            cvSetImageROI(img, cvRect(pointX,pointY,lebar,lebar));
          
            faceSave = img;
            cvNamedWindow("Result", 1 );
            cvShowImage("Result", img);
            cvResetImageROI(img);*/

        }
    }

    cvShowImage( "Face Detection", img );
    cvReleaseImage( &temp );
}

#ifdef _EiC
main(1,"facedetect.c");
#endif


 

 Gambar wajah hasil deteksi


Sumber  :  http://bajay-x.blogspot.co.id/2010/04/pengenalan-wajah.html




Selasa, 10 November 2015

Middleware

Middleware merupakan software yang menghubungkan bagian-bagian berbeda pada sebuah aplikasi atau rangkaian aplikasi. Middleware dapat diumpamakan menjadi beberapa bentuk, pertama middleware sebagai semacam lem yang menyatukan sebuah jaringan dan komputer-komputer yang terhubung di dalamnya. Middleware dapat berupa sebuah aplikasi tunggal, atau dapat berupa keseluruhan server.  Kedua middleware sebagai sebuah perangkat adapter (adapter device) yang dapat dijalankan dari sebuah printer baru ke sebuah komputer lama alias jadul. Adapter, atau middleware, menghubungkan dua perangkat, memungkinkan komunikasi di antaranya dan juga fungsionalitasnya.

Jadi bisa disimpulkan Middleware adalah sebuah aplikasi yang secara logic berada diantara lapisan aplikasi (application layer) dan lapisan data dari sebuah arsitektur layer-layer TCP/IP [1]. 

Middleware bisa juga disebut protokol. Protokol komunikasi middleware mendukung layanan komunikasi aras tinggi. Biasanya program middleware menyediakan layanan pesan (messaging services ) sehingga aplikasi-aplikasi yang berbeda-beda itu dapat berkomunikasi. Sistem middleware mengikat aplikasi-aplikasi yang terpisah.  Beberapa paket middleware diantaranya adalah DCE (Distributed Computing Environment) dan CORBA (Common Object Request Broker Architecture).

1. CORBA

COBRA merupakan sebuah spesifikasi middleware yang ideal untuk mendukung dan mengaplikasikan sistem komputer terdistribusi. Arsitektur CORBA berbasis pada model objek. Model ini berasal dari abstraksi inti model objek yang didefinisikan oleh OMG dalam sebuah petunjuk OMA (Object Management Architecture). CORBA bersifat open, maksudnya bahwa CORBA bisa dipakai oleh setiap orang yang ingin menggunakan standarisasi CORBA ini. Sehingga akan muncul perbedaan-perbedaan dalam menggunakannya, seperti perbedaan platform ataupun bahasa pemrograman. Tetapi hal ini justru menjadi kelebihan CORBA bahwa CORBA mampu mengkomunikasikan sistem yang memiliki perbedaan-perbedaan tersebut.

2.DCOM

Distributed Component Object Model adalah protokol yang berfungsi untuk mengaktifkan komponen pada perangkat lunak (software) agar dapat berkomunikasi langsung dengan jaringan. (Spangler, 2004). Tujuan DCOM adalah agar komponen yang telah dibuat dapat diregister di suatu komputer dan di akses oleh banyak komputer lain.

DCOM sendiri bukan merupakan teknologi beru karena teknologi ini banyak dipakai dalam sistem distribusi pada sistem jaringan TCP/IP. Protokol yang digunakan oleh DCOM dapat meliputi:

*Protokol TCP/IP
*Protokol UDP/IP
*Protokol HTTP
*Protokol RPC

Secara umum DCOM menerapkan sistem Klien-Server sehingga terdapat istilah DCOM klien dan DCOM server. Cara kerja DCOM yang menggunakan Remote Procedure Call dimana Object diletakkan di dalam Back-End (Server) dalam bentuk file Dll (Dynamic Linking Library) dan klien akan mengakses objek tersebut melalaui media jaringan yang ada.

DCOM merupakan ektensi dari Component Object Model (COM). Pada COM kita melihat bagaimana suatu komponen client saling berinteraksi. Interaksi ini dapat didefinisikan sebagai hubungan secara langsung antara komponen (COM Server) dan COM Client. Aplikasi client memanggil method yang ada di komponen COM tanpa perantara apapun dan terjadi dalam suatu proses baik pada aplikasi client maupun komponen itu sendiri.

Sedangkan pada sistem operasi yang baru proses akan dilindungi dari gangguan proses yang lain sehingga aplikasi client tidak akan langsung mamanggil komponen tetapi melalui interproses yang disediakan oleh sistem operasi. Ketika client dan server pada tempat yang berbeda, DCOM akan menggantikan lokal interproses yang berkomunikasi dengan sebuah jaringan protokol. Melalui protokol DCOM ini, aplikasi client dapat mengakses DCOM server.

DCOM juga menyembunyikan lokasi suatu komponen sehingga aplikasi tinggal langsung memanggil method yang ada di komponen DCOM. Lokasi DCOM yang independen inilah yang membuat penyederhanaan pada penerapan sistem distribusi suatu komponen dan juga meningkatkan performance. Bayangkan kita mempunyai komponen yang banyak dan kemudian dilakukan distribusi ke jaringan LAN, maka hal ini akan meningkatkan laju trafik jaringan sehingga komunikasi data pada jaringan LAN ini akan jauh lebih lambat.

3.RIM

Remote Method Invocation (RMI)
adalah sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman berorientasi obyek (Object Oriented Programming). RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada jaringan.


Aplikasi RMI sering kali terdiri dari dua program terpisah yaitu server dan client. Aplikasi server semacam ini biasanya membuat beberapa objek remote, menyediakan referensi terhadap objek-objek tersebut sehingga dapat diakses, serta menunggu client menginvoke/memanggil method dari objek-objek remote tersebut. Aplikasi client mendapatkan referensi remote ke satu atau lebih objek remote di server dan menjalankan method dari objek tersebut.

RMI menyediakan mekanisme dimana server dan client berkomunikasi danmemberikan informasi secara timbal balik. Aplikasi semacam ini seringkali disebut aplikasi objek terdistribusi.

Aplikasi objek terdistribusi seringkali melakukan hal berikut:


• Melokasikan objek remote
Aplikasi dapat menggunakan satu dari dua mekanisme untuk mendapatkan referensi ke objek remote. Aplikasi dapat mendaftarkan objek remote dengan fasilitas penamaan RMI (naming facility)yaitu rmiregistry atau aplikasi dapat mem-pass dan mengembalikan referensi objek remote sebagai bagian dari operasi normal.


• Berkomunikasi dengan objek remote
Detail dari komunikasi antara objek remote ditangani oleh RMI, bagi programmer komunikasi remote tampak seperti invokasi method Java standar.


• Memanggil (load) bytecode untuk objek yang di-pass
Karena RMI mengizinkan pemanggil (caller) untuk mem-pass objek ke objek remote, RMI menyediakan mekanisme yang diperlukan objek me-load kode objek, sebagaimana juga mentransmisikan datanya.


4.PERAN MIDDLEWARE TERHADAP SISTER :Middleware adalah software yang di rancang untuk mendukung pengembangan sistem tersebar dengan memungkinkan aplik asi yang sebelumnya terisolasi untuk saling berhubungan. Dengan bantuan middleware, data yang sama dapat digunakan oleh customer service, akuntansi, pengembangan, dan manajemen sesuai kebutuhan. Di sini middleware dapat berfungsi sebagai penerjemah informasi sehingga setiap aplikasi mendapatkan format data yang dapat mereka proses.


Pengertian Middleware adalah sebuah aplikasi yang secara logic berada diantara lapisan aplikasi (application layer) dan lapisan data dari sebuah arsitektur layer-layer TCP/IP [1]. Middleware bisa juga disebut protokol. Protokol komunikasi middleware mendukung layanan komunikasi aras tinggi. 

Software yang berfungsi sebagai lapisan konversi atau penerjemah yaitu :

1. Software penghubung yang berisi sekumpulan layanan yang memungkinkan beberapa proses dapat berjalan pada satu atau lebih mesin untuk saling berinteraksi pada suatu jaringan juga sebagai integrator.


2. Middleware saat ini dikembangkan untuk memungkinkan satu aplikasi berkomunikasi dengan lainnya walaupun berjalan pada platform yang berbeda.

sumber :

https://heruprasetiyo93.wordpress.com


LINGKUNGAN KOMPUTASI

LINGKUNGAN KOMPUTASI

Lingkungan komputasi adalah suatu lingkungan di mana sistem komputer digunakan. Lingkungan komputasi dapat dikelompokkan menjadi empat jenis : komputasi tradisional, komputasi berbasis jaringan, dan komputasi embedded, serta komputasi gri.

Pada awalnya komputasi tradisional hanya meliputi penggunaan komputer meja (desktop) untuk pemakaian pribadi di kantor atau di rumah. Namun, seiring dengan perkembangan teknologi maka komputasi tradisional sekarang sudah meliputi penggunaan teknologi jaringan yang diterapkan mulai dari desktop hingga sistem genggam. Perubahan yang begitu drastis ini membuat batas antara komputasi tradisional dan komputasi berbasis jaringan sudah tidak jelas lagi.

Komputasi berbasis jaringan menyediakan fasilitas pengaksesan data yang luas oleh berbagai perangkat elektronik. Akses tersedia asalkan perangkat elektronik itu terhubung dalam jaringan, baik dengan kabel maupun nirkabel.

Komputasi model terbaru ini juga berbasis jaringan denganclustered system . Digunakan super computer untuk melakukan komputasinya. Pada model ini komputasi dikembangkan melalui pc-farm . Perbedaan yang nyata dengan komputasi berbasis jaringan adalah bahwa komputasi berbasis grid dilakukan bersama-sama seperti sebuah multiprocessor dan tidak hanya melakukan pertukaran data seperti pada komputasi berbasis jaringan.

lingkungan komputasi itu sendiri bisa diklasifikasikan berdasarkan cara data dan instruksi programnya dihubungkan yang terdiri atas empat kategori berikut ini:

1.Single instruction stream-single data stream (SISD), terdapat satu prosesor dan biasa juga disebut komputer sekuensial, contohnya komputer model van Neumann.

2.Single instruction stream-multiple data stream (SIMD), terdapat sejumlah prosesor dan aliran data, tetapi hanya memiliki satu instruksi/program. Setiap prosesor memiliki memori lokal dan duplikasi program yang sama sehingga masing-masing prosesor akan mengeksekusi instruksi/program yang sama, tetapi pada data yang berbeda dan prosesor bekerja secara sinkron sehingga mendukung paralelisasi pada proses komputasi data.

3.Multiple instruction stream-single data stream (MISD), terdapat sejumlah prosesor, kontrol unit dan aliran instruksi tetapi hanya memiliki satu aliran data. Data yang ada di common memoryakan dimanipulasi secara bersamaan oleh semua prosesor, akibatnya akan terjadi kendala jika sejumlah prosesor melakukanupdate data sedangkan data yang lama masih dibutuhkan oleh sejumlah prosesor lainnya. Sampai saat ini belum ada implementasi mesin komputer yang memenuhi kategori ini.

4.Multiple instruction stream-multiple data stream (MIMD), terdapat sejumlah prosesor, aliran instruksi dan aliran data. Setiap prosesor memiliki kontrol unit, memori lokal serta memori bersama (shared memory) yang mendukung proses paralelisasi dari sisi data dan instruksi. Prosesor dapat bekerja sesuai dengan instruksi program yang berbeda dan pada data yang berbeda. Prosesor juga dapat bekerja secara asinkron.


sumber : 

http://dinasweblog.blogspot.co.id/2010/11/lingkungan-komputasi.html

Speech Synthesis

Pengertian Speech Synthesis

Speech synthesis adalah transformasi dari teks ke arah suara (speech). Transformasi ini mengkonversi teks ke pemadu suara (speech synthesis) yang sebisa mungkin dibuat menyerupai suara nyata, disesuaikan dengan aturan – aturan pengucapan bahasa.TTS (text to speech) dimaksudkan untuk membaca teks elektronik dalam bentuk buku, dan juga untuk menyuarakan teks dengan menggunakan pemaduan suara. Sistem ini dapat digunakan sebagai sistem komunikasi, pada sistem informasi referral, dapat diterapkan untuk membantu orang-orang yang kehilangan kemampuan melihat dan membaca.

Ada beberapa masalah yang terdapat pada pemaduan suara, yaitu:

· User sangat sensitif terhadap variasi dan informasi suara. Oleh sebab itu, mereka tidak dapat memberikan toleransi atas ketidaksempurnaan pemadu suara.

· Output dalam bentuk suara tidak dapat diulang atau dicari dengan mudah.

·  Meningkatkan keberisikan pada lingkungan kantor atau jika menggunakan handphone, maka akan meningkatkan biaya pengeluaran.

Lingkungan dari aplikasi pemadu suara adalah:

Bagi tunanetra, pemadu suara menawarkan media komunkasi dimana mereka dapat memiliki akses yang tidak terbatas. Lingkungan dimana visual dan haptic skill user berfokus pada hal lain. 
Contohnya: sinyal bahaya pada kokpit pesawat udara.

Sejarah Speech Synthesis

Upaya yang paling awal untuk menghasilkan lahirnya pemandu suara, pada abad XVIII. Terlepas dari kenyataan bahwa upaya pertama  adalah bentuk mesin mekanis, kita dapat mengatakan hari ini  bahwa synthesizer sudah berkualitas tinggi. Pada tahun 1779 di St Petersburg, Rusia Profesor Kratzenshtein Kristen  fisiologis menjelaskan perbedaan antara lima vokal panjang  (/ A /, / e /, / i /, / o /, dan / u /) dan membuat alat untuk menghasilkan  mereka artifisial. Tahun 1791 di Wina, Wolfgang von Kempelen memperkenalkan nya “Akustik-Mekanik Mesin Speech”. Dalam  sekitar pertengahan 1800-an Charles Wheatstone dibangun terkenal  versi mesin berbicara von Kempelen’s.

Generasi dari sistem pemaduan suara ini dapat dibagi ke dalam 3 masa, yaitu:

· Generasi pertama (1962-1977). Format sintesis dari fonem adalah teknologi dominan. Teknologi ini memanfaatkan aturan berdasarkan penguraian fonetik pada kalimat untuk kontur frekuensi forman. Beberapa sintesis masih miskin atau kurang  dalam kejelasan dan kealamiannya.

· Generasi kedua (1977-1992). Metode pemadu suara adalah diphone diwakilkan  dengan parameter LPC. Hal tersebut menunujukkan bahwa kejelasan yang baik pada pemadu suara dapat diperoleh dengan andal dari input teks dengan menggabungkan diphone yang sesuai dengan unit. Kejelasan meningkat selama sintesis forman, tetapi kealamian dari pemadu suara masih tetap rendah.

· Generasi ketiga (1992-sekarang). Generasi ini ditandai dengan metode ‘ sintesis pemilihan unit’ yang diperkenalkan dan disempurnakan oelh Sagisaka di Labs ATR Kyoto. Hasil dari pemandu suara pada periode ini sangat mendekati  human-generated speech pada bagian kejelasan dan kealamian,

Teknologi pemadu suara modern melibatkan metode dan algoritma yang canggih dan rumit. alat pemadu suara  dari keluarga “Infovox” mungkin mejadi salah satu multi bahasa TTS yang paling dikenal saat ini. Versi komersial pertamanya, Infovox-SA 101, dikembangkan pada tahun 1982 di Institute Teknologi Royal, Swedia dan didasarkan pada sintesis forman. AT & T Bell Laboratories (Lucent Technologies) juga memiliki tradisi yang sangat panjang tentang pemandu suara (speech synthesis). TTS lengkap yang pertama didemostrasikan di Boston pada tahun 1972 dan diliris pada tahun 1973. Hal ini didasarkan pada model artikulatoris yang sikembangkan oleh Ceceil Coker (Klatt 1987). Pengembangan proses dari sistem penggabungan sintesis ini dimulai oleh Joseph Olive pada pertengahan tahun 1970-an (Bell Labs 1997). Sistem ini sekarang sudah tersedia untuk bahasa Inggris, Perancis, Spanyol, Italia, Jerman, Rusia, Rumania, Cina, dan Jepang (Mcbius et al 1996).

Speech synthesis atau pidato sintesis adalah produksi buatan manusia pidato. Sebuah sistem komputer yang digunakan untuk tujuan ini disebut speech synthesizer, dan dapat diimplementasikan dalam perangkat lunak atau perangkat keras. text-to-speech (TTS) sistem bahasa normal mengkonversi teks ke dalam pidato. sistem lain membuat representasi linguistik simbolis seperti transkripsi fonetik bicara.

Pidato buatan dapat dibuat dengan potongan-potongan concatenating pidato yang direkam disimpan dalam database. Sistem berbeda dalam ukuran pidato yang disimpan unit; sebuah sistem yang menyimpan telepon memberikan rentang output terbesar, tapi mungkin kurang jelas. Untuk keperluan khusus domain, yang menyimpan seluruh kata-kata atau kalimat memungkinkan output yang berkualitas tinggi. Atau, synthesizer dapat menggabungkan sebuah model dari sistem vokal dan karakteristik suara manusia lain untuk membuat yang benar-benar “sintetik” output suara. Kualitas synthesizer pidato dinilai oleh kesamaan dengan suara manusia dan kemampuannya untuk dipahami. semua dimengerti text-to-speech program yang memungkinkan orang-orang dengan gangguan visual atau membaca untuk mendengarkan karya-karya tulis di komputer rumah. Banyak sistem operasi komputer termasuk alat bicara sejak awal 1980-an.

A text-to-speech system (atau “mesin”) adalah terdiri dari dua bagian: front-end dan back-end. Front-end memiliki dua tugas utama. Pertama, mengubah teks mentah berisi simbol seperti angka dan singkatan menjadi setara dengan tertulis-kata-kata. Proses ini sering disebut normalisasi teks, pra-pengolahan, atau tokenization. Front-end kemudian menetapkan transkripsi fonetik untuk setiap kata, dan membagi dan menandai teks ke prosodic unit seperti frase dan kalimat. Proses transkripsi fonetik untuk menetapkan kata-kata ini disebut teks-ke-fonem atau grafem-ke-fonem konversi. Fonetis transkripsi dan informasi ilmu persajakan bersama-sama membentuk representasi simbolik yang linguistik output dengan front-end. Back-end-sering disebut sebagai synthesizer-maka mengubah representasi linguistik simbolik menjadi suara.

Suara teks-to-speech engine di Vista adalah Microsoft Anna, dan Microsoft Sam pada Windows XP. Vista pengguna dapat mendengar suara sangat jelas dari Anna, dan kualitas suara Anna Microsoft jauh lebih baik daripada Microsoft Sam. Sintesis pidato Windows program yang disebut narator telah dikirimkan dengan Windows2000, Windows XP dan Vista. Bila pengguna Windows ingin mendapatkan suara tidak hanya membaca tetapi juga file audio seperti gelombang dan file mp3 pidato, mereka dapat menginstal bebas teks-to-speech dan panopreter text-to-mp3 aplikasi yang ditawarkan oleh panopreter.com. Hal membaca file teks dan mengkonversi pidato menjadi gelombang dan mp3 file, pengguna dapat mengimpor file audio yang dihasilkan ke perangkat portabel, dan mendengarkan mereka sambil berjalan, jogging atau Komuter untuk bekerja.

Speech sintesis menjadi alat bantu teknologi vital dan penerapannya di daerah ini sangat signifikan dan luas, sekarang umum digunakan oleh orang-orang dengan disleksia dan kesulitan membaca lainnya maupun oleh anak-anak pra-melek. Sementara itu, aplikasi sintesis pidato dan gadget pada bahasa alat belajar. Teknik sintesis Pidato sekarang juga digunakan dalam produksi hiburan seperti game, anime dan yang sejenis, dan banyak digunakan dalam produk telekomunikasi juga.

http://rizafahri.blogspot.com/2010/11/speech-synthesis.html
http://freezcha.wordpress.com/2010/11/16/speech-synthesis/
http://bintangprasetyo.blogspot.co.id/2014/11/pengertian-speech-synthesis.html


SPEECH RECOGNITION


1. PENGERTIAN SPEECH RECOGNITION


Speech Recognition adalah proses identifikasi suara berdasarkan kata yang diucapkan dengan melakukan konversi sebuah sinyal akustik, yang ditangkap oleh audio device (perangkat input suara).

Keuntungan dari sistem ini adalah pada kecepatan dan kemudahan dalam penggunaannya. Kata – kata yang ditangkap dan dikenali bisa jadi sebagai hasil akhir, untuk sebuah aplikasi seperti command & control, penginputan data, dan persiapan dokumen. Parameter yang dibandingkan ialah tingkat penekanan suara yang kemudian akan dicocokkan dengan template database yang tersedia. 
Sedangkan sistem pengenalan suara berdasarkan orang yang berbicara dinamakan speaker recognition. Pada makalah ini hanya akan dibahas mengenai speech recognition karena kompleksitas algoritma yang diimplementasikan lebih sederhana daripada speaker recognition. Algoritma yang akan diimplementasikan pada bahasan mengenai proses speech recognition ini adalah algoritma FFT (Fast Fourier Transform), yaitu algoritma yang cukup efisien dalam pemrosesan sinyal digital (dalam hal ini suara) dalam bentuk diskrit. Algoritma ini mengimplementasikan algoritma Divide and Conquer untuk pemrosesannya. Konsep utama algoritma ini adalah mengubah sinyal suara yang berbasis waktu menjadi berbasis frekuensi dengan membagi masalah menjadi beberapa upa masalah yang lebih kecil. Kemudian, setiap upa masalah diselesaikan dengan cara melakukan pencocokan pola digital suara.

2. SEJARAH SPEECH RECOGNITION

Biometrik, termasuk di dalamnya speech recognition, secara umum digunakan untuk identifikasi dan verifikasi. Identifikasi ialah mengenali identitas subyek, dilakukan perbandingan kecocokan antara data biometric subyek dalam database berisi record karakter subyek. Sedangkan verifikasi adalah menentukan apakah subyek sesuai dengan apa yang dikatakan terhadap dirinya.

Biometrik merupakan suatu metoda untuk mengenali manusia berdasarkan pada satu atau lebih ciri-ciri fisik atau tingkah laku yang unik. Biometric Recognition atau biasa disebut dengan Sistem pengenalan biometric mengacu pada identifikasi secara otomatis terhadap manusia berdasarkan psikological atau karakteristik tingkah laku manusia. Ada beberapa jenis teknologi biometric antara lain suara (speech recognition).

Metode Hidden Markov Model mulai diperkenalkan dan dipelajari pada akhir tahun 1960, metode yang berupa model statistik dari rantai Markov ini semakin banyak dipakai pada tahun-tahun terakhir terutama dalam bidang speech recognition, seperti dijelaskan oleh Lawrence R. Rabiner dalam laporannya yang berjudul “A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition”

Proses dalam dunia nyata secara umum menghasilkan observable output yang dapat dikarakterisasikan sebagai signal. Signal bisa bersifat diskrit (karakter dalam alfabet) maupun kontinu (pengukuran temperatur, alunan musik). Signal bisa bersifat stabil (nilai statistiknya tidak berubah terhadap waktu) maupun nonstabil (nilai signal berubah-ubah terhadap waktu). Dengan melakukan pemodelan terhadap signal secara benar, dapat dilakukan simulasi terhadap sumber dan pelatihan sebanyak mungkin melalui proses simulasi tersebut. Sehingga model dapat diterapkan dalam sistem prediksi, sistem pengenalan, maupun sistem identifikasi. Secara garis besar model signal dapat dikategorikan menjadi 2 golongan yaitu : model deterministik dan model statistikal. Model deterministik menggunakan nilai-nilai properti dari sebuah signal seperti :amplitudo, frekuensi, fase dari gelombang sinus. Sedangkan model statistikal menggunakan nilai-nilai statistik dari sebuah signal seperti: proses Gaussian, proses Poisson, proses Markov, dan proses Hidden Markov.

Suatu model HMM secara umum memiliki unsur-unsur sebagai berikut:
· N, yaitu jumlah state dalam model. Secara umum state saling terhubung satu dengan yang lain, dan suatu state bisa mencapai semua state yang lain dan sebaliknya (disebut model ergodic). Namun hal tersebut tidak mutlak, terdapat kondisi lain dimana suatu state hanya bisa berputar ke diri sendiri dan berpindah ke satu state berikutnya, hal ini bergantung pada implementasi dari model.

· M, yaitu jumlah observation symbol secara unik pada tiap statenya, misalnya: karakter dalam alfabet, dimana state adalah huruf dalam kata.

· State Transition Probability { } -> ij A a

· Observation Symbol Probability pada state j, { } () -> j Bb k

· Initial State Distribution -> i p p

Dengan memberikan nilai pada N, M, A, B, dan p , HMM dapat digunakan sebagai generator untuk menghasilkan urutan observasi. dimana tiap observasi t o adalah salah satu simbol dari V, dan T adalah jumlah observasi dalam suatu sequence.

3. SKEMA UTAMA DAN ALGORITMA SPEECH RECOGNITION

Terdapat 4 langkah utama dalam sistem pengenalan suara:

· Penerimaan data input
· Ekstraksi, yaitu penyimpanan data masukan sekaligus pembuatan database untuk template.
· Pembandingan / pencocokan, yaitu tahap pencocokan data baru dengan data suara (pencocokan tata bahasa) pada template.
· Validasi identitas pengguna.

Secara umum, speech recognizer memproses sinyal suara yang masuk dan menyimpannya dalam bentuk digital. Hasit proses digitalisasi tersebut kemudian dikonversi dalam bentuk spektrum suara yang akan dianalisa dengan membandingkannya dengan template suara pada database sistem.

Sebelumnya, data suara masukan dipilah-pilah dan diproses satu per satu berdasarkan urutannya. Pemilahan ini dilakukan agar proses analisis dapat dilakukan secara paralel. Proses yang pertama kali dilakukan ialah memproses gelombang kontinu spektrum suara ke dalam bentuk diskrit. Langkah berikutnya ialah proses kalkulasi yang dibagi menjadi dua bagian :

· Transformasi gelombang diskrit menjadi array data.

· Untuk masing-masing elemen pada aiTay data, hitung "ketinggian" gelombang (frekuensi).
Objek permasaiahan yang akan dibagi adalah masukan berukuran n, berupa data diskrit gelombang suara.

Ketika mengkonversi gelombang suara ke dalam bentuk diskrit, gelombang diperlebar dengan cara memperinci berdasarkan waktu. Hal ini dilakukan agar proses algontma seianjutnya (pencocokan) lebih mudah diiakukan. Namun, efek buruknya ialah array of array data yang terbentuk akan lebih banyak.

Dari tiap elemen array data tersebut, dikonversi ke dalam bentuk bilangan biner. Data biner tersebut yang nantinya akan dibandingkan dengan template data suara.

Proses divide and conquer:


· Pilih sebuah angkaN, dimana N merupakan bilangan bulat kelipatan 2.Bilangan ini berfungsi untuk menghitung jumlah elemen transformasi FFT.

· Bagi dua data diskrit secara (dengan menerapkan algoritma divide and conquer) menjadi data diskrit yang lebih kecii berukuran N = N,.N2.

· Objek data dimasukkan ke dalam table (sebagai elemen tabel).

· Untuk setiap eiemen data, dicocokkan dengan data pada template (pada data template juga dilakukan pemrosesan digitaiisasi menjadi data diskrit, dengan cara yang sama dengan proses digitaiisasi data masukan bam yang ingin dicocokkan).

· Setiap upa masalah disatukan kembali dan dianalisis secara keseluruhan, kecocokan dari segi tata bahasa dan apakah data yang diucapkan sesuai dengan kata yang tersedia pada template data.

· Verifikasi data. Jika sesuai, proses iebih lanjut, sesuai dengan aplikasi yang mengimplementasikan algoritma ini.

4. IMPLEMENTASI SPEECH RECOGNITION 

Hardware yang dibutuhkan dalam implementasi Speech Recognition :

· Sound card : Merupakan perangkat yang ditambahkan dalam suatu Komputer yang fungsinya sebagai perangkat input dan output suara untuk mengubah sinyal elektrik, menjadi analog maupun menjadi digital.

· Microphone : Perangkat input suara yang berfungsi untuk mengubah suara yang melewati udara, air dari benda orang menjadi sinyal elektrik.

· Komputer atau Komputer Server : Dalam proses suara digital menterjemahkan gelombang suara menjadi suatu simbol biasanya menjadi suatu nomor biner yang dapat diproses lagi kemudian diidentifikasikan dan dicocokan dengan database yang berisi berkas suara agar dapat dikenali.

Contoh Implementasi teknologi Speech Recognition :

Saat ini pada tahun 2010 Microsoft windows vista dan windows 7 , speech recognition telah disertakan dalam system operasinya . sebagaimana fungsi dari speech recognition menterjemahkan pengucapan kata – kata kedalam bentuk teks digital. Salah satu implementasi speech recognition adalah pada konfrensi PBB dimana seluruh Negara tergabung dalam keanggotaan nya , fungsi speech recognition dalam hal ini menterjemahkan bahasa pembicara dari suatu Negara kedalam bahasa yang dipahami pendengar . Contoh penggunaan lain speech recognition adalah Perawatan kesehatan.

Dalam perawatan kesehatan domain, bahkan di bangun meningkatkan teknologi pengenalan suara, transcriptionists medis (MTs) belum menjadi usang. Layanan yang diberikan dapat didistribusikan daripada diganti. Pengenalan pembicaraan dapat diimplementasikan di front-end atau back-end dari proses dokumentasi medis. Front-End SR adalah salah satu alat untuk mengidentifikasi kata-kata yang ucapkan dan ditampilkan tepat setelah mereka berbicara Back-End SR atau SR tangguhan adalah di mana penyedia menentukan menjadi sebuah sistem dikte digital, dan suara yang diarahkan melalui pidato-mesin pengakuan dan draft dokumen diakui dirutekan bersama dengan file suara yang asli ke MT / editor, yang mengedit draft dan memfinalisasi laporan. Ditangguhkan SR sedang banyak digunakan dalam industri saat ini.

Banyak aplikasi Electronic Medical Records (EMR) dapat menjadi lebih efektif dan dapat dilakukan lebih mudah bila digunakan dalam hubungannya dengan pengenalan-mesin bicara. Pencarian, query, dan pengisian formulir semua bisa lebih cepat untuk melakukan dengan suara dibandingkan dengan menggunakan keyboard.

SUMBER :

http://kuliah319.blogspot.com/2011/02/speech-recognition-dengan-algoritma-fft.html
http://citraanindya.blog.upi.edu/2009/06/25/tugas-artikel-300-kata/
http://kuliah319.blogspot.com/2011/02/speech-recognition-dengan-algoritma-fft.html
http://kaichitaro.blogspot.com/2010/11/speech-recognition.html
http://nda-kamal.blogspot.co.id/2011/11/speech-recognition.html