Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 65 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
65
Dung lượng
2 MB
Nội dung
ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG HÀ THỊ THU GIANG lu an n va ỨNG DỤNG VÀO ĐIỀU KHIỂN XE LĂN p ie gh tn to NGHIÊN CỨU VỀ NHẬN DẠNG TIẾNG NÓI d oa nl w va an lu ll u nf LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH oi m z at nh z m co l gm @ an Lu THÁI NGUYÊN - 2017 n va ac th si ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG HÀ THỊ THU GIANG lu an NGHIÊN CỨU VỀ NHẬN DẠNG TIẾNG NÓI va n ỨNG DỤNG VÀO ĐIỀU KHIỂN XE LĂN tn to gh Chuyên ngành: Khoa học máy tính p ie Mã số: 60.48.01.01 d oa nl w lu ll u nf va an LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH m oi Người hướng dẫn khoa học: TS Vũ Việt Vũ z at nh z m co l gm @ an Lu THÁI NGUYÊN - 2017 n va ac th si i LỜI CAM ĐOAN Tôi xin cam đoan luận văn “Nghiên cứu nhận dạng tiếng nói ứng dụng vào điều khiển xe lăn” cơng trình nghiên cứu riêng tơi, kết nghiên cứu trình bày luận án trung thực, khách quan chưa dùng bảo vệ để lấy học vị Trong phần kiến thức chung, nghiên cứu giải thuật áp dụng tơi có tham khảo số tài liệu có trích dẫn đầy đủ Nếu sai tơi hồn tồn chịu trách nhiệm trước hội đồng lu khoa học trước pháp luật an Thái Nguyên, tháng 11 năm 2017 va n Tác giả luận văn p ie gh tn to d oa nl w Hà Thị Thu Giang ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si ii LỜI CẢM ƠN Đầu tiên, em xin bày tỏ lòng biết ơn chân thành tới thầy Vũ Việt Vũ, người tận tình hướng dẫn tạo điều kiện thuận lợi để em hoàn thành luận văn Em xin cảm ơn dạy dỗ giúp đỡ nhiệt tình tất quý thầy cô trường đại học Công Nghệ Thông Tin Truyền Thông Thái Nguyên Tất kiến thức mà em truyền đạt hành trang quí giá lu đường học tập, làm việc nghiên cứu sau an Em xin chân thành cảm ơn! va năm 2017 n Thái Nguyên, tháng to p ie gh tn Tác giả luận văn oa nl w Hà Thị Thu Giang d ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si iii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC TỪ VIẾT TẮT v DANH MỤC CÁC BẢNG vi DANH MỤC CÁC HÌNH vii MỞ ĐẦU .1 Chương .3 lu an TỔNG QUAN VỀ NHẬN DẠNG TIẾNG NÓI n va 1.1 Tổng quan lĩnh vực xử lý tiếng nói .3 1.1.2 Biểu diễn tín hiệu tiếng nói gh tn to 1.1.1 Tiếng nói gì? p ie 1.1.3 Các toán lĩnh vực xử lý tiếng nói w 1.2 Nhận dạng tiếng nói oa nl 1.2.1 Khái niệm nhận dạng tiếng nói d 1.2.2 Tổng quan toán nhận dạng an lu 1.2.3 Các bước xử lý toán nhận dạng tiếng nói 11 va 1.3 Các khó khăn gặp phải nghiên cứu nhận dạng tiếng nói 14 ll u nf 1.4 Nghiên cứu nhận dạng tiếng nói Việt Nam 15 oi m 1.5 Ứng dụng 16 z at nh 1.6 Kết luận 16 Chương 17 z NGHIÊN CỨU MỘT SỐ PHƯƠNG PHÁP NHẬN DẠNG TIẾNG NĨI 17 @ gm 2.1 Mơ hình Markov ẩn (Hidden Markov Model - HMM) 17 l 2.1.1 Chuỗi Markov 17 m co 2.1.2 Mơ hình Markov ẩn 18 an Lu 2.1.3 Tính Likelihood: thuật toán Forward .21 2.1.4 Thuật toán Viterbi cho toán giải mã 25 n va 2.1.5 Học mơ hình Markov ẩn: Thuật tốn Forward-Backward 27 ac th si iv 2.2 Mạng Nơ ron nhân tạo 28 2.2.1 Cấu trúc mạng Nơron .28 2.2.2 Mạng Nơ ron lan truyền thẳng lớp 30 2.2.3 Mạng Nơ ron lan truyền thẳng nhiều lớp 31 2.2.4 Học mạng Nơ ron nhiều lớp 32 2.2.5 Học xây dựng cấu trúc mạng nơ ron 33 2.3 Mơ hình âm học 34 2.3.1 Mơ hình tốn học hệ thống nhận dạng 34 2.3.2 Đơn vị huấn luyện cho Tiếng Việt 34 lu 2.4 Mơ hình ngơn ngữ 35 an n va 2.5 Kết luận 36 MÔ PHỎNG HỆ THỐNG ĐIỀU KHIỂN XE LĂN BẰNG TIẾNG NÓI .37 gh tn to Chương 37 ie 3.1 Giới thiệu 37 p 3.2 Giới thiệu hệ thống xe lăn quy trình điều khiển 39 nl w 3.2.1 Giới thiệu thành phần xe lăn 39 d oa 3.2.2 Quy trình điều khiển hoạt động xe lăn .39 an lu 3.3 Nhiệm vụ chức hệ thống .40 va 3.3.1 Nhiệm vụ hệ thống .40 u nf 3.3.2 Chức hệ thống 40 ll 3.4 Thiết kế hệ thống điều khiển xe lăn 40 m oi 3.4.1 Phần mềm, thư viện CSDL nhận dạng 40 z at nh 3.4.2 Các bước giải thuật điều khiển xe lăn 41 3.4.3 Thiết kế phần mềm 43 z gm @ 3.5 Chạy thử 51 KẾT LUẬN .52 l m co Những kết đạt .52 Hướng phát triển đề tài 52 an Lu TÀI LIỆU THAM KHẢO 54 n va ac th si v DANH MỤC TỪ VIẾT TẮT n va DFT - Digital Fourier Transform ADC - Analog Digital Converter MFCC - Mel Frequency Cepstrum Coeffient LPC - Linear Prediction Coding PCA - Principle Components Analysis HMM - Hidden Markov Model NNs - Neural Networks BP - Back Propagation ICA - Independent Component Analysis DC motor - Dirrect Current - Discrete Cosine Transform tn to Fast Fourier Transform p an - gh lu FFT ie d oa nl w DCT ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si vi DANH MỤC CÁC BẢNG Bảng 1.1 Chất lượng số hệ thống nhận dạng Bảng 3.1 Ví dụ tập liệu huấn luyện 30 lu an n va p ie gh tn to d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si vii DANH MỤC CÁC HÌNH Hình 1.1 Biểu diễn tín hiệu tiếng nói dạng sóng theo thời gian Hình 1.2 Phổ tín hiệu tiếng nói Hình 1.3 Biểu diễn tín hiệu tiếng nói spectrogram Hình 1.4 Các toán ứng dụng lĩnh vực xử lý tiếng nói Hình 1.5 Tổng quan hệ thống nhận dạng tiếng nói Hình 1.6 Ví dụ việc lấy lấy mẫu theo khung 13 lu Hình 1.7 Các bước q trình trích chọn đặc trưng theo phương an pháp MFCC FFT biến đổi Fourrier nhanh, Power va n Spectrum phổ cơng suất tín hiệu DCT biến đổi to gh tn cosin rời rạc 13 ie Hình 1.8 Giao diện phần mềm iSago 15 p Hình 2.1 Mơ hình học có giám sát 10 nl w Hình 2.2 Ví dụ chuỗi Markov biểu diễn trạng thái thời tiết 17 d oa Hình 2.3 Ví dụ mơ hình Markov ẩn 20 an lu Hình 2.4 Minh họa q trình tính tốn theo thuật tốn Forward 23 u nf va Hình 2.5 Minh họa việc tính giá trị t(j) 24 Hình 2.6 Thuật tốn Forward 24 ll oi m Hình 2.7 Thuật tốn Viterbi 26 z at nh Hình 2.8 Ví dụ thuật tốn Viterbi 27 Hình 2.9 Mơ hình tốn học cho Nơ ron 28 z gm @ Hình 2.10 Ví dụ hàm kích hoạt ngưỡng cứng (a) threshold(z) với đầu (b) hàm logistic với l 29 ez m co Logistic( z ) an Lu Hình 2.11 Ví dụ mạng Nơ ron hồi quy 30 Hình 2.12 Mạng perceptron với hai đầu vào hai đầu 31 n va ac th si viii Hình 2.13 Mạng Nơ ron với hai đầu vào, lớp ẩn hai đầu 31 Hình 2.14 Thuật toán Back-Propagation 33 Hình 3.1 Xe lăn thơng minh phịng thí nghiệm Đại học Texas (Mỹ) 37 Hình 3.2 Xe lăn điều khiển giọng nói đạt giải cho sinh viên Việt nam năm 2015 38 Hình 3.3 Xe lăn điều khiển giọng nói tác giả nhóm nghiên cứu phịng thí nghiệm 38 lu Hình 3.4 Mơ hình kế nối hệ thống chi tiết module điều khiển an xe lăn điều khiển từ xa điện thoại thông minh 39 va n Hình 3.5 Lưu đồ thuật tốn hệ thống nhận dạng 42 p ie gh tn to Hình 3.6 Sơ đồ khối q trình nhận dạng tiếng nói Sphinx-4 43 d oa nl w ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si 41 - Phần mềm Arudino - Hệ điều hành Ubuntu - Thư viện pocketsphinx-android-5prealpha-nolib.jar - Pocket sphinxtrain-5prealpha.tar.gz - Pocket sphinxbase-5prealpha.tar.gz - Thư viện PID cho Arduino - Một số thư viện cần thiết cài pocket sphinx Ubuntu 3.4.2 Các bước giải thuật điều khiển xe lăn lu an Các bước việc điều khiển xe lăn sau: va n Bước 1: Khi ứng dụng mở, yêu cầu bật bluetooth tn to Bước 2: Có nút kết nối ảo sử dụng để kết nối điện thoại di Bước 3: Khi Bluetooth bật, ứng dụng kiểm tra đầu vào p ie gh động Android với phần cứng Bluetooth để truyền liệu không dây nl w Bước 4: Nếu lệnh nhận Tiến, toàn động DC tiến lên oa phía trước cho chuyển động tuyến tính d Bước 6: Nếu lệnh nhận Lùi, toàn động DC chuyển an lu va động hướng ngược lại cho chuyển động tuyến tính u nf Bước 7: Nếu lệnh nhận Trái, động DC trái dừng lại ll động DC phải di chuyển theo hướng trái oi m z at nh Bước 8: Nếu lệnh nhận rẽ Phải, động DC phải dừng lại động DC trái di chuyển theo hướng phải z Bước 9: Nếu lệnh nhận Dừng, hai động dừng lại @ chạm vào nút tắt kết nối để tắt kết nối không dây m co l gm Bước 10: Khi người sử dụng muốn ngưng sử dụng xe, người sử dụng an Lu n va ac th si 42 Bắt đầu Bluetooth bật chưa? Kiểm tra đầu vào lu an No n va Bluetooth bật gh tn to Yes ie p Gửi yêu cầu bật Bluetooth w oa nl Giá trị đầu vào No d lu ll u nf va an Yes Dừng Trái Phải oi Động dừng lại z Động trái dừng, động phải di chuyển sang trái Động phải dừng, động trái di chuyển sang phải an Lu Kết thúc m co l gm @ Động di chuyển phía sau z at nh Động di chuyển phía trước Lùi m Tiến n n va Hình 3.5 Lưu đồ thuật toán hệ thống nhận dạng ac th si 43 3.4.3 Thiết kế phần mềm lu an n va p ie gh tn to oa nl w d Hình 3.6 Sơ đồ khối trình nhận dạng tiếng nói Sphinx-4 lu va an Chức quan trọng nhận dạng tiếng nói, chúng tơi sử dụng ll sau: u nf cơng cụ mã nguồn mở Sphinx-4 (hình 3.6) Trong tóm tắt chức m oi - Frontend: Từ Input liệu đầu vào chuỗi sóng âm z at nh mã hóa trích chọn đặc trưng qua Fronend thu đặc z trừng feature gửi vào giải mã (decoder) Phương pháp thường dùng @ l sang dạng vector gm công đoạn MFCC chúng chuyển đổi tín hiệu âm m co - Linguist: Chức Linguist cung cấp mơ hình ngữ âm, từ an Lu điển mơ hình ngơn ngữ nhằm xây dựng đồ thị cho việc tìm kiếm tảng sử dụng mơ hình Markov ẩn mơ hình ngơn ngữ n va ac th si 44 dùng để tính xác xuất tiên nghiệm, mơ hình ngữ âm dùng để tính giá trị likelihood Cụ thể mơ hình ngữ âm Gaussian áp dụng để tính likelihood quan sát vector đặc trưng - Decoder: Bộ giải mã (decoder) có nhiệm vụ sử dụng mơ hình tìm kiếm liệu đầu vào kết Mơ hình sử dụng thuật tốn Viterbi với đầu vào gồm vector đầu vào, mô hình ngữ âm Gausian mơ hình ngơn ngữ nhằm tìm kiếm xâu kí tự biểu diễn chuỗi từ đầu lu - Ngoài giá trị tham số mơ hình Markov sinh an pha huấn luyện nhúng cách sử dụng từ vựng đầu vào va n Như thư viện chuẩn Andtoid, phải khai báo thêm import edu.cmu.pocketsphinx.Assets; p ie gh tn to thư viện từ Sphinx-4 sau: import edu.cmu.pocketsphinx.Hypothesis; oa nl w import edu.cmu.pocketsphinx.RecognitionListener; import edu.cmu.pocketsphinx.SpeechRecognizer; d an lu import static u nf va edu.cmu.pocketsphinx.SpeechRecognizerSetup.defaultSetup; Các thư viện có hàm tương ứng cho việc nhận dạng tiếng nói ll oi m điện thoại z at nh Cài đặt tham số môi trường nhận dạng: private void setupRecognizer(File assetsDir) throws IOException { l gm @ setSampleRate(16000) z recognizer = defaultSetup() m co setAcousticModel(new File(assetsDir, "dkxelan")) setDictionary(new File(assetsDir, "dkxelan.dict")) n va setKeywordThreshold(1e-20f) an Lu setRawLogDir(assetsDir) ac th si 45 setBoolean("-allphone_ci", false) setBoolean("-allphone_cd", true) getRecognizer(); recognizer.addListener(this); File dkxlGrammar = new File(assetsDir, "dkxelan.gram"); recognizer.addGrammarSearch("dkxelan", dkxlGrammar); } lu Tạo luồng nhận dạng onCreate: an new AsyncTask() { va n @Override to gh tn protected Exception doInBackground(Void params) { p ie try { Assets assets = new Assets(PocketSphinxActivity.this); setupRecognizer(assetDir); d oa nl w File assetDir = assets.syncAssets(); an lu } catch (IOException e) { } ll u nf va return e; oi m return null; z at nh } z gm @ @Override protected void onPostExecute(Exception result) { m co recognizer.stop(); l if (result == null) an Lu recognizer.startListening("dkxelan"); n va ac th si 46 } }.execute(); Hàm trả kết nhận dạng: public void onResult(Hypothesis hypothesis) { ((TextView) findViewById(R.id.txtStatus)) setText(" ."); lu if (hypothesis != null) { an String text = hypothesis.getHypstr(); va n Toast.makeText(getApplicationContext(), text, to gh tn Toast.LENGTH_SHORT).show(); p ie ((TextView) findViewById(R.id.txtStatus)) setText(text); } d oa nl w dieuKhienXeLan(text); an lu } u nf va Kiểm tra thiết bị có hỗ trợ Bluetooth hay không: private void checkBTState() { ll oi m if (btAdapter == null) { } else { z at nh errorExit("Fatal Error", "Bluetooth not support"); m co l Tạo socket kết nối Bluetooth: gm } @ } z tatBluetooth(); an Lu private BluetoothSocket createBluetoothSocket(BluetoothDevice n va device) throws IOException { ac th si 47 if (Build.VERSION.SDK_INT >= 10) { try { final Method m = device.getClass().getMethod("createInsecureRfcommSocketToServic eRecord", new Class[]{UUID.class}); return (BluetoothSocket) m.invoke(device, MY_UUID); } catch (Exception e) { Log.e(TAG, "Could not create Insecure RFComm lu Connection", e); an } va n } to } p ie gh tn return device.createRfcommSocketToServiceRecord(MY_UUID); oa nl w Gửi ký tự qua Bluetooth: public void write(String message) { d an lu Log.d(TAG, " Data to send: " + message + " "); try { ll u nf va byte[] msgBuffer = message.getBytes(); oi m mmOutStream.write(msgBuffer); z at nh } catch (IOException e) { Log.d(TAG, " Error data send: " + e.getMessage() + " "); m co l an Lu n va Hàm điều chỉnh tốc độ động cơ: void motor_speech(void){ num_pulse=IRQcount; gm Thiết kế phần mềm Arduino @ } z } ac th si 48 IRQcount=0; lu tmp=(((num_pulse*1000.0)/(pulses_cycle*del_timer_ms))/rpm)*255; total=0; for (i=0;i