NHẬN DẠNG và CHUYỂN đổi TIẾNG nói TIẾNG VIỆT SANG văn bản

94 463 4
NHẬN DẠNG và CHUYỂN đổi TIẾNG nói TIẾNG VIỆT SANG văn bản

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN ĐẠI HỌC MỞ HÀ NỘI LUẬN VĂN THẠC SỸ CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN NHẬN DẠNG VÀ CHUYỂN ĐỔI TIẾNG NÓI TIẾNG VIỆT SANG VĂN BẢN HOÀNG MINH SƠN HÀ NỘI - 2015 BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN ĐẠI HỌC MỞ HÀ NỘI LUẬN VĂN THẠC SỸ NHẬN DẠNG VÀ CHUYỂN ĐỔI TIẾNG NÓI TIẾNG VIỆT SANG VĂN BẢN HOÀNG MINH SƠN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN MÃ SỐ: 60480201 NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS NGUYỄN QUANG HOAN HÀ NỘI - 2015 LỜI CAM ĐOAN Em xin cam đoan công trình nghiên cứu em chưa công bố công trình chưa đăng tài liệu, tạp chí, hội nghị khác Những kết nghiên cứu luận văn trung thực Hà Nội, tháng 11 năm 2015 TÁC GIẢ LUẬN VĂN Hoàng Minh Sơn i LỜI CẢM ƠN Trước hết, em xin gửi lời cảm ơn sâu sắc đến PGS.TS Nguyễn Quang Hoan, người giúp đỡ em nhiều kiến thức tài liệu kỹ thuật phục vụ cho công tác nghiên cứu Em xin chân thành cảm ơn thầy, cô giảng viên giảng dạy Viện Đại học Mở - Hà Nội tạo điều kiện giúp đỡ em hoàn thành đề tài tốt nghiệp, cảm ơn tất bạn bè nhiệt tình giúp đỡ, động viên góp ý cho luận văn, đề tài Mặc dù nỗ lực cố gắng để hoàn thành luận văn tốt nghiệp chắn tránh khỏi sai sót Vì vậy, em mong bảo thầy, cô để luận văn hoàn thiện Hà Nội, tháng 12 năm 2015 TÁC GIẢ LUẬN VĂN Hoàng Minh Sơn ii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii Phụ lục viii DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT ix ix DANH SÁCH BẢNG .x DANH SÁCH HÌNH VẼ xi MỞ ĐẦU CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ NHẬN DẠNG TIẾNG NÓI, TIẾNG NÓI TIẾNG VIỆT 1.1 Giới thiệu số ứng dụng nhận dạng tiếng nói nước .2 1.1.1 Các ứng dụng nhận dạng tiếng nói giới 1.1.2 Các nghiên cứu nhận dạng tiếng nói nước 1.2 Giới thiệu hệ thống nhận dạng tiếng nói 1.3 Giới thiệu tiếng nói, tiếng Việt .7 Tiếng nói loại sóng âm, nói, tiếng nói truyền mang theo thông tin dạng dao động phương truyền đến tai người nhận Mức độ truyền tin tiếng nói xem nhanh khả tự nhiên người [5] 1.3.1 Các đặc trưng tiếng nói 1.3.2 Quá trình phát âm máy phát âm 1.3.3 Một số đặc điểm tìm hiểu tiếng nói .10 1.4 Ngữ âm tiếng Việt 11 1.4.1 Khái niệm ngữ âm tiếng Việt 11 1.4.2 Cấu trúc âm tiết 11 1.4.2.1 Cấu trúc âm tiết năm thành phần .11 1.4.2.2 Cấu trúc âm tiết ba thành phần 12 1.4.2.3 Thanh điệu 14 Bằng .16 Trắc 16 Cao 16 Ngang .16 iii Sắc 16 Ngã 16 Thấp 17 Huyền .17 Hỏi 17 Nặng .17 17 1.5 Lý chọn đề tài toán nhận dạng 17 Hiện nay, giới nước có nhiều đề tài vấn đề nhận dạng, chuyển đổi tiếng nói sang văn Hầu hết, đề tài đưa nhiều ứng dụng đánh giá cao Song, em lựa chọn đề tài ứng dụng chuyển đổi tiếng nói tiếng Việt sang văn khiêm tốn, đặc biệt thiết bị di động thông minh .17 Trong đề tài này, em áp dụng, tận dụng mã nguồn mở hệ thống nhận dạng công nghệ điện toán đám mây Google để thiết kế, xây dựng chương trình ứng dụng sử dụng hệ điều hành Android nhằm đáp ứng nhu cầu sử dụng thiết bị di động thông minh, bắt kịp thời đại đại hoá 17 1.6 Kết luận chương 17 CHƯƠNG 2: PHÂN TÍCH DỮ LIỆU TIẾNG NÓI 18 2.1 Cấu trúc tập tin âm 18 2.2 Các kỹ thuật tiền xử lý tiếng nói .23 2.2.1 Các đơn vị tiếng nói 23 2.2.2 Phương pháp trích chọn đặc trưng LPC 25 Trong đó: 26 Đệ qui: Với p = 2,3,…,P 26 Tính hệ số Kp 26 Tính hệ số dự báo bậc p: 26 Tính sai số bình phương trung bình bậc p: .26 Quay lại bước 1, thay p p+1 26 Kết thúc: 26 2.2.2.2 Hàm hiệu biên độ trung bình .26 Hàm hiệu biên độ trung bình hiệu biên độ tín hiệu với dời p mẫu 26 iv Nếu x(n) tín hiệu tuần hoàn với chu kỳ T (mẫu) AMDF đạt cực tiểu tín hiệu bị dời đoạn T mẫu .27 Nhận dạng giọng người có tần số từ 80Hz (tương ứng với số mẫu n1=Fs / 80) đến 200Hz (tương ứng n2=Fs/200, Fs tần số lấy mẫu) 27 Tính AMDF tín hiệu với độ dời thay đổi từ n2 đến n1 Giả sử AMDF đạt cực tiểu ứng với độ dời P0 (mẫu) Đó chu kỳ tín hiệu (hoặc gần với chu kỳ tín hiệu nhất), tần số tín hiệu F0=Fs/P0 Giá trị đặc trưng tín hiệu mặt điệu 27 Do tiếng nói tín hiệu không dừng nên 30ms phải tính lại giá trị Tất giá trị tính đặc trưng từ dùng để huấn luyện mạng nơron 27 2.2.2.3 Giải thuật trích đặc trưng LPC 27 Bước 1: Lọc nhiễu, sử dụng lọc có hàm truyền: .27 với tần số cắt 300 Hz để lọc nhiễu tần số thấp micro gây 27 Bước 2: Pre-emphasis, sử dụng lọc có đáp ứng xung: 27 Bước 3: Tách điểm đầu cuối từ dùng hàm lượng thời gian ngắn: 27 Bước 4: Phân đoạn thành khung (khung khác với khung giai đoạn tìm điểm đầu điểm cuối), khung có N mẫu, độ chồng lấp M mẫu: .27 Bước 5: Cửa sổ hóa Hàm cửa sổ thông dụng cửa sổ Hamming định nghĩa sau: 28 Bước 6: Xác định hệ số dự báo tuyến tính dùng thuật toán Levinson-Durbin 28 Bước 7: Chuyển hệ số dự báo tuyến tính thành hệ số Cepstral 28 Và 28 Các hệ số Cepstral có độ tập trung cao đáng tin cậy so với hệ số dự báo tuyến tính Thông thường chọn Q =3/2P 28 Bước 8: Chuyển sang Cepstral có trọng số: 28 Bước 9: Tính đạo hàm Cepstral .28 Với µ số chuẩn (2K+1) số lượng khung cần tính K= giá trị thích hợp để tính đạo hàm cấp Vectơ đặc trưng tín hiệu gồm Q hệ số Cepstral Q hệ số đạo hàm Cepstral 28 2.2.2.4 Trích chu kỳ AMDF .28 v Bước 1, bước bước giống phương pháp LPC Đối với lọc nhiễu, sử dụng lọc thông cao có tần số cắt 60Hz tần số người từ 80Hz đến 200Hz 28 Bước 4: Tín hiệu xén bớt nhằm làm rõ chu kỳ bản: 29 Trong giá trị C khoảng 1/3 biên độ cực đại tín hiệu 29 Bước 5: Tín hiệu sau xén đưa đến hàm lấy hiệu biên độ trung bình: .29 Trong đó: N độ dài khung p lấy khoảng pitch tương ứng với tần số 80-200Hz Chọn P0 có d cực tiểu, chu kỳ pitch tần số Fs/P0 Đối với khung có d(P0) > 0.7 dmax(p) phân loại khung vô gán F0 = .29 Bước 6: Sau xác định F0 toàn âm tiết, cần phải xử lý khung có F0 = Nếu khung vô đầu hay cuối âm tiết, thay khung F0 khung hữu kế cận Nếu khung vô âm tiết thay F0 khung trung bình hai khung hữu hai bên 29 Bước 7: Đường nét F0 làm trơn lọc trung bình có trọng số với đáp ứng xung h=[0.1 0.2 0.4 0.2 0.1] 29 Bước 8: Do số ngõ vào mạng nơron cố định nên cần chuẩn hóa kích thước F0, nên phải chuẩn hóa độ lớn F0 chuyển qua thang log: .29 với i = 0,1, …, L-1 29 max giá trị cực đại cực tiểu F0 lấy toàn liệu, ∆ số dương để tránh log0 29 Bước 9: Lấy L giá trị đạo hàm logF0, ghép L giá trị logF0 với L giá trị đạo hàm thành vectơ đặc trưng .29 2.3 Kết luận chương 29 CHƯƠNG 3: CẤU TRÚC VÀ CÁC LUẬT HỌC MẠNG NƠRON .31 3.1 Khái niệm mạng nơron nhân tạo .31 Trong lớp mạng lại có nhiều mạng với tên gọi đặc trưng khác nhau, thể kiểu phân loại điển hình mạng nơron (hình 3.1) .32 3.2 Cấu trúc nơron nhân tạo 32 3.3 Các luật học mạng nơron 34 3.3.1 Học tham số 34 3.3.2 Học cấu trúc 36 3.5 Kết luận chương 44 vi CHƯƠNG 4: THIẾT KẾ CHƯƠNG TRÌNH NHẬN DẠNG VÀ CHUYỂN ĐỔI TIẾNG NÓI 46 4.1 Mô tả cấu trúc ứng dụng 46 4.1.1 Hoạt động 46 4.1.2 Dịch vụ .49 4.1.3 Bộ thu nhận 51 4.1.4 Trình cung cấp nội dung 52 4.2 Mô tả liệu 53 4.3 Mô tả minh hoạ mạng nơron nhận dạng tiếng nói 54 4.4 Sơ đồ trình hoạt động ứng dụng 54 4.5 Quá trình thực chương trình ứng dụng 55 4.6 Lưu đồ thuật toán chương trình .56 Ứng dụng sử dụng công nghệ điện toán đám mây lấy sở liệu từ máy chủ Google để nhận dạng tiếng nói 56 4.7 Mô ứng dụng máy tính 57 4.7.1 Mô ứng dụng với đoạn văn có câu 57 4.7.2 Mô ứng dụng với đoạn văn có hai câu 59 4.7.3 Mô môi trường kín, yên tĩnh 61 4.7.4 Thử nghiệm với kết đầu có gợi ý chữ gần 61 4.7.5 Thử nghiệm ứng dụng với kết đầu tiếng Anh 61 4.7.6 Thử nghiệm ứng dụng với đoạn văn có câu n lần .62 4.8 Hướng dẫn sử dụng chương trình 64 64 65 Bước 4: Ghi âm tiếng nói .66 66 Giao diện kết thực chương trình nhận dạng tiếng nói chuyển sang văn với lựa chọn kết gợi ý đầu (Hình 4.27) 67 Khi chọn kết n, ứng dụng đưa n lần kết khác nhau, kết xác, kết gợi ý để người sử dụng có thêm lựa chọn 67 67 4.9 Kết luận chương 68 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 69 Mặc dù hoàn thành việc áp dụng, tích hợp công cụ có sẵn để xây dựng thành công hệ thống nhận dạng chuyển đổi tiếng nói tiếng Việt sang vii văn hoạt động hệ điều hành Android thiết bị di động thông minh nhờ tích hợp công nghệ điện toán đám mây Google Nhưng tương lai, em tiếp tục thực việc nghiên cứu mạng nơron nhằm nâng cao trình độ hiểu biết để xây dựng hệ thống nhận dạng tiếng nói, giọng nói, âm thanh… có khả tương tự công nghệ Google 69 Ngoài ra, em phát triển đề tài nghiên cứu nhằm xây dựng hệ thống có khả phân tích, nhận dạng tiếng động âm qua điện thoại phục vụ công tác điều tra truy tìm kẻ bắt cóc tin để áp dụng lực lượng vũ trang hay ứng dụng thiết thực sống tương tác, thông dịch ngôn ngữ hoạt động lúc nhiều thiết bị, ghi lại giảng, báo cáo, thuyết trình, vấn… thành văn 70 TÀI LIỆU THAM KHẢO 71 Phụ lục viii Bước 3: Sử dụng ứng dụng Để chuyển đổi tiếng nói tiếng Việt sang thành đoạn văn bản, người dùng cần bấm vào nút “Bấm để nói” Chương trình gọi giao diện thực nhận dạng tiếng nói (hình 4.25) Hình 4.25: Giao diện Chương trình 65 Bước 4: Ghi âm tiếng nói Người sử dụng bấm thêm nút ghi âm “Nhấn để nói” nói Sau người sử dụng nói câu đó, điện thoại di động tự động ghi âm đưa số kết gợi ý gần (tuỳ người sử dụng chọn số kết hiển thị) (hình 4.26) Hình 4.26: Giao diện thực nhận dạng tiếng nói phương thức Google API 66 Giao diện kết thực chương trình nhận dạng tiếng nói chuyển sang văn với lựa chọn kết gợi ý đầu (Hình 4.27) Khi chọn kết n, ứng dụng đưa n lần kết khác nhau, kết xác, kết gợi ý để người sử dụng có thêm lựa chọn Hình 4.27: Giao diện Kết thực chương trình chuyển đổi tiếng nói sang văn 67 4.9 Kết luận chương Việc ứng dụng mạng nơron để giải toán nhận dạng tiếng nói phương pháp khả quan nhiều nhà khoa học giới nước áp dụng Ngay Google sử dụng mạng nơron để phục vụ cho toán lớn họ Do đó, việc sử dụng mã nguồn mở máy chủ liệu Google giúp cho toán đơn giản, tiết kiệm thời gian, công sức kết đạt vô khả quan Chính việc áp dụng, tích hợp giúp cho em có tâm huyết việc viết nên luận văn từ tiếp tục nghiên cứu để ứng dụng nhiều cho toán khác 68 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI Luận văn tốt nghiệp với đề tài “Nhận dạng chuyển đổi tiếng nói tiếng Việt sang văn bản” hoàn thành Qua thời gian nghiên cứu, thực luận văn, đề tài giải quyết, trình bày tổng quan phương pháp nhận dạng tiếng nói, tiếng nói, ngữ âm tiếng Việt, mạng nơron đưa số vấn đề cụ thể để giải thành công toán đặt tích hợp công cụ có sẵn để thiết kế hệ thống Một số kết đạt luận văn hạn chế cuối hướng phát triển đề tài: - Một số kết đạt • Nghiên cứu, tìm hiểu âm thanh, tiếng nói, ngữ âm tiếng Việt • Nghiên cứu lý thuyết mạng nơron ứng dụng mạng nơron • Giải toán nhận dạng chuyển đổi tiếng nói tiếng Việt sang văn - Những điểm hạn chế • Chưa thể nhận dạng xác giọng nói • Chưa áp dụng mạng nơron để xây dựng hệ thống nhận dạng tiếng nói tiếng Việt • Thực ứng dụng phải sử dụng công nghệ điện toán đám mây Google - Hướng phát triển Mặc dù hoàn thành việc áp dụng, tích hợp công cụ có sẵn để xây dựng thành công hệ thống nhận dạng chuyển đổi tiếng nói tiếng Việt sang văn hoạt động hệ điều hành Android thiết bị di động thông minh nhờ tích hợp công nghệ điện toán đám mây Google Nhưng tương lai, em tiếp tục thực việc nghiên cứu mạng nơron nhằm nâng cao trình độ hiểu biết để xây dựng hệ thống nhận dạng tiếng nói, giọng nói, âm thanh… có khả tương tự công nghệ Google 69 Ngoài ra, em phát triển đề tài nghiên cứu nhằm xây dựng hệ thống có khả phân tích, nhận dạng tiếng động âm qua điện thoại phục vụ công tác điều tra truy tìm kẻ bắt cóc tin để áp dụng lực lượng vũ trang hay ứng dụng thiết thực sống tương tác, thông dịch ngôn ngữ hoạt động lúc nhiều thiết bị, ghi lại giảng, báo cáo, thuyết trình, vấn… thành văn 70 TÀI LIỆU THAM KHẢO A Tiếng Việt [1] Ngô Xuân Bách (2006), Ứng dụng mô hình mạng nơron nhận dạng chữ viết tay rời rạc hạn chế trực tuyến Tablet PC, Đại học Công nghệ, ĐHQGHN [2] Bùi Công Cường, Nguyễn Doãn Phước (2006), Hệ mờ mạng nơron ứng dụng, NXB Khoa học kỹ thuật [3] Nguyễn Quang Hoan (2005), Nghiên cứu kết hợp phương pháp đại với giải thuật di truyền cho nhận dạng tiếng nói, Đề tài KHCN mã số 7405-KHCN-RD, Học viện Công nghệ Bưu Viễn thông, tr 48-58 [4] Nguyễn Quang Hoan (2012), Giáo trình Mạng nơron nhân tạo, Trường Đại học Sư phạm Kỹ thuật Hưng Yên [5] Trần Hoài Linh (2014), Mạng Nơron ứng dụng xử lý tín hiệu, NXB Bách khoa - Hà Nội [6] Ngô Quốc Tạo, Phạm Văn Hùng (2003), Xây dựng tham số cho mạng nơron lan truyền ngược, Kỷ yếu hội thảo Quốc gia, Thái Nguyên B Tiếng Anh [7] Kevin Gurney (2009), Neural Networks, Vanhoucke, Amazon's Book Store [8] Lauren Darcey, Shane Conder (2014), Android Application Development in 24 hours, SAMS, 800 East 96th Street, Indianapolis, Indiana, 46240 USA [9] Lawrence R Rabiner, Ronald W Schafer (1978), Digital Processing of Speech Signals, Prentice-Hall, Inc Englewood Cliffs, NewJersey C Internet [10] http://ebook.edu.vn 71 [11] http://android.vn [12] http://vi.wikipedia.org/wiki/Mạng_nơ-ron [13] http://vi wikipedia.org/wiki/Nhận_dạng_tiếng_nói [14] http://www.mevietnam.org/NgonNgu/DXK/dxk-cautrucamtiet.html [15] https://vi.wikipedia.org/wiki/Âm_vị_học_tiếng_Việt [16] http://www.zbook.vn/ebook/nhan-dang-tieng-noi-ung-dung-tich-hop-voicac-phan-mem-may-tinh-21524/ [17] http://googleresearch.com/2015/08/the-neural-networks-behind-googlevoice.html [18] http://neuralnetworksanddeeplearning.com/chap5.html [19] http://developer.android.com/intl/vi/guide/components/services.html [20] http://www.tutorialspoint.com/android/android_content_providers.htm [21] http://windows.microsoft.com/en-us/windows/set-speech-recognition [22] https://www.google.com/intl/en/chrome/demos/speech.html [23] http://truyenthongkhoahoc.vn/vn/module=news&iData=5110&iCat=1035 [24] http://tapchikhcn.udn.vn/ [25] http://huc.edu.vn/vi/spct/id150/ [26] http://www.w3.org/2005/Incubator/htmlspeech/XGR-htmlspeech20111206 72 PHỤ LỤC: CODE CHƯƠNG TRÌNH ỨNG DỤNG Tệp tin Main.xml Tệp tin Activity_main.xml 73 74 Tệp tin MainActivity.java package s2t.ungdung; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.SearchManager; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.speech.RecognizerIntent; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Spinner; import android.widget.Toast; public class MainActivity extends Activity { private static final int VOICE_RECOGNITION_REQUEST_CODE = 1001; private EditText metTextHint; private ListView mlvTextMatches; private Spinner msTextMatches; private Button mbtSpeak; 75 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mlvTextMatches = (ListView) findViewById(R.id.lvTextMatches); msTextMatches = (Spinner) findViewById(R.id.sNoOfMatches); mbtSpeak = (Button) findViewById(R.id.btSpeak); checkVoiceRecognition(); } public void checkVoiceRecognition() { Log.v("", "checkVoiceRecognition checkVoiceRecognition"); PackageManager pm = getPackageManager(); List activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); if (activities.size() == 0) { mbtSpeak.setEnabled(false); Toast.makeText(this, "Voice recognizer not present", Toast.LENGTH_SHORT).show(); } } public void speak(View view) { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName()); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, metTextHint.getText().toString()); 76 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); if (msTextMatches.getSelectedItemPosition() == AdapterView.INVALID_POSITION) { Toast.makeText(this, "Please select No of Matches from spinner", Toast.LENGTH_SHORT).show(); return; } int noOfMatches = Integer.parseInt(msTextMatches.getSelectedItem().toString()); intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, noOfMatches); startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == VOICE_RECOGNITION_REQUEST_CODE) if(resultCode == RESULT_OK) { ArrayList textMatchList = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); if (!textMatchList.isEmpty()) { if (textMatchList.get(0).contains("search")) { String searchQuery = textMatchList.get(0).replace("search", " "); Intent search = new Intent(Intent.ACTION_WEB_SEARCH); search.putExtra(SearchManager.QUERY, searchQuery); startActivity(search); 77 } else { mlvTextMatches.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, textMatchList)); } } } else if (resultCode == RecognizerIntent.RESULT_AUDIO_ERROR){ showToastMessage("Audio Error"); } else if (resultCode == RecognizerIntent.RESULT_CLIENT_ERROR){ showToastMessage("Client Error"); } else if (resultCode == RecognizerIntent.RESULT_NETWORK_ERROR){ showToastMessage("Network Error"); } else if (resultCode == RecognizerIntent.RESULT_NO_MATCH){ showToastMessage("No Match"); } else if (resultCode == RecognizerIntent.RESULT_SERVER_ERROR){ showToastMessage("Server Error"); } super.onActivityResult(requestCode, resultCode, data); } void showToastMessage(String message){ Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } } 78 Tệp tin Manifest.xml package="s2t.androidvoicerecognition" android:versionCode="1" android:versionName="1.0" > 79

Ngày đăng: 01/07/2016, 12:52

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan