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
1,26 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 NGHIÊN CỨU VỀ NHẬN DẠNG TIẾNG NÓI ỨNG DỤNG VÀO ĐIỀU KHIỂN XE LĂN LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN - 2017 ĐẠ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 NGHIÊN CỨU VỀ NHẬN DẠNG TIẾNG NÓI ỨNG DỤNG VÀO ĐIỀU KHIỂN XE LĂN Chuyên ngành: Khoa học máy tính Mã số: 60.48.01.01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học: TS Vũ Việt Vũ THÁI NGUYÊN - 2017 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 toàn chịu trách nhiệm trước hội đồng khoa học trước pháp luật Thái Nguyên, tháng 11 năm 2017 Tác giả luận văn Hà Thị Thu Giang 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á đường học tập, làm việc nghiên cứu sau Em xin chân thành cảm ơn! Thái Nguyên, tháng năm 2017 Tác giả luận văn Hà Thị Thu Giang 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 TỔNG QUAN VỀ NHẬN DẠNG TIẾNG NÓI 1.1 Tổng quan lĩnh vực xử lý tiếng nói .3 1.1.1 Tiếng nói gì? 1.1.2 Biểu diễn tín hiệu tiếng nói 1.1.3 Các toán lĩnh vực xử lý tiếng nói 1.2 Nhận dạng tiếng nói 1.2.1 Khái niệm nhận dạng tiếng nói 1.2.2 Tổng quan toán nhận dạng 1.2.3 Các bước xử lý tốn nhận dạng tiếng nói 11 1.3 Các khó khăn gặp phải nghiên cứu nhận dạng tiếng nói 14 1.4 Nghiên cứu nhận dạng tiếng nói Việt Nam 15 1.5 Ứng dụng 16 1.6 Kết luận 16 Chương 17 NGHIÊN CỨU MỘT SỐ PHƯƠNG PHÁP NHẬN DẠNG TIẾNG NÓI 17 2.1 Mơ hình Markov ẩn (Hidden Markov Model - HMM) 17 2.1.1 Chuỗi Markov 17 2.1.2 Mơ hình Markov ẩn 18 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 2.1.5 Học mơ hình Markov ẩn: Thuật tốn Forward-Backward 27 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 2.4 Mô hình ngơn ngữ 35 2.5 Kết luận 36 Chương 37 MÔ PHỎNG HỆ THỐNG ĐIỀU KHIỂN XE LĂN BẰNG TIẾNG NÓI .37 3.1 Giới thiệu 37 3.2 Giới thiệu hệ thống xe lăn quy trình điều khiển 39 3.2.1 Giới thiệu thành phần xe lăn 39 3.2.2 Quy trình điều khiển hoạt động xe lăn .39 3.3 Nhiệm vụ chức hệ thống .40 3.3.1 Nhiệm vụ hệ thống .40 3.3.2 Chức hệ thống 40 3.4 Thiết kế hệ thống điều khiển xe lăn 40 3.4.1 Phần mềm, thư viện CSDL nhận dạng 40 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 3.5 Chạy thử 51 KẾT LUẬN .52 Những kết đạt .52 Hướng phát triển đề tài 52 TÀI LIỆU THAM KHẢO 54 v DANH MỤC TỪ VIẾT TẮT FFT - Fast Fourier Transform 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 DCT - Discrete Cosine Transform 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 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 tố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 Hình 1.7 Các bước q trình trích chọn đặc trưng theo phương pháp MFCC FFT biến đổi Fourrier nhanh, Power Spectrum phổ cơng suất tín hiệu DCT biến đổi cosin rời rạc 13 Hình 1.8 Giao diện phần mềm iSago 15 Hình 2.1 Mơ hình học có giám sát 10 Hình 2.2 Ví dụ chuỗi Markov biểu diễn trạng thái thời tiết 17 Hình 2.3 Ví dụ mơ hình Markov ẩn 20 Hình 2.4 Minh họa q trình tính tốn theo thuật tốn Forward 23 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 Hình 2.7 Thuật toán Viterbi 26 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 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 Logistic( z ) 29 ez 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 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 Hình 3.4 Mơ hình kế nối hệ thống chi tiết module điều khiển xe lăn điều khiển từ xa điện thoại thơng minh 39 Hình 3.5 Lưu đồ thuật toán hệ thống nhận dạng 42 Hình 3.6 Sơ đồ khối q trình nhận dạng tiếng nói Sphinx-4 43 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 Các bước việc điều khiển xe lăn sau: Bước 1: Khi ứng dụng mở, yêu cầu bật bluetooth Bước 2: Có nút kết nối ảo sử dụng để kết nối điện thoại di động Android với phần cứng Bluetooth để truyền liệu không dây Bước 3: Khi Bluetooth bật, ứng dụng kiểm tra đầu vào Bước 4: Nếu lệnh nhận Tiến, toàn động DC tiến lên phía trước cho chuyển động tuyến tính Bước 6: Nếu lệnh nhận Lùi, toàn động DC chuyển động hướng ngược lại cho chuyển động tuyến tính Bước 7: Nếu lệnh nhận Trái, động DC trái dừng lại động DC phải di chuyển theo hướng trái 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 Bước 9: Nếu lệnh nhận Dừng, hai động dừng lại Bước 10: Khi người sử dụng muốn ngưng sử dụng xe, người sử dụng chạm vào nút tắt kết nối để tắt kết nối không dây 42 Bắt đầu Bluetooth bật chưa? Kiểm tra đầu vào No Bluetooth bật Yes Gửi yêu cầu bật Bluetooth Giá trị đầu vào No Yes Tiến n Động di chuyển phía trước Lùi Động di chuyển phía sau Dừng Trái Động dừng lại Động trái dừng, động phải di chuyển sang trái Phải Động phải dừng, động trái di chuyển sang phải Kết thúc Hình 3.5 Lưu đồ thuật tốn hệ thống nhận dạng 43 3.4.3 Thiết kế phần mềm Hình 3.6 Sơ đồ khối q trình nhận dạng tiếng nói Sphinx-4 Chức quan trọng nhận dạng tiếng nói, chúng tơi sử dụng cơng cụ mã nguồn mở Sphinx-4 (hình 3.6) Trong tóm tắt chức sau: - Frontend: Từ Input liệu đầu vào chuỗi sóng âm mã hóa trích chọn đặc trưng qua Fronend thu đặc trừng feature gửi vào giải mã (decoder) Phương pháp thường dùng công đoạn MFCC chúng chuyển đổi tín hiệu âm sang dạng vector - Linguist: Chức Linguist cung cấp mơ hình ngữ âm, từ đ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ữ 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 toá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 - Ngoài giá trị tham số mơ hình Markov sinh pha huấn luyện nhúng cách sử dụng từ vựng đầu vào Như thư viện chuẩn Andtoid, phải khai báo thêm thư viện từ Sphinx-4 sau: import edu.cmu.pocketsphinx.Assets; import edu.cmu.pocketsphinx.Hypothesis; import edu.cmu.pocketsphinx.RecognitionListener; import edu.cmu.pocketsphinx.SpeechRecognizer; import static 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 điện thoại Cài đặt tham số môi trường nhận dạng: private void setupRecognizer(File assetsDir) throws IOException { recognizer = defaultSetup() setSampleRate(16000) setAcousticModel(new File(assetsDir, "dkxelan")) setDictionary(new File(assetsDir, "dkxelan.dict")) setRawLogDir(assetsDir) setKeywordThreshold(1e-20f) 45 setBoolean("-allphone_ci", false) setBoolean("-allphone_cd", true) getRecognizer(); recognizer.addListener(this); File dkxlGrammar = new File(assetsDir, "dkxelan.gram"); recognizer.addGrammarSearch("dkxelan", dkxlGrammar); } Tạo luồng nhận dạng onCreate: new AsyncTask() { @Override protected Exception doInBackground(Void params) { try { Assets assets = new Assets(PocketSphinxActivity.this); File assetDir = assets.syncAssets(); setupRecognizer(assetDir); } catch (IOException e) { return e; } return null; } @Override protected void onPostExecute(Exception result) { if (result == null) recognizer.stop(); recognizer.startListening("dkxelan"); 46 } }.execute(); Hàm trả kết nhận dạng: public void onResult(Hypothesis hypothesis) { ((TextView) findViewById(R.id.txtStatus)) setText(" ."); if (hypothesis != null) { String text = hypothesis.getHypstr(); Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show(); ((TextView) findViewById(R.id.txtStatus)) setText(text); dieuKhienXeLan(text); } } Kiểm tra thiết bị có hỗ trợ Bluetooth hay không: private void checkBTState() { if (btAdapter == null) { errorExit("Fatal Error", "Bluetooth not support"); } else { tatBluetooth(); } } Tạo socket kết nối Bluetooth: private BluetoothSocket createBluetoothSocket(BluetoothDevice device) throws IOException { 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 Connection", e); } } return device.createRfcommSocketToServiceRecord(MY_UUID); } Gửi ký tự qua Bluetooth: public void write(String message) { Log.d(TAG, " Data to send: " + message + " "); byte[] msgBuffer = message.getBytes(); try { mmOutStream.write(msgBuffer); } catch (IOException e) { Log.d(TAG, " Error data send: " + e.getMessage() + " "); } } Thiết kế phần mềm Arduino Hàm điều chỉnh tốc độ động cơ: void motor_speech(void){ num_pulse=IRQcount; 48 IRQcount=0; tmp=(((num_pulse*1000.0)/(pulses_cycle*del_timer_ms))/rpm)*255; total=0; for (i=0;i