Những năm gần đây, sự phát triển vượt bậc của khoa học kỹ thuật nói chung và công nghệ thông tin nói riêng đã tác động tới mọi mặt của đời sống xã hội, kinh tế, chính trị...Sự hiện diện của những ứng dụng tin học đã góp phần giải quyết những khó khăn do việc thiếu thông tin cũng như nâng cao năng suất lao động, góp phần tạo ra một lượng lớn của cải vật chất và thúc đẩy sự phát triển của xã hội.Gần đây, hệ điều hành Android đang dành được nhiều sự quan tâm nghiên cứu và thử nghiệm. Trong đó thiết kế hệ thống nhúng cũng là một lĩnh vực rộng lớn mà Android có thể khai thác. Trong quá trình thực tập tại viện CNTT em được giới thiệu một đề tài rất thú vị là hệ thống TTS, hệ thống có rất nhiều ứng dụng như đọc báo online, đọc tiếng việt cho người nước ngoài,… hệ thống này rất phát triển với các ngôn ngữ khác nhưng chưa thực sự phát triển với tiếng Việt. Từ thực tế đó em nảy ra ý tưởng viết một hệ thống TTS tiếng việt trên hệ thống nhúng sử dụng hệ điều hành Android.Với đề tài “ứng dụng tạo tiếng nói tiếng việt từ văn bản trên kit mini2440” em cũng đã đạt được một số kết quả nhất định. Đó sẽ là hành trang giúp em rất nhiều trong thời gian học tập và làm việc sau này.Để có thể hoàn thành được đồ án là nhờ sự giúp đỡ to lớn của các thầy cô giáo trong trường Đại học Bách Khoa Hà Nội nói chung và các thầy cô trong khoa Công nghệ Thông tin, bộ môn Kĩ Thuật Máy Tính nói riêng. Các thầy cô đã tận tình giảng dạy, truyền đạt cho em những kiến thức, những kinh nghiệm quý báu trong suốt 5 năm học tập và rèn luyện tại trường. Xin được gửi tới các thầy, các cô lời cảm ơn chân thành nhất đặc biệt đến thầy Dư Thanh Bình Giảng viên bộ môn Kĩ Thuật Máy Tính , khoa Công nghệ thông tin, trường Đại học Bách Khoa Hà Nội đã hết lòng giúp đỡ, hướng dẫn và chỉ bảo tận tình trong quá trình em làm đồ án tốt nghiệp.
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI ỨNG DỤNG TẠO TIẾNG NÓI TIẾNG VIỆT TỪ VĂN BẢN TRÊN KIT MINI2440 Giáo viên hướng dẫn: ThS Dư Thanh Bình Sinh viên thực hiện: Phí Tùng Lâm 20071670 KTMT - K52 Nguyễn Trung Dũng 20070583 KTMT - K52 LỜI NÓI ĐẦU Những năm gần đây, phát triển vượt bậc khoa học kỹ thuật nói chung công nghệ thông tin nói riêng tác động tới mặt đời sống xã hội, kinh tế, trị Sự diện ứng dụng tin học góp phần giải khó khăn việc thiếu thông tin nâng cao suất lao động, góp phần tạo lượng lớn cải vật chất thúc đẩy phát triển xã hội Gần đây, hệ điều hành Android dành nhiều quan tâm nghiên cứu thử nghiệm Trong thiết kế hệ thống nhúng lĩnh vực rộng lớn mà Android khai thác Trong trình thực tập viện CNTT em giới thiệu đề tài thú vị hệ thống TTS, hệ thống có nhiều ứng dụng đọc báo online, đọc tiếng việt cho người nước ngoài,… hệ thống phát triển với ngôn ngữ khác chưa thực phát triển với tiếng Việt Từ thực tế em nảy ý tưởng viết hệ thống TTS tiếng việt hệ thống nhúng sử dụng hệ điều hành Android Với đề tài “ứng dụng tạo tiếng nói tiếng việt từ văn kit mini2440” em đạt số kết định Đó hành trang giúp em nhiều thời gian học tập làm việc sau Để hoàn thành đồ án nhờ giúp đỡ to lớn thầy cô giáo trường Đại học Bách Khoa Hà Nội nói chung thầy cô khoa Công nghệ Thông tin, môn Kĩ Thuật Máy Tính nói riêng Các thầy cô tận tình giảng dạy, truyền đạt cho em kiến thức, kinh nghiệm quý báu suốt năm học tập rèn luyện trường Xin gửi tới thầy, cô lời cảm ơn chân thành đặc biệt đến thầy Dư Thanh Bình - Giảng viên môn Kĩ Thuật Máy Tính , khoa Công nghệ thông tin, trường Đại học Bách Khoa Hà Nội hết lòng giúp đỡ, hướng dẫn bảo tận tình trình em làm đồ án tốt nghiệp Em xin cảm ơn giúp đỡ tận tình anh Vũ Tất Thắng thành viên phòng tiếng nói hình ảnh viện CNTT trình xây dựng phần mềm Cuối cùng, em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè động viên, chăm sóc, đóng góp ý kiến giúp đỡ em trình học tập, nghiên cứu hoàn thành đồ án tốt nghiệp Hà Nội, tháng năm 2012 Sinh viên Mục lục CHƯƠNG I MỞ ĐẦU Nhiệm vụ đồ án Đồ án nhằm mục đích xây dựng ứng dụng chuyển văn chữ viết tiếng việt thành tiếng nói (Text to Speech) thiết bị nhúng KIT phát triển Mini2440 1.1 Môi trường thực đồ án Đồ án thực viên công nghệ thông tin Việt Nam – Hoàng Quốc Việt Hà Nội 1.2 1.3 Bố cục đồ án Đồ án gồm năm phần chính: − − − − − Phần nhìn tổng quan đồ án Phần hai vấn đề cách giải vấn đề: toán TTS thực tế gì, vấn đề gặp phải , đề hướng giải Phần hai tảng sẵn có Phần bốn trình thực kết quả, phần thực chưa thực Phần năm kết luận, ưu nhược điểm hướng phát triển vấn đề CHƯƠNG II ĐẶT VẤN ĐỀ VÀ GIẢI PHÁP Nhu cầu thực tế Hiện giới, vấn đề sử dụng phần mềm âm không mẻ, nhiên đặc thù ngôn ngữ khác nên mô hình chung cho việc xử lý cho tất ngôn ngữ Trên thực tế chưa có mô hình xử lý tiếng nói tiếng việt mức chung cho tất sử dụng dù sử dụng tiếng nói tiếng việt nhu cầu không nhỏ Tương tự Tiếng Anh, viện CNTT xây dựng phần mềm chuyên biệt TTS tiếng việt, có server TTS hoạt động Vậy sử dụng hệ thống 2.1 Chúng em lựa chọn xây dựng ứng dụng hệ thống ứng dụng thử nghiệm cho hệ thống TTS trên, mở rộng cho ứng dụng TTS sau Hệ thống cho phép phát tiếng nói từ đoạn văn tiếng việt nhập vào Hệ thống xuất phát từ nhu cầu thực tế cần tạo thiết bị cầm tay có khả phát tiếng nói dựa đoạn văn nhập vào, có tác dụng nhiều lĩnh vực: − Người nước ngoài, việt kiều có nhu cầu nghe học tiếng việt − Các bệnh nhân bị chấn thương, bệnh tật ảnh hưởng đến chức nói dễ dàng giao tiếp − Đọc tin nhắn, đọc báo Online thiết bị di động − … Từ thực tế cho thấy cần xây dụng hệ thống thiết bị cầm tay, cài đặt phần mềm TTS lên đó, có khả kết nối mạng để sử dụng server TTS Có thể xây dựng hệ thống điện thoại smart phone phổ biến thị trường thiết bị xách tay khác máy tính bảng, laptop ,… sử dụng được, trình thực tập chúng em chọn hệ điều hành nhúng Android, sử dụng KIT phát triển Mini2440 để làm phần cứng cho thiết bị cầm tay Mặc dù xây dựng phần cứng Mini2440 ứng dụng hoàn toàn cài đặt thiết bị có sử dụng hệ điều hành Android, lĩnh vực rộng lớn thực tế môi trường Việt Nam 2.2 Phạm vi nhiệm vụ Các nhu cầu cần có đề tài: − Nghiên cứu Kit Mini2440 − Nghiên cứu hệ điều hành Android cách cài đặt sử dụng Android Mini2440 − Cách xây dựng phần mềm android − Xây dựng ứng dụng thực tế TTS hệ thống Các nhiệm vụ cần thực hiện: − Xây dựng kết nối từ KIT Mini2440 đến server TTS − Xây dựng hệ thống phát tiếng nói Mini2440 − Xây dựng hệ thống nhập liệu tiếng việt cho Android CHƯƠNG III NỀN TẢNG CÓ SẴN Embedded Linux Embedded Linux hệ thống hoàn chỉnh sử dụng cho thiết bị, bao gồm Linux kernel ứng dụng kèm theo (kết hợp gọi distribution) Cụm từ “embedded” thường đề cập kernel thật chất phiên Linux kernel dành riêng cho hệ thống nhúng Linux kernel source code sử dụng chung để compile cho thiết bị, từ thiết bị nhúng, đến máy PC server lớn, platform có option hiệu chỉnh phù hợp đặc biệt dành cho platform 3.1 Các Embedded Linux distributions mua từ nhà sản xuất (Monta Vista, Wind River System ), distribution phát triển hoàn chỉnh cài đặt cài đặt hệ điều hành cho máy PC thông thường, kèm với distribution công cụ phát triển (toolchain, debugger, project management software image builder ) Tuy nhiên, việc xây dựng hệ thống Embedded Linux từ phần từ rời rạc ban đầu giúp có thấu hiểu sâu hoạt động hệ thống tốn chi phí chi trả cho nhà cung cấp Các thành phần cấu tạo nên hệ thống Embedded Linux bao gồm boot loader, Linux kernel, ứng dụng Tất thành phần tìm thấy phiên open source tự chỉnh sửa, thay đổi cho phù hợp với thiết bị Embedded Linux chạy processor có kiến trúc nhỏ 32bit Tuy nhiên thời gian gần đây, công nghệ system-on-chip (SOC) phát triển mạnh, dẫn đến việc hạ giá thành sản xuất microprocessor, đồng thời nhớ RAM flash rẻ có dung lượng lớn tạo nên thuận lợi cho việc chuyển sang phát triển hệ thống nhúng có sử dụng Embedded Linux Các hệ thống nhúng ngày bên cạnh chức cần thiết hỗ trợ thêm chức phụ (web server, firewall, nghe nhạc ) thông qua hệ thống Embedded Linux Việc sử dụng Embedded Linux cho hệ thống nhúng giúp giảm thời gian thiết kế phát triển, thân Linux kernel thiết kế theo module Chúng ta dễ dàng tìm nhiều module có sẵn hiệu TCP/IP stack, X-server cho ứng dụng GUI, tìm thấy driver cho thiết bị nhúng viết sẵn kernel Một điểm mạnh khác Embedded Linux open source, điều cho phép người thiết kế can thiệp sâu vào dịch vụ module mà hệ điều hành cung cấp Người thiết kế hiểu rõ hàm mà họ gọi chí thay đổi, tối ưu hàm cho thiết bị sử dụng Người thiết kế dựa vào module driver có sẵn để tham khảo cho driver viết Tính open source giúp code hỗ trợ kernel có tính tin cậy cao, trước đưa vào kernel source tree, code test nhiều cộng đồng chí có lỗi xảy có patch thay thời gian ngắn Tính sẵn sàng Embedded Linux cao Ít có hệ điều hành hỗ trợ nhiều platform device driver Linux Ngoài hỗ trợ phần cứng Linux hỗ trợ giao thức tiêu chuẩn (wifi, bluetooth, ) Tất điều cho thấy tính hiệu hệ thống Embedded Linux điểm mạnh làm cho xu hướng phát triển Embedded Linux ngày trở nên quan trọng, nhiều công ty đầu tư vào lĩnh vực nhiều người yêu thích Embedded Linux Giới thiệu Android 3.2.1.Lịch sử Android Ban đầu Android hệ điều hành dựa lõi Linux cho thiết bị cầm tay công ty Android Inc thiết kế Vào 2005, Google mua lại công ty bắt đầu xây dựng Android Platform Những nhà đồng sáng lập Android chuyển sang làm việc Google gồm có Andy Rubin (đồng sáng lập công ty Danger), Rich Miner (đồng sáng lập công ty Wildfire Communications), Nick Sears (từng phó chủ tịch T-Mobile), Chris White (trưởng nhóm thiết kế phát triển giao diện WebTV) Và sau vào năm 2007 thuộc liên minh thiết bị cầm tay (Open Handset Alliance), mục tiêu liên minh nhanh chóng đổi để đáp ứng tốt cho nhu cầu người tiêu dùng, kết tảng Android Android sản xuất nhằm đáp ứng nhu cầu nhà sản xuất, nhà khai thác lập trình viên cho thiết bị cầm tay 3.2 Phiên đời vào tháng 11 năm 2007, hãng T –mobile công bố điện thoại Android T-mobile G1, vài ngày sau Google lại công bố phiên Android SDK release Candidate 1.0 Trong tháng 10/2008 Google cấp giấy phép mã nguồn mở cho Android Platform Khi android phát hành số mục tiêu kiến trúc cho phép ứng dụng tương tác với sử dụng lại thành phần ứng dụng khác Việc tái sử dụng không áp dụng cho dịch vụ mà cho thành phần liệu giao diện người dùng Cuối năm 2008, Google cho phát hành thiết bị cầm tay có tên Android Dev Phone 1, chạy ứng dụng Android mà không phụ thuộc vào nhà cung cấp điện thoại di động Mục đích thiết bị cho phép nhà phát triển thực thí nghiệm thiết bị thực chạy Android mà kí hợp đồng Cùng thời gian Google cho phiên vá lỗi 1.1 nhiên chưa hỗ trợ solf-key mà dùng bàn phím vật lý Đến tháng 4/2009, SDK 1.5 giả vấn để với số nâng cấp: nâng cao khả ghi âm, vật dụng, live folder,… 3.2.2.Tính mở hệ điều hành Android Android xây dựng phép nhà phát triển tạo ứng dụng di động hấp dẫn tận dụng tất tính điện thoại Nó xây dựng thực mở Ví dụ, ứng dụng kêu gọi chức lõi điện thoại thực gọi, gửi tin nhắn văn bản, sử dụng máy ảnh, cho phép nhà phát triển tạo phong phú nhiều ứng dụng theo yêu cầu người dùng Android xây dựng Linux Kernel Hơn nữa, sử dụng máy ảo tuỳ chỉnh thiết kế để tối ưu hóa nhớ tài nguyên phần cứng môi trường di động 3.2.3.DEVING máy ảo DALVIK Dalvik máy ảo cho phép chạy ứng dụng Java thiết bị Android Nó chạy ứng dụng chuyển đổi thành file thực thi Dalvik (dex) Định dạng phù hợp cho hệ thống thường bị hạn chế nhớ tốc độ xử lý Khi viết ứng dụng cho Android dịch sang bytecode Java, sau để thực thi ưng dụng Android nhà phát triển cần công cụ dx, công cụ chuyển code sang dạng dex bytecode đóng vai trò chế ảo thực thi ứng dụng Android 3.2.4.Kiến trúc Android Hình 1- kiến trúc Android Tầng ứng dụng Là tầng dành để viết ứng dụng người dùng viết tất Java Có số phần có sẵn như: brower, camera, phone,… Application FlameWork Bằng cách cung cấp tảng phát triển mở, Android cung cấp cho nhà phát triển tảng có khả xây dựng nên ứng dụng phong phú sáng tạo Nhà phát triển tụ vận dụng phần cứng, thiết bị chạy nền, dịch vụ hệ thống, … Cơ ứng dụng dịch vụ hệ thống, bao gồm: • Một tập hợp nhiều View có khả kế thừa lẫn dùng để thiết lập phần giao diện ứng dụng: gridview, table view, … • Một “ Content Provider” cho phép ứng dụng truy suất từ ứng dụng khác chia sẻ ứng dụng • Một “Resource Manager” cung cấp tới tài nguyên mã nguồn: localized strings, graphis, and layouts files • Một “ Notification Manager” cho phép ứng dụng hiển thị custom alerts status bar 10 tác, bêb cạnh hai text view chứa tên đường dẫn đến file tương ứng, ấn menu để chọn xóa Hình 26 – list file âm Linear layout thứ tư seebar thể cho đoạn âm chạy, tùy chỉnh đoạn âm vị trí muốn nghe Linear layout thứ năm nút bấm chạy, dừng, tạm dừng, chạy lại từ đầu cho đoạn âm liệt kê List view trên, muốn xóa đoạn âm bấm vào menu chọn delete Hình 27 – điều khiển phát âm Làm gõ tiếng việt với Android 4.4.1.Cấu tạo chung tiếng việt Đầu tiên, để xử lý tiếng việt cần phải mô tả thành phần chữ tiếng việt Hệ thống âm vị tiếng việt có: 4.4 35 - - - 11 nguyên âm đơn (monothong): a, ă, â, e, ê, i, o, ô, ơ, u, Chữ y đứng chữ i đứng hai lối viết nguyên âm, không tính y 30 nhị trùng âm (diphthong): ai, ao, au, ay, âu, ây, eo, êu, ia, iê, iu, oa, oă, oe, oi, ôi, ơi, ua, uâ, uê, ui, uô, uơ, uy, ưa, ưi, ươ, ưu, oo, ôô; Hai âm sau có dùng: oo (cái soong), ôô (ôốc dôộc, tức ốt dột nói giọng Quảng Bình); 12 tam trùng âm (triphthong): iêu, oai, oay, uây, uôi, uyê, uyu, ươi, ươu, uya, oao, oeo; yêu không khác iêu âm nên không tính 15 phụ âm đơn (consonant): b, c(k,qu), d, đ, g, h, l, m, n, p, r, s, t, v, x; phụ âm kép: ch, gi, kh, nh, ng, ph, th, tr Tổng cộng số âm vần 76 - - (accent) không, huyền, hỏi, sắc, ngã, nặng.Cộng 82 âm vị (phoneme) 17 phụ âm đứng đầu: b, d, đ, g, h, k, l, r, s, v, x, qu, gi, kh, ph, th, tr; phụ âm đứng đầu cuối: c, m, n, p, t, ch, nh, ng; p đầu phụ âm đầu du nhập từ nước ngoài, tính phụ âm đầu 10 nguyên âm kết thúc chữ (nguyên âm lửng): ă, â, iê, oă, uâ, uô, oo, ôô, ươ, uyê; 28 nguyên âm kết thúc chữ, tức âm đứng sau chúng (nguyên âm cuối): ai, ao, au, ay, âu, ây, eo, êu, ia, iu, oi, ôi, ơi, ui, ưa, ưi, ưu, iêu, uôi, uyu, ươi, ươu, oai, oay, uây, uya, oeo, oao; Một số luật thói quen Khi xây dựng lý thuyết ta không áp dụng luật mà đưa vào sau lựa chọn − − 36 g ng đứng liền trước e, ê, i viết gh ngh c, k, q âm vị đồng nhất, theo thói quen, viết là: • c đứng trước: + a (ca hát),ă (cắt đứt),â (cất giấu) + o (co quắp), ô (cô gái),ơ (cơ khí) + u (cu Tèo), (cư trú) + (cai quản), ao (cao xa), au (cau trầu) + ay (cay đắng), âu (câu cá), ây (cây cối), oi (coi ngó) + ôi (côi cút), (cơi trầu) ua (cua ghẹ), ui (củi lửa), ưa (cưa gỗ),ưi (khung cửi) ươ (cương quyết), ưu (cưu mang) ươi (cười cợt), uôi (cuối cùng) k đứng trước: + e (kẻ thù), ê (hạt kê) + i hay y (kí sự, ký sự) + eo (keo kiệt), + (kêu gào) + ia (kia kìa), iê (kiên quyết), + iu (kiu kíu - tiếng chó kêu), iêu (kiêu sa); qu ứng trước: + oa (qua loa-> qu + oa), + oă (quăn tít -> qu + oăn), oe (que kem -> qu + oe), uy (vu quy -> qu + uy), + uơ (quơ quào -> qu + uơ), uô (tổ quốc -> qu + uốc), uê (quê hương -> qu + uê), + uâ (quân nhân -> qu + uân), oai (quai xách -> qu + oai), oay (quay tròn -> qu + oay), uây (quây quần -> + qu + uây), + uyê (chim quyên -> qu + uyên), + uya ( giày quya -> qu + uya - phiên âm tiếng Pháp cuir), oeo (chết queo -> qu + oeo) + oao (quơ quào -> qu + oào) + Luật viết lược chữ u hay chữ o gặp "qu + u " hay "qu + o " cách giải thích cho tranh cãi + qua = qu + a hay q + ua (hai cách không đúng, "qua" vần với "loa" "qua loa", nên qua + = qu + oa + + + • • 4.4.2.Các kiểu gõ tiếng việt Hiện có cách gõ tiếng việt sử dụng rộng rãi, kiểu gõ VIQR, VNI TELEX , sử dụng kiểu gõ Auto gõ dấu tất cách gõ dấu kiểu Các kiểu gõ chi tiết sau: 37 Telex Input VNI Input VIQR Input Method Method Method Cách gõ Telex Cách gõ VNI Cách gõ VIQR a circumflex - â aa a6 a^ e circumflex - ê ee e6 e^ o circumflex - ô oo o6 o^ a breve - ă aw a8 a( o horn - ow o7 o+ u horn - uw u7 u+ d stroke - đ dd d9 Dd acute - sắc s ' grave - huyền f ` dot below - nặng j hook above - hỏi r ? tilde - ngã x ~ remove diacritics - xóa dấu z Ví dụ: Tiếng Việt Tieesng Vieejt Tie61ng Vie65t Tie^'ng Vie^.t Accents vs Vowels Dấu với nguyên âm Để tiện xây dựng chương trình sử dụng quy định dấu kiểu gõ VNI, kí tự dấu mũ, biểu diễn thông qua số từ đến 9, kiểu gõ lại chuyển sang tương ứng với kiểu gõ Đối với kiểu gõ xây dựng lớp đại diện cho kiểu gõ kế thừa từ interface InputMethod, lớp thực chuyển kí tự dấu kiểu gõ tương ứng sang kí tự dấu kiểu gõ VNI Tất lớp kế thừa InputMethod sử dụng chung phương thức getAccentMark ghi đè từ interface để xuất kí tự dấu tương ứng Cụ thể với kiểu gõ Telex ta có: 'S' 'F' 'R' 'X' 'J' 38 's' 'f' 'r' 'x' 'j' accent = '1' accent = '2' accent = '3' accent = '4' accent = '5' 'A' 'a' 'E' 'e' 'O' 'o' accent = '6' 'W' 'w' accent = '7' 'D' 'd' accent = '9' 'Z' 'z' accent = '0' Với kiểu gõ kí tự dấu dù viết hoa hay không coi nhau, “S” hay “s” có nghĩa dấu “sắc” Tương tự với kiểu gõ Viqr: '\' '`' '?' '~' '.' '^' '*' '+' '(' '-' accent = '1' accent = '2' accent = '3' accent = '4' accent = '5' accent = '6' accent = '7' accent = '9' accent = '0' 4.4.3.Thuật toán để lập trình gõ Nguyên tắc chung gõ tiếng việt sử dụng hook bàn phím – tức chặn thông điệp bàn phím: trạng thái bàn phím, mã phím, thông điệp,… Sau dùng thuật giải riêng để xử lý chuỗi nhập vào thành chuỗi tiếng việt tương ứng xuất thiết bị tương ứng Đối với Android ta bắt kiện phím thông qua hàm OnKey() bàn phím Hàm xử lý kiện ấn phím thuộc bàn phím cứng, thông tin nhập vào bao gồm keycode – mã phím ấn, thông qua số xác định phím ấn phím gì, thứ hai keyevent kiện phím bấm, kiện phím ấn ANTION_DOWN Các thông tin chuyển qua xử lý lớp VietkeyListener qua hàm setKey để xuất kí tự tiếng việt Ngoài thiết bị bàn phím cứng mà sử dụng bàn phím ảo xử lý tương tự thông qua kiện addtext() bàn phím ảo xây dựng kèm theo chương trình, sử dụng hàm setkey3 lớp 39 VietKeyListener để xuất tiếng việt Do chế hoạt động có nhiểu điểm khác nên cần xây dựng nên hàm khác loại bàn phím để chương trình chạy nhiều môi trường Hoạt động chương trình gõ tiếng việt thu nhận phím user gõ vào, sau xử lý cho chuỗi xử lý Cuối cần phải xuất đến thành phần chứa chuỗi xử lý Nhưng xuất cửa sổ tồn chuỗi ban đầu chuỗi xử lý Vậy nên trước hết phải xóa ký tự ban đầu Sau xuất chuỗi xử lý sau Việc xóa chuỗi ban đầu tương đối phức tạp Chúng ta vào chuỗi đệm mà ta nhận thêm ký tự từ bàn phím vào để tìm "từ cuối chuỗi" để xử lý Ví dụ ta có chuỗi đệm sau : “Câu lacj” Vì từ “Câu” xử lý nên chạy qua để kiểm tra mà lấy từ cuối Đó chữ “lacj” Có nhiều cách để lấy từ cuối câu Một cách ta viết sẵn hàm xác định vị trí từ cuối chuỗi Sau lúc cần ta gọi hàm truyền tham số để xác định từ cuối Trong chương trình, hàm xác định vị trí từ vị trí hàm getCurrentWord lớp VietkeyListenner Hàm trả chuỗi từ vị trí của trỏ, đồng thời xác định vị trí bắt đầu kết thúc từ với biến start end Các biến đầu vào bao gồm pos vị trí trỏ source chuỗi đầu vào cần xác định từ vị trí trỏ Ở ví dụ hàm trả chuỗi “lacj” trỏ nằm vị trí sau kí tự j “lacj”, start vị trí bắt đầu từ end Sau dựa vào hai biến start end để tiến hành thay kí tự nằm khoảng xác định kí tự đưa dạng tiếng việt Chuỗi trả hàm chuỗi đưa vào đệm để xử lý.Sau tùy vào thủ tục cài đặt để để xử lý chuỗi nguyên âm tương ứng Ví dụ: Ta xử lý dấu câu ( kiểu Telex) ta thu nhặt ký tự "f,s,r,x,j" ta gọi hàm Trong hàm ta cần lấy chuỗi nguyên âm để xác định vị trí đặt dấu Nếu không tìm thấy ta đặt tiếp ký tự nhận vào đệm Nếu tìm thấy, ví dụ chữ 40 chữ "a" ta nhận ký tự gõ "j" Vì nguyên âm nên đặt dấu vị trí nguyên âm Vậy ta chữ Ta phải thay chữ "a" chuỗi đệm ban đầu "ạ" Sau xác định số ký tự cần xóa cửa sổ Focus vào chuỗi đệm, để sau dùng hàm hay thủ tục để xóa ký tự ban đầu cửa sổ Focus Cụ thể ví dụ - từ "lacj" chuỗi đệm "Câu lacj" Chuỗi có độ dài vị trí tìm thấy chữ "a" 6.Vậy số ký phím cần xóa độ dài chuỗi đệm trừ vị trí chữ "a" (vị trí chữ chuỗi nguyên âm tìm được) Sau cho cho chuỗi đệm "Câu lạc" chuỗi đệm khác "ạ" đồng thời ghép nốt ký tự lại sau chữ "a" chuỗi đệm vào chuỗi này.Cụ thể "ạc" Bây ta xóa chuỗi "acj" cửa sổ Focus xuất chuỗi "ạc" xử lý Thế cửa sổ chuỗi "Câu lạc” Toàn công việc nhận biết thay chuỗi thực hàm setkey() lớp VietkeyListenner Hàm gọi có kiện ấn phím xẩy ra, thực nhận kí tự xuất kí tự tiếng việt thay vào EditText chương trình Đầu tiên cần lấy vào biến đầu vào bao gồm: vị trí trỏ (lấy qua hàm getSelectionStart), chuỗi có - doc( lấy qua hàm getText), kí tự vị trí (vị trí trỏ chuỗi có), kí tự nhập vào(lấy qua biến keyCode) Sau tiến hành xử lý viết tắt, chương trình tìm kiếm tổ hợp kí tự tương ứng bảng viết tắt thay thành từ hoàn chỉnh người dùng gõ vào Ví dụ, bảng viết tắt quy định “nhưng” viết “nu” gõ “nu” vào chương trình tự động thay “nu” thành “nhưng” đoạn văn hiển thị ô nhập Tiếp theo cần tiến hành lấy vị trí đặt dấu cho nguyên âm, nguyên âm đơn dấu đặt trực tiếp lên nguyên âm đó, nguyên âm đôi hay ba cần xác định vị trí đặt dấu cho nguyên âm Và theo kiểu bỏ dấu dấu đặt kiểu “oà” thay “òa”,… âm đầu “gi” “qu” tự động để vị trí đặt dấu lên tức coi “gi” “qu” âm đầu không đặt dấu vào i u âm đầu 41 Hàm shiftAccent xây dựng lớp VietkeyInput có tác dụng xác định vị trí dấu đánh từ tương ứng, với curWord từ vị trí keyChar kí tự nhập vào Cuối tiến hành đặt dấu cho nguyên âm dựa vào kí tự dấu đưa vào Việc tạo kí tự dấu cho nguyên âm thực hàm ToVietWord lớp VietkeyInput, sau xử lý ta cần tiến hành thay tương ứng từ đệm thành từ xử lý thêm dấu: Lớp Vietkeylistenner phụ trách xuất kí tự EditText xử lý kí tự nhập vào lớp VietKeyInput xử lý Lớp VietKeyInput cung cấp hàm xây dựng kí tự tiếng việt, hàm lớp bao gồm shiftAccent toVietword, Trong chương trình gõ xây dựng riêng bên phân lớp để nhập tiếng việt vào không xây dựng riêng bên ngoài, điều đảm bảo chương trình chạy sau cài đặt mà không cần cài đặt thêm thành phần khác kèm theo, thực tế có số gõ tiếng việt xây dựng riêng nhân Android có nhiều phiên khác gõ không chạy phiên Android cũ, điều giải cách Chương trình xây dựng nhân Android thấp 1.5 đảm bảo chương trình chạy hầu hết thiết bị chạy Android Ngoài chương trình có bàn phím ảo riêng hỗ trợ nhập tiếng việt, cài đặt cho thiết bị khó lắp đặt bàn phím cứng cho người dùng không muốn sử dụng bàn phím cứng, đồng thời đảm bảo tiêu chí chương trình chạy mà không cần cài thêm chương trình bàn phím ảo vào nhân Linux đảm bảo tài nguyên sử dụng 42 Hình 28 – lưu đồ xử lý tiếng việt 43 Giao tiếp với server Isolar 4.5.1.Gửi yêu cầu đến server Sau nhập văn tiếng việt,chúng ta phải gửi văn đến server để yêu cầu chuyển thành file âm 4.5 Quá trình yêu cầu thực chất gửi gói tin POST đến server với liệu yêu cầu đoạn văn tiếng việt mà người dùng nhập: Data_Sent = "voice=male1&SSinput=" + data + "&formSubmit=Submit"; Data_sent liệu gửi với gói tin POST data văn tiếng việt mà người sử dụng nhập từ bàn phím Mô sau: Hình 29 – mô hình kết nối xử lý tiếng nói Sau gửi gói tin POST,server gửi gói tin phản hồi,trong có link chứa đường dẫn file âm tiếng việt,nhiệm vụ phải tải file âm phát loa 4.5.2.Stream file âm Với đoạn văn nhỏ,khi chuyển sang tiếng nói,dung lượng nhỏ không đáng kể,khi chương trình download hết phát loa bình thường.Nhưng đoạn văn lớn khả sau người sử dụng ấn nút yêu cầu đến server download file âm lớn nhiều thời gian,vì vậy,chương trình stream file âm chạy lúc download 44 Mô sau: Hình 30 – mô hình hệ thống chương trình Từ server,chương trình download file âm buffer Khi buffer đủ số lượng định,chương trình copy buffer sang chỗ khác chạy file copy đó.Đến chạy hết file copy,tiếp tục copy file buffer download sang file khác tua đến đoạn file copy trước chạy.Khi play hết file,copy file download đầy đủ thẻ nhớ xóa hết file buffer lại.Giải thuật gọi double-buffer Sở dĩ phải sử dụng giải thuật file sử dụng để lưu liệu download từ server ,nếu chạy file gây xung đột hệ thống,vì vậy,chương trình làm theo hướng an toàn lưu file buffer copy khác để chạy Chia sẻ mạng Ubuntu qua dây Ethernet Chia sẻ mạng(Internet Connection Sharing - ICS) khả mà máy tính dùng mạng chia sẻ băng thông mạng với hay nhiều máy tính khác Để vậy, máy tính có kết nối mạng phải cấu Cổng Internet(Internet Gateway) Máy tính chia sẻ kết nối mạng trực tiếp thông qua cổng internet 4.6 45 4.6.1.Mô hình hoạt động Hình 31 – chia sẻ mạng qua dây erthenet Để chia sẻ qua dây ethernet, bên phía máy ubuntu,địa IP phải đặt tĩnh: sudo ip addr add 192.168.1.5/24 dev eth0 Hoặc : sudo ifconfig eth0 192.168.1.5 netmask 255.255.255.0 up Sau đó, ta phải cấu hình bảng ip bên máy chia sẻ để gói tin từ máy chia sẻ thẳng qua Ubuntu gateway 4.6.2 Cấu hình NAT sudo iptables -A FORWARD -o eth0 -i eth1 -s 192.168.0.0/24 -m conntrack ctstate NEW -j ACCEPT sudo iptables -A FORWARD -m conntrack ctstate ESTABLISHED,RELATED -j ACCEPT 46 sudo iptables -A POSTROUTING -t nat -j MASQUERADE Lệnh thứ thứ hai cho phép chuyển tiếp gói tin, lệnh thứ ba giúp dịch địa mạng(NAT),khi đó,gói tin từ máy chia sẻ thẳng qua Gateway trung gian đến thẳng địa yêu cầu,sau lúc gói tin theo đường ngược lại Lưu lại bảng IP để lần sau ta cấu hình lại gateway nữa: sudo iptables-save | sudo tee /etc/iptables.sav Sửa file /etc/rc.local thêm vào trước dòng "exit 0" : iptables-restore < /etc/iptables.sav 4.6.3 Cấu hình routing Cấu hình cổng gateway để truyền dẫn gói tin hai cổng cách: sudo sh -c "echo > /proc/sys/net/ipv4/ip_forward" Sửa file /etc/sysctl.conf, thêm vào dòng sau: net.ipv4.conf.default.forwarding=1 net.ipv4.conf.all.forwarding=1 Khi xong cấu hình bên phía gateway 4.6.4 Cấu hình bên máy nhận(mini2440) Bên phía mini2440,ta cần cấu hình địa ip tĩnh cho cổng ethernet cấu hình gói tin mạng qua cổng Cấu hình địa ip tĩnh cho mini2440,trên hình boot: ifconfig eth0 192.168.1.230 netmask 255.255.255.0 up Cấu hình default gateway để gói tin mạng qua cổng máy chia sẻ 47 route add default gw 192.168.1.5 Và kết quả: Hình 32 – kết chia sẻ mạng CHƯƠNG V KẾT LUẬN Với mức độ phát triển hệ thống nhúng hệ điều hành Android VIệt Nam, ứng dụng cho lĩnh vực ngày phát triển rộng rãi, ứng dụng TTS hệ thống nhúng Android sử dụng rộng rãi Ứng 48 dụng cho chúng em xây dựng bước mở đầu cho chúng em tham gia vào lĩnh vực mẻ đầy tiềm Mặc đù cố gắng nghiên cứu, chưa có kinh nghiệm việc thiết kế phát triển phần mềm nhúng lĩnh vực nghiên cứu lạ lẫm nên chắn không tránh khỏi sai sót, mong thầy cô bạn đóng góp ý kiến để em rút kinh nghiệm cho công việc sau • − − − 49 Hướng phát triển: Do chưa có phần cứng cụ thể nên ứng dụng xây dựng tảng KIT Mini2440, tương lai xây dựng hệ thống nhúng chuyên biệt thiết bị cầm tay nhỏ gọn để di chuyển dễ dàng cho công việc cần đến TTS tiếng việt Tiếp tục hoàn thiện sửa chữa lỗi ứng dụng mắc phải đưa vào thử nghiệm hoạt động Có thể xây dựng TTS cỡ nhỏ trực tiếp thiết bị nhúng cho thành phần tiếng việt thi di chuyển đến khu vực không kết nối mạng đảm bảo hoạt động thông suốt thiết bị nhiên chất lượng giảm sút đôi chút [...]... thống: − Cài đặt nhân android lên KIT mini2440 − Viết chương trình cho phép nhập tiếng việt trên hệ thống KIT mini2440 qua bàn phím ảo,bàn phím thật hoặc qua file văn bản có sẵn tiếng Việt 27 − − Viết chương trình tạo yêu cầu gửi đến server và nhận file âm thanh từ server gửi về Phát file âm thanh ra loa Cài đặt trên KIT 4.2.1.Sửa nhân mini2440 cho màn hình X35 Sony Bản thân android được xây dựng phục... JTAG Interface, GPIO, CMOS Camera Interface là các ứng dụng mở rộng thêm tùy theo mục đích cảu người sử dụng đã được tích hợp sắn trên Board CHƯƠNG IV XÂY DỰNG ỨNG DỤNG 26 Mô hình hệ thống Mô hình phần mềm như sau: 4.1 Hình 20 – mô hình hệ thống Người dùng sẽ nhập văn bản tiếng việt qua KIT mini2440, sau khi nhập xong ,KIT sẽ gửi yêu cầu bao gồm cả phần văn bản người dùng đã nhập lên server của isolar,sau... thị văn bản nhưng không cho phép chỉnh sửa , Edit text cho phép chỉnh sửa nội dung cho các văn bản Check box chỉ nhận 2 giá trị true hay false, sử dụng trong nhiều trường hợp Giới thiệu về KIT Mini2440 Kit Mini2440 có kích thước 100mm vuông dựa trên nền tảng ARM9, sử dụng họ vi xử lý s3c2440, kit được ứng dụng cho việc phát triển hệ thống nhúng, điều khiển các thiết bị công nghiệp, phát triển trên. .. chọn delete Hình 27 – thanh điều khiển phát âm thanh Làm bộ gõ tiếng việt với Android 4.4.1.Cấu tạo chung của tiếng việt Đầu tiên, để xử lý tiếng việt cần phải mô tả được các thành phần của một chữ tiếng việt Hệ thống âm vị tiếng việt có: 4.4 35 - - - 11 nguyên âm đơn (monothong): a, ă, â, e, ê, i, o, ô, ơ, u, ư Chữ y ứng một mình và chữ i ứng một mình là hai lối viết của cùng một nguyên âm, vì thế... cho ứng dụng, thông tin về phiên bản SDK và main activity sẽ chạy đầu tiên.File này có 3 thành phần chính: 11 • • Application chứa các thuộc tính được định nghĩa cho ứng dụng: − Android:icon = : icon cho ứng dụng − Android :name = chứa tên của ứng dụng − Android:theme = chứa theme của ứng dụng Permission chứa các thuộc tính chỉ định quyền truy xuất sử dụng. .. một Activity Một ứng dụng kết thúc khi mà mọi thành phần của nó kết thúc, khi activity kết thúc tức là người dùng không còn giao tiếp với ứng dụng nhưng không có nghĩa là ứng dụng đó kết thúc vì ngoài ra còn có Service, Broadcast ,… có nghĩa là các thành phần không tương tác người dùng vẫn chạy dưới sự quản lý của hệ điều hành cho đến khi người dùng tắt ứng dụng Một ứng dụng sẽ sống từ khi có lần đầu... test Hình 13 – ADC input 3.3.8.Speaker Mini2440 có một chân ra Analog nối với loa ngoài theo sơ đồ như sau, tín hiệu ra có thể sử dụng cho các loa thông thường Hình 14 - PWM 23 3.3.9.Serial Port Có tổng cộng 3 cổng Serial trên board UART0,1,2 Trong hầu hết các ứng dụng, chỉ sử dụng đến 3 chức năng đơn giản như truyền và nhận dữ liệu, sẽ tương ứng với CON1,2,3 trên board Để cho thuận tiện thì cổng COM0... thuộc tính chỉ định quyền truy xuất sử dụng tài nguyên của ứng dụng, ví dụ: • Version chứa các thông tin về phiên bản thấp nhất của SDK đang được ứng dụng sử dụng: File R.java File này quản lý các thuộc tính khai báo trong file xml của ứng dụng và tài nguyên hình ảnh, mỗi khi có thay đổi về giao... nguyên hình ảnh, mỗi khi có thay đổi về giao diện như thêm sửa các đối tượng thì code của file này tự động thay đổi , nói chung không cần đụng chạm đến file này khi xây dựng ứng dụng 3.2.6.Chu kì của một ứng dụng Android Chu kì sống thành phần: Các thành phần ứng dụng có một chu kì sống từ lúc bắt đầu đến lúc kết thúc, giữa quá trình nó có thể inactive /active hoặc có thể visible/invisible trong khi đang... được xây dựng phục vụ chính cho màn hình T35 của mini2440, màn hình X35 không được hỗ trợ mặc định, bởi thế để sử dụng chúng ta cần sửa và dịch lại nhân cho android để có thể sử dụng cho KIT mini2440X35 4.2 Bản thân hệ điều hành Android trong mini2440 gồm những thành phần sau: Bootloader (Supervivi128Mb hoặc nboot) Android Kernel (X35) Android-Fsroot (tạo file img) Vì T35 và X35 đều có các thiết bị ngoại ... xây dựng ứng dụng hệ thống ứng dụng thử nghiệm cho hệ thống TTS trên, mở rộng cho ứng dụng TTS sau Hệ thống cho phép phát tiếng nói từ đoạn văn tiếng việt nhập vào Hệ thống xuất phát từ nhu cầu... ý tưởng viết hệ thống TTS tiếng việt hệ thống nhúng sử dụng hệ điều hành Android Với đề tài ứng dụng tạo tiếng nói tiếng việt từ văn kit mini2440 em đạt số kết định Đó hành trang giúp em nhiều... xây dựng ứng dụng chuyển văn chữ viết tiếng việt thành tiếng nói (Text to Speech) thiết bị nhúng KIT phát triển Mini2440 1.1 Môi trường thực đồ án Đồ án thực viên công nghệ thông tin Việt Nam