Ng 3.42 Danh sách các mi liê nh ca mô hình logic d l iu

Một phần của tài liệu Xây dựng hệ thống phần mềm điểm danh ứng dụng nhận diện giọng nói tiếng việt (Trang 52)

M C LC v 

Bng 3.42 Danh sách các mi liê nh ca mô hình logic d l iu

Tên Th c th 2 Th c th 1 Ph thu c B n s c a: th c th 1 -> Th c th 2 B n s a c a: th c th 2 > Th c th 1

Cua CUA HocKy TKB 1,1 1,n

DangKy DANGKY2 SinhVien DangKy DangKy 

SinhVien 1,1 1,n

DangKy DANGKY MonHoc DangKy DangKy 

MonHoc 1,1 1,n

Day DAY2 MonHoc Day Day 

MonHoc 1,1 1,n

Day DAY GiangVien Day Day 

GiangVien 1,1 1,n

DD_TKB DD_TKB TKB DiemDanhSV 1,1 1,n

DiemDanh DIEMDANH SinhVien DiemDanhSV 1,1 1,n

HK_NamHoc HK_NAMHO

C NamHoc HocKy 1,1 1,n

Hoc HOC PhongHoc TKB TKB 

PhongHoc 1,1 1,n

o O Khoa Lop 1,1 1,n

Thuoc THUOC Lop SinhVien 1,1 1,n

Trong TRONG CoSo PhongHoc 1,1 1,n

3.3 XÂY D NG MÔ HÌNH NH N DI N GI NG NÓI:

3.3.1 CÁC THÀNH PH N C B N C A NH N DI N GI NG NÓI:

Tr c tiên đ có th nh n di n đ c gi ng nói, chúng ta c n ph i có m t t đi n nh t đi n Anh Vi t, khi ta nh p ti ng Anh vào thì h th ng s tìm t ti ng Vi t t ng ng v i t ti ng Anh mà chúng ta v a nh p vào. đây t đi n là m t mô hình âm thanh t ng ng v i gi ng nói đã đ c ghi âm t tr c. Vi c hu n luy n t ng t nh vi c d y h c, chúng ta d y cho máy h c r ng gi ng nào s t ng ng v i t /s nào.

T d li u hu n luy n (ghi âm, t đi n, bài báo,..) chúng ta s hu n luy n đ c mô hình âm thanh, t đi n ng âm, mô hình ngôn ng s d ng trong h th ng nh n di n gi ng nói.

Hình 3.6 Các thành ph n c b n c a m t h th ng nh n di n gi ng nói

3.3.2 HU N LUY N MÔ HÌNH ÂM THANH

T o sao và khi nào thì chúng ta hu n luy n mô hình âm thanh:

Khi chúng ta mu n t o ra m t mô hình thanh cho ngôn ng m i c th đây là mô hình âm thanh cho các s t 0 đ n 9 trong Ti ng Vi t.

Ho c khi chúng ta c n mô hình âm thanh đ c tr ng cho m t ng d ng nào đó nh t

đi n và s t c n đ nh n di n là r t nh và không đáng k .

Khi chúng ta có r t nhi u d li u âm thanh đ c ghi t nhi u ngu n khác nhau:

M t gi ghi âm các l nh và các l nh đi u khi n cho m t ng i nói duy nh t. 5 gi ghi âm c a 200 ng i nói. 10 gi ghi âm nh n di n ch vi t c a m t ng i. 50 gi ghi âm 200 ng i nói cho vi c nh n di n ch vi t. B n c ng c n ph i có ki n th c v c u trúc âm

v c a ngôn ng và th i gian đ hu n luy n cho mô hình và t i u hóa toán t v âm thanh nh m giúp cho vi c nh n di n đ c chính xác h n.

Nh ng cách t t nh t đ có đ c m t c s d li u cho m t ngôn ng m i là ghi âm th công t ng đo n v i nh ng đo n v n có s n. Ghi âm gi ng c a b n, gia đình, đ ng nghi p.

đây chúng ta s s d ng m t m t b công c mã ngu n m có s n c a tr ng đ i h c Carnegie Mellon h tr t t trên môi tr ng Linux.

Chu n b môi tr ng và d li u ti n hành cho vi c xây d ng mô hình âm thanh. d dàng trong vi c hu n luy n, nhóm nghiên c u s d ng h đi u hành Ubuntu (Linux), t o m t th m c etc ch a các t p tin c n thi t cho vi c xây d ng mô hình, th m c wav ch a các t p tin t ghi âm b n thân, ng i thân, b n bè, đ ng nghi p, đây nhóm nghiên c u t p trung ghi âm gi ng c a b n thân và các sinh viên trong tr ng.

i u ki n là chúng ta đã cài đ t hai gói h tr cho vi c nh n di n gi ng nói là pocketsphins và sphinxbase

Bên trong th m c etc là các t p tin: TV.dic, TV.phone, TV.filler, TV_train.fileids, TV_train.transcription, sphinx_train.cfg

T p tin TV.dic là t p tin t đi n ti ng Vi t theo phiên âm do nhóm nghiên c u ch n. ây là lexicon cho đ c s , ch có 10 ch s t “0”, “1” đ n “9”. Do đó t đi n đ c s ti ng Vi t theo ki u đánh ch Telex c th nh sau:

0 KH OO NG 1 M OOJ T 2 H AI 3 B A 4 B OOS N 5 N AW M 6 S AUS 7 B AYR 8 T AS M 9 CH IS N

T p tin TV.filler là m t t p tin đóng vai trò là m t b l c nhi u: <S> SIL

<S>: kho ng l ng đ u câu <SIL>: kho ng l ng trong câu </S>: kho ng l ng cu i câu

T p tin TV.phone là t p tin ch a các âm v xu t hi n trong t p tinTV.dic và trong b l c nhi u TV.filler, có 20 âm v đ c s d ng cho 10 t t 0 đ n 9 là:

A AI AS AUS AW AYR B CH H IS KH M NG OO OOJ OOS S T TH

Các âm v này ph i duy nh t trong t p tin TV.phone và ch g m nh ng âm v mà chúng ta c n (xu t hi n trong TV.dic và TV.filler).

T p tin TV_train.transcription là t p tin ch a các câu mà chúng ta dùng đ h c. D i

đây là m t s câu trong 150 câu mà tôi dùng đ hu n luy n đ c s : <S> 1 2 3 4 5 </S> (12345) <S> 6 7 8 9 0 </S> (67890) <S> 0 2 4 6 8 </S> (02468) <S> 1 3 5 7 9 </S> (13579) <S> 1 1 1 1 1 </S> (11111) <S> 2 2 2 2 2 </S> (22222)

Thu âm 150 câu đ c s và l u các t p tin âm thanh .wav trong th m c wav. Chú ý: n m bên trong ngo c đ n là ch các t p tin âm thanh ghi âm, chúng ta không c n ghi ph n m r ng .wav mà ch c n ghi tên c a t p tin đó

T p tin TV _train.fileids

Là t p tin ch a t t c tên các t p tin âm thanh trong th m c wav th t tên t p tin âm7 thanh trong TV_train.fileids t ng ng v i th t câu đ c thu âm trong t p tin TV_train.transcription (s dòng trong TV_train.fileids ph i b ng s dòng trong TV_train.transcription). 12345 67890 02468 13579 11111 22222 T p tin sphinx_train.cfg

T p tin này đ c phát sinh t b công c dùng đ hu n luy n cho mô hình âm thanh có tên là SphinxTrain. có đ c t p tin này ta s d ng hai dòng l nh sau:

../SphinxTrain/scripts_pl/setup_SphinxTrain.pl -task TV ../pocketsphinx/scripts/setup_sphinx.pl -task TV

Trong t p tin này, chúng ta có th đi u ch nh s l ng senone trong nh n di n gi ng nói, s l ng senone m c đnh là 1000, v i s này, nhóm nghiên c u nh n th y t l nh n di n thành công là cao nh t và t l gi gi ng là th p nh t.

Sau khi đã chu n b đ y đ các t p tin, chúng ta b t đ u quá trình ghi âm: ./scripts_pl/make_feats -ctl etc/TV_train.fileids

./scripts_pl/RunAll.pl

Sau khi th c hi n xong các dòng l nh, chúng ta đã hoàn thành vi c hu n luy n mô hình âm thanh. Và có đ c th m c model_parameters ch a các th m c c a mô hình HMM.

3.3.3 XÂY D NG MÔ HÌNH NGÔN NG

Có hai lo i mô hình ngôn ng - mô hình ng pháp và mô hình ngôn ng th ng kê. Mô hình ng pháp là lo i mô hình r t đ n gi n mô t các lo i ngôn ng cho các l nh đi u khi n và ki m soát, và chúng th ng đ c vi t b ng tay ho c t đ ng t o ra v i các dòng l nh đ n gi n.

Có r t nhi u cách đ xây d ng mô hình ngôn ng th ng kê. Khi d li u c a b n quá l n, b n có th s d ng b công c c a CMU đ t o ra mô hình ngôn ng . Khi m t mô hình có quy mô nh , b n có th s d ng m t d ch v web tr c tuy n nhanh chóng t o ra mô hình này.

ph n m m có th đ c đ c mô hình ngôn ng có đuôi là .lm thì chúng ta c n ph i chuy n chúng sang d ng nh phân .dmp b ng l nh

sphinx_lm_convert -i TV.lm -o TV.dmp”

Sau khi đã có d c mô hình âm thanh và mô hình ngôn ng vi c ti p theo là cài đ t ng d ng nh n di n gi ng nói trên Android.

M terminal và gõ sudo-i đ l y quy n qu n tr c a h th ng ti p theo là m t kh u c a b n. Khi có quy n qu n tr , b n có th truy xu t vào các t p tin h th ng.

B n s c n swig đ th c thi ng d ng mà chúng ta s p vi t trên android vì th chúng ta s cài đ t swig b ng l nh apt-get install swig.

./configure make make install

i v i pocketsphinx c ng đánh các l nh t ng t .

Ti p theo vào th m c PocketSphinxDemo/jni và m t p tin Android.mk, trong th m c jni, và thay đ i SPHINX_PATH (dòng 5) vào th m c cha ch a pocketsphinx và sphinxbase mà chúng ta đã chu n b trên.Ti p t c gõ dòng l nh:

<đ ng d n đ n th m c ndk build>/ndk-build-B

Bây gi m Eclipse và import d án PocketSphinxDemo. Vào properties c a d án PocketSphinxDemo ch n Builder, b n s th y SWIG và NDK. Ch n NDK builder ch n

đ ng d n đ n th m c NDK và đi u ch nh “The project containing the selected resource” bên tab Refresh. B ch n “Specify working set of relevant resources” bên tab Build Option. Ti p theo ta tùy ch nh SWIG và ch nh “The folder containing the selected resource” bên tab Refresh và b ch n “Specifiy working set of relevant resources” bên tab Build Option

Thi t l p trên thi t b đi n tho i ch y h đi u hành Android. u tiên k t n i v i đi n tho i Android c a b n và t o ra các th m c edu.cmu.pocketsphinx t i /mnt/ sdcard. Ti p theo vào th m c edu.cmu.pocketsphinx n m trên đi n tho i c a b n và t o ra c u trúc th m c sau đây:

edu.cmu.pocketsphinx/hmm/vi/TV: th m c TV này là mô hình âm thanh mà chúng ta đã hu n luy n t tr c.

edu.cmu.pocketsphinx/lm/: trong th m c này ch a hai t p tin TV.dic và TV.dmp mà chúng ta t o ra khi xây d ng mô hình ngôn ng .

Ti p theo ta s đi u ch nh trong project đ tr đúng đ ng d n đ n th m c mà ta đã t o ra và thi t l p. Trong d án, ta theo đ ng đ n src/edu.cmu.pocketsphinx.demo/RecognizerTask.java sau đó tìm và s a các dòng sau:

c.setString("-hmm", "/sdcard/Android/edu.cmu.pocketsphinx/hmm/vi/TV"); c.setString("-dict", "/sdcard/Android/edu.cmu.pocketsphinx/lm/vi/TV.dic"); c.setString("-lm", "/sdcard/Android/edu.cmu.pocketsphinx/lm/vi/TV.DMP");

Nh v y ta chúng ta đã hoàn thành vi c xây d ng nên ng d ng nh n di n đ c các ch s t 0 đ n 9 trên đi n tho i Android.

3.4 CÀI T

3.4.1 CÀI T PHÍA CLIENT

Cài đ t phía client có nh ng ch c n ng chính là l y t a đ GPS t thi t b , g i và nh n d li u t server, nh n di n gi ng nói sinh viên.

Hình 3.7 Mô hình ho t đ ng bên phía Client

L y t a đ đ nh v toàn c u (GPS) c a thi t b

Tìm ki m m t Provider theo tiêu chí :

S d ng l p Criteria đ yêu c u thi t b x lý chính xác nh ng s li u có s n nh : v

đ và kinh đ , t c đ , đ cao, chi phí và yêu v c u n ng l ng đi n. Criteria criteria = new Criteria();

criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setSpeedRequired(false); criteria.setCostAllowed(true);

Chúng ta có th dùng getBestProvider là s k t h p t t nh t tr đ v cho Location Provider ho c dùng getProvider, s d ng getBestProvider nhà cung c p s tr l i các tiêu chí t t nh t, s d ng Boolean cho phép h n ch nh ng k t qu t nhà cung c p đang đ c ho t đ ng.

String bestProvider = locationManager.getBestProvider(criteria, true);

List<String> matchingProviders = locationManager.getProviders(criteria,false);

Tìm t o đ GPS:

M c đích c a d ch v đ nh v là tìm ra v trí v t lý c a thi t b .

truy c p vào Location Manager th c hi n các yêu c u LOCATION_SERVICES ta s d ng ph ng th c getSystemService:

String serviceString = Context.LOCATION_SERVICE; LocationManager locationManager;

locationManager = (LocationManager)getSystemService(serviceString);

Tr c khi s d ng Location Manager thì c n thêm m t ho c nhi u th uses- permission trong file mainfest đ truy c p vào các ph n c ng c a LBS trong đó bao g m c fine coarse nh sau:

<uses-permission Android:name=”Android.permission.ACCESS_FINE_LOCATION”/> <uses-permission Android:name=”Android.permission.ACCESS_COARSE_LOCATION”/>

Chúng ta có th tìm th y v trí b ng cách xác đnh m t Location Provider s d ng ph ng th c getKnowLocation và đ a vào tên c a Location Provider.

Theo dõi s di chuy n (Tracking Movement):

S d ng ph ng th c requestLocationUpdate đ c p nh t b t k m t v trí, khi v trí hi n t i thay đ i chúng ta s d ng m t LocationListener.LocationListener th c hi n và

đ ng ký đ nh n thông tin.LocationListener r t linh ho t và nhi u tính n ng cho phép ch n nhi u lo i s ki n v v trí d a trên đ c tính khác nhau.

Ph ng th c requestLocationUpdate ch p nh n m t Location Provider ho c Criteria

đ xác đnh nhà cung c p đ c s d ng.

o n code sau s th hi n m t yêu c u c p nh t th ng xuyên d a trên m c t i thi u v th i gian và kho ng cách.

String provider = LocationManager.GPS_PROVIDER; int t = 5000; // milliseconds

int distance = 5; // meters

LocationListener myLocationListener = new LocationListener() { public void onLocationChanged(Location location) {

// Update application based on new location. }

public void onProviderDisabled(String provider){ // Update application if provider disabled.

}

public void onProviderEnabled(String provider){ // Update application if provider enabled.

}

public void onStatusChanged(String provider, int status,Bundle extras){ // Update application if provider hardware status changed.

} };

locationManager.requestLocationUpdates(provider, t, distance, myLocationListener);  Giao ti p gi a client Android và Server :

ng d ng s d ng th vi n m KSOAP2 h tr h đi u hành Android đ k t n i web service client và Server. ây là m t th vi c soap hi u qu cho nên t ng android v i nhi u tính n ng c i ti n và phát tri n thêm các phiên b n sau.

KSOAP2 là gì ?

KSOAP2 là m t th vi n m cho các SOAP web service client trong môi tr ng Java nh Applet hay ng d ng J2ME. KSOAP2 đ c thi t k l i hoàn toàn d a trên nh ng th c nghi m t phiên b n đ u tiên ksoap1.x. KSOAP2-Android là m t nhánh trong th vi n KSOAP2 đ c thêm vào đ h tr cho n n t ng Android.

S d ng KSOAP2 đ l y d li u t Server :

th c hi n các ch c n ng chính c a ng d ng, ph n m m s k t n i đ n server và yêu c u tr v các d li u khác nhau. Nh ng k thu t đ g i, nh n d li u t server là t ng t nhau và theo m t quy đnh chung:

+ Kh i t o m t đ i t ng SoapObject đ g i yêu c u đ n server v i các tham s truy n vào là NAMESPACE và METHOD_NAME

+ Truy n vào giá tr c a tham s b ng cách dùng ph ng th c addProperty có s n c a

đ i t ng soapObject.

+ S d ng Soap Envelope dùng đ trao đ i gi a các client và webservice server. + X lý k t qu tr v b ng k thu t trong ngôn ng java và hi n th các thông tin c n thi t.

Ví d : Ki m tra Sinh viên có đang trong c c h c hay không B c 1 : kh i T o h ng s

private static final String SOAP_ACTION = "http://tempuri.org/XuLy"; private static final String OPERATION_NAME = "XuLy";

private static final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";

private static final String SOAP_ADDRESS = "http://androidws.somee.com/DD_WebService.asmx"; B c 2: Kh i t o SoapObject và các tham s truy n vào

SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME); PropertyInfo propertyInfo = new PropertyInfo();

request.addProperty("kinhDo",viDo); request.addProperty("viDo",viDo);

B c 3. : G i d li u lên Server

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true;

envelope.setOutputSoapObject(request); B c 4 : Nh n giá tr tr v t server.

HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS); SoapObject response=null;

try {

httpTransport.call(SOAP_ACTION, envelope); response =(SoapObject) envelope.getResponse(); } catch (Exception exception){ … }

return response;

Cài đ t Google Maps API:

V i Google Map API, chúng ta có th thêm m t t m b n đ vào ng d ng d a trên d li u đ s c a Google Maps. API t đ ng qu n lý vi c truy xu t đ n server Google Map, t i các d li u v , hi n th b n đ , g i ph n h i đ n các thao tác trên b n đ . Ngoài

ra Google Maps còn có th thêm các đi m đánh d u, đánh d u các khu v c và che ph b n đ c b n b ng các tu ch nh c a riêng ng i dùng.

Một phần của tài liệu Xây dựng hệ thống phần mềm điểm danh ứng dụng nhận diện giọng nói tiếng việt (Trang 52)