Saya telah mengembangkan sistem bukti konsep untuk pengenalan suara menggunakan model mfcc dan markov tersembunyi. Ini memberikan hasil yang menjanjikan ketika saya menguji sistem pada suara yang dikenal. Meskipun sistem, ketika suara yang tidak dikenal dimasukkan mengembalikan hasil dengan kecocokan terdekat dan skor tidak berbeda untuk merancang itu adalah suara yang tidak diketahui misalnya::
Saya telah melatih 3 model markov tersembunyi satu untuk berbicara, satu untuk air keluar dari keran air dan satu untuk mengetuk meja. Lalu saya mengujinya pada data yang tidak terlihat dan mendapatkan hasil berikut:
input: speech
HMM\knocking: -1213.8911146444477
HMM\speech: -617.8735676792728
HMM\watertap: -1504.4735097322673
So highest score speech which is correct
input: watertap
HMM\knocking: -3715.7246152783955
HMM\speech: -4302.67960438553
HMM\watertap: -1965.6149147201534
So highest score watertap which is correct
input: knocking
HMM\filler -806.7248912250212
HMM\knocking: -756.4428782636676
HMM\speech: -1201.686687761133
HMM\watertap: -3025.181144273698
So highest score knocking which is correct
input: unknown
HMM\knocking: -4369.1702184688975
HMM\speech: -5090.37122832872
HMM\watertap: -7717.501505674925
Here the input is an unknown sound but it still returns the closest match as there is no system for thresholding/garbage filtering.
Saya tahu bahwa dalam kata kunci, mencari suara OOV (out of vocabulary) dapat disaring menggunakan model sampah atau pengisi tetapi dikatakan dilatih menggunakan seperangkat kata yang tidak diketahui di mana ini tidak dapat diterapkan ke sistem saya karena saya tidak tahu semua suara yang dapat direkam oleh sistem.
Bagaimana masalah serupa diselesaikan dalam sistem pengenalan ucapan? Dan bagaimana saya bisa menyelesaikan masalah saya untuk menghindari kesalahan positif?
Ini agak umum di bidang pengenalan gerakan. Jawabannya adalah untuk membuat model ambang seperti yang dijelaskan dalam makalah oleh Lee dan Kim (1999)
Ini memainkan peran yang sama dengan model pengisi atau sampah, tetapi tidak perlu dilatih secara terpisah seperti yang Anda katakan. Anda dapat membuat model ambang dengan menghubungkan semua status transisi-diri dari model Anda yang lain dan menginisialisasi transisi dengan probabilitas yang seragam, yang sepenuhnya menghubungkan kondisi tersebut. Silakan lihat di atas kertas untuk melihat bagaimana itu sebenarnya dapat dilakukan.
Bahkan jika perpustakaan Anda tidak mendukung model ergodik, perpustakaan Anda seharusnya tidak mencegah Anda secara manual membuat model ukuran yang diperlukan dan mengatur negara sesuai. Jika Anda benar-benar ingin perpustakaan untuk itu, maka implementasi untuk pengklasifikasi model Markov tersembunyi termasuk dukungan untuk model ambang tersedia di Kerangka Kerja Accord.NET , misalnya.
Penafian: Saya penulis perpustakaan ini.
sumber
Jadi yang saya lakukan adalah: Saya membuat versi model pengisi yang disederhanakan. Setiap hmm mewakili bunyi watertap, bunyi ketukan dan bunyi wicara adalah 6 hmm keadaan terpisah yang dilatih oleh bunyi dari perangkat pelatihan yang terdiri dari 30, 50, 90 bunyi masing-masing dengan berbagai panjang 0,3 detik hingga 10 detik. Kemudian saya membuat model pengisi yang merupakan 1 negara bagian hmm yang terdiri dari semua suara pelatihan set untuk mengetuk, air dan pidato. Jadi jika skor model hmm lebih besar untuk suara yang diberikan daripada skor pengisi - suara dikenali sebaliknya itu adalah suara yang tidak dikenal. Saya tidak benar-benar memiliki data besar tetapi saya telah melakukan tes berikut untuk penolakan positif palsu dan penolakan positif sebenarnya pada suara yang tidak terlihat.
Jadi dari tes cepat ini saya dapat menyimpulkan bahwa pendekatan ini memberikan hasil yang masuk akal walaupun saya memiliki perasaan aneh mungkin tidak cukup.
sumber