IMPLEMENTASI SISTEM PENGENALAN SUARA DENGAN SAPI & DELPHI
Ditulis oleh anggarizkiekayana di/pada Desember 7, 2008
Pada pengenalan pembicaraan terdapat bagian proses yang menentukan jenis kata yang diucapkan. Proses ini menggunakan grammar untuk menentukan kata tersebut jika grammar tersedia. SAPI 5.1 mendefinisikan format untuk grammar dalam bentuk XML. Pada diktasi, grammar digunakan untuk mengidentifikasi beberapa kata khusus yang sering digunakan. Grammar tidak dapat digunakan untuk menganalisa keseluruhan kata pada diktasi karena tidak mungkin untuk mendaftar seluruh kata yang dipergunakan dalam percakapan ke dalam grammar. Biasanya sistem akan menggunakan metode tertentu serta context analysis untuk melakukan pengenalan kata pada diktasi. Dan hasil proses ini akan lebih akurat dengan menggunakan tambahan grammar yang telah didefinisikan.
Untuk memulai pembuatan aplikasi, maka digunakan komponen TspSharedReco Context. Sedangkan TspSharedRecognizer akan dibuat secara otomatis oleh recognizer, sehingga komponen tersebut tidak perlu digunakan secara eksplisit, kecuali jika hendak menggunakan metode yang terdapat pada komponen tersebut secara langsung. Langkah berikutnya adalah mendefinisikan grammar yang akan digunakan pada aplikasi dengan menuliskan kode berikut pada saat aplikasi pertama kali dijalankan :
SpSharedRecoContext1.EventInterests := SREAllEvents;
MyGrammar := SpSharedRecoContext1.CreateGrammar(0);
MyGrammar.DictationSetState(SGDSActive);
Pada saat terjadi notifikasi pada aplikasi seperti permulaan suara, akhir suara, permulaan frasa, akhir frasa dan lain-lain, maka akan terjadi pemanggilan pada standard even Delphi, dimana pada even tersebut bisa ditambahkan kode yang diperlukan seperti penampilan status. Even yang paling penting adalah OnRecognition, dimana even ini terjadi setelah sistem selesai melakukan pengenalan pada sebuah kata. Hasil dari OnRecognition ini akan dikirimkan melalui sebuah parameter yang berupa obyek ISpeechRecoResult. Untuk mengambil hasil dari pengenalan dapat dilihat pada kode berikut :
procedure
TMainForm.SpSharedRecoContext1Recogn
ition(Sender: TObject;
StreamNumber: Integer; StreamPosition:
OleVariant;
RecognitionType: TOleEnum; var Result:
OleVariant);
var
RecogText: ISpeechRecoResult;
FMDIChild: TMDIChild;
begin
RecogText := IDispatch(Result) as
ISpeechRecoResult;
FMDIChild := MainForm.ActiveMDIChild as
TMDIChild;
if FMDIChild <> nil then
FMDIChild.Memo1.SelText :=
RecogText.PhraseInfo.GetText(0, -1, True)
+ ‘ ‘;
end;
Hasil dari pengenalan pembicaraan ini diimplementasikan untuk menambahkan kata pada TMemo, dimana TMemo tersebut lebih lanjut dapat disimpan sebagai file teks.