Đồ án Ứng dụng tạo tiếng nói tiếng Việt từ văn bản trên KIT mini2440
Mục lục
CHƢƠNG I: MỞ ĐẦU . 8
1.1. Nhiệm vụ của đồ án . 8
1.2. Môi trƣờng thực hiện đồ án . 8
1.3. Bố cục đồ án . 8
CHƢƠNG II: ĐẶT VẤN ĐỀ VÀ GIẢI PHÁP . 9
2.1. Nhu cầu thực tế . 9
2.2. Phạm vi và nhiệm vụ . 10
CHƢƠNG III: NỀN TẢNG CÓ SẴN . 11
3.1. Hệ thống nhúng . 11
3.2. Giới thiệu về Android . 12
3.2.1. Lịch sử Android . 12
3.2.2. Tính năng mở của hệ điều hành Android . 13
3.2.3. DEVING và máy ảo DALVIK . 13
3.2.4. Kiến trúc Android . 14
3.2.5. Các thành phần của một Project Android . 16
3.2.6. Chu kì của một ứng dụng Android . 16
3.2.7. Các thành phần giao diện của Andorid . 19
3.3. Giới thiệu về KIT Mini2440 . 22
3.3.1. Cấu hình kỹ thuật . 22
3.3.2. Các chú ý về cổng giao tiếp . 23
3.3.3. Nguồn hỗ trợ . 25
3.3.4. Mạch khởi động lại hệ thống (System Reset) . 26
3.3.5. LEDs . 26
3.3.6. Nút Bấm . 26
3.3.7. A/D input test . 27
3.3.8. Speaker . 27
3.3.9. Serial Port . 28
3.3.10. Nối tiếp USB . 28
3.3.11. LCD interface . 29
3.3.12. EEPROM . 29
3.3.13. Network Interface . 30
CHƢƠNG IV: XÂY DỰNG ỨNG DỤNG . 31
4.1. Mô hình hệ thống . 31
4.2. Cài đặt trên KIT . 32
4.2.1. Sửa nhân mini2440 cho màn hình X35 Sony. . 32
4.2.2. Dịch nhân android . 34
4.2.3. Dịch file system . 36
4.2.4. Cài đặt Android cho mini2440 . 37
4.3. Giao diện chƣơng trình . 38
4.3.1. Thiết kế giao diện chƣơng trình . 38
4.3.2. Giao diện chi tiết . 40
4.4. Làm bộ gõ tiếng việt với Android . 43
4.4.1. Cấu tạo chung của tiếng việt . 43
4.4.2. Các kiểu gõ tiếng việt . 45
4.4.3. Thuật toán để lập trình bộ gõ . 47
4.5. Giao tiếp với server Isolar . 51
4.5.1. Gửi yêu cầu đến server . 51
4.5.2. Stream file âm thanh. 52
4.6. Chia sẻ mạng của Ubuntu qua dây Ethernet . 53
4.6.1. Mô hình hoạt động . 54
4.6.2. Cấu hình NAT . 54
4.6.3. Cấu hình routing . 55
4.6.4. Cấu hình bên máy nhận(mini2440) . 55
CHƢƠNG V: KẾT LUẬN. 57
DANH MỤC TÀI LIỆU THAM KHẢO . 58
ự 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 sẽ tìm kiếm những tổ hợp kí tự tƣơng ứng trong bảng viết tắt và thay thế nó thành từ hoàn chỉnh ngay khi ngƣời dùng gõ vào. Ví dụ, nếu trong bảng viết tắt quy định “nhƣng” đƣợc viết là “nu” thì khi gõ “nu” vào chƣơng trình sẽ tự động thay thế “nu” thành “nhƣng” trong đoạn văn bản hiển thị trên ô nhập. Tiếp theo cần tiến hành lấy vị trí đặt dấu cho các bộ nguyên âm, nếu nguyên âm đơn thì dấu sẽ đƣợc đặt trực tiếp lên nguyên âm đó, nhƣng nếu là nguyên âm đôi hay ba thì cần xác định vị trí đặt dấu cho nguyên âm đó. Và theo kiểu bỏ dấu hiện tại thì dấu đƣợc đặt kiểu “oà” thay vì “òa”,… nếu âm đầu là “gi” hoặc “qu” thì tự động để vị trí đặt dấu lên một tức là coi “gi” và “qu” là một âm đầu và không đặt dấu vào i và u của các âm đầu này. Hàm shiftAccent xây dựng trong lớp VietkeyInput có tác dụng xác định vị trí của dấu sẽ đƣợc đánh trong từ tƣơng ứng, với curWord là từ tại vị trí hiện tại và keyChar là kí tự đƣợc nhập vào. Cuối cùng là tiến hành đặt dấu cho nguyên âm dựa vào kí tự dấu đƣợc đƣa vào. Việc tạo các kí tự dấu cho nguyên âm sẽ đƣợc thực hiện bởi hàm ToVietWord của lớp VietkeyInput, sau khi đã xử lý ta cần tiến hành thay thế tƣơng ứng từ đệm thành từ đã đƣợc xử lý thêm dấu: Lớp Vietkeylistenner phụ trách xuất các kí tự ra EditText còn xử lý các kí tự nhập vào là do lớp VietKeyInput xử lý. Lớp VietKeyInput cung cấp các hàm Đồ án tốt nghiệp – ứng dụng tạo tiếng nói tiếng việt từ văn bản Nguyễn Trung Dũng – Phí Tùng Lâm – KTMTK52 Trang 50 xây dựng kí tự tiếng việt, các hàm chính của lớp này bao gồm shiftAccent và toVietword, Trong chƣơng trình bộ gõ đƣợc xây dựng riêng bên trong phân lớp để nhập tiếng việt vào chứ không đƣợc xây dựng bên ngoài, điều đó sẽ đảm bảo chƣơng trình sẽ chạy đƣợc ngay sau khi cài đặt mà không cần cài đặt thêm bất cứ thành phần nào khác kèm theo.Trên thực tế cũng có một số bộ gõ tiếng việt đƣợc xây dựng nhƣng có thể các bộ gõ đó sẽ không chạy đƣợc ở các phiên bản Android cũ, cách trên sẽ đƣợc giải quyết vấn đề này. Chƣơng trình đƣợc xây dựng trên nhân Android thấp nhất là 1.5 đảm bảo chƣơng trình có thể chạy đƣợc trên hầu hết các thiết bị chạy nền Android. Ngoài ra chƣơng trình có một bàn phím ảo riêng hỗ trợ nhập tiếng việt, có thể cài đặt cho các thiết bị khó có thể lắp đặt bàn phím cứng hoặc cho những 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 có thể 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. Đồ án tốt nghiệp – ứng dụng tạo tiếng nói tiếng việt từ văn bản Nguyễn Trung Dũng – Phí Tùng Lâm – KTMTK52 Trang 51 Hình 37 - lưu đồ xử lý tiếng việt 4.5. Giao tiếp với server Isolar 4.5.1. Gửi yêu cầu đến server Sau khi nhập đƣợc văn bản tiếng việt,chúng ta phải gửi văn bản này đến server để yêu cầu chuyển thành file âm thanh. Quá trình yêu cầu thực chất là gửi gói tin POST đến server với dữ liệu yêu cầu là đoạn văn bản tiếng việt mà ngƣời dùng đã nhập: Data_Sent = "voice=male1&SSinput=" + data + "&formSubmit=Submit"; Data_sent là dữ liệu sẽ đƣợc gửi đi cùng với gói tin POST và data là văn bản tiếng việt mà ngƣời sử dụng nhập từ bàn phím Mô hình nhƣ sau: XUẤT KÍ TỰ TIẾNG VIỆT VietKeyListenner đƣa kí tự vừa tạo ra màn hình TẠO KÍ TỰ TIẾNG VIỆT TỪ CHUỖI ĐỆM VietInput hàm ToVietWord() XÁC ĐỊNH DẤU TƢƠNG ỨNG VỚI KÍ TỰ VỪA GÕ VietKeyListenner hàm getAccentMack() XÁC ĐỊNH VỊ TRÍ ĐẶT DẤU CỦA TỪ HIỆN TẠI VietKeyInput hàm shiftAccent() XỬ LÝ VIẾT TẮT VietKeyListenner thay thê các kí tụ viết tắt bằng từ tƣơng ứng BẮt SỰ KIỆN GÕ PHÍM, LẤY VÀO PHÍM ĐƢỢC ẤN VietKeyListenner hàm setkey() Đồ án tốt nghiệp – ứng dụng tạo tiếng nói tiếng việt từ văn bản Nguyễn Trung Dũng – Phí Tùng Lâm – KTMTK52 Trang 52 Hình 38 - Mô hình kết nối xử lý tiếng nói Sau khi gửi gói tin POST,server sẽ gửi về một gói tin phản hồi,trong đó sẽ có link chứa đƣờng dẫn của file âm thanh tiếng việt,nhiệm vụ tiếp theo là phải tải file âm thanh đó về và phát ra loa 4.5.2. Stream file âm thanh Với những đoạn văn bản nhỏ,khi chuyển sang tiếng nói,dung lƣợng có thể sẽ nhỏ và không đáng kể,khi đó chƣơng trình sẽ có thể download về hết và phát ra loa bình thƣờng.Nhƣng đối với đoạn văn bản lớn thì khả năng sau khi ngƣời sử dụng ấn nút yêu cầu đến server cho đến khi download một file âm thanh lớn về sẽ mất rất nhiều thời gian,vì vậy,chƣơng trình sẽ stream file âm thanh về và chạy trong lúc đang download Đồ án tốt nghiệp – ứng dụng tạo tiếng nói tiếng việt từ văn bản Nguyễn Trung Dũng – Phí Tùng Lâm – KTMTK52 Trang 53 Mô hình nhƣ sau: Hình 39 - Mô hình hệ thống chương trình Từ server,chƣơng trình download file âm thanh về buffer. Khi buffer đủ số lƣợng nhất định,chƣơng trình sẽ copy buffer sang chỗ khác và chạy file copy đó.Đến khi chạy hết file copy,tiếp tục copy file buffer đã download về sang file khác và tua đến đoạn file copy trƣớc đã chạy.Khi đã play hết cả file,copy file đã download đầy đủ ra thẻ nhớ và xóa hết các file buffer còn lại.Giải thuật này gọi là double-buffer Sở dĩ phải sử dụng giải thuật này vì những file đang sử dụng để lƣu dữ liệu download từ server ,nếu chạy luôn file này thì sẽ gây xung đột hệ thống,vì vậy,chƣơng trình sẽ làm theo hƣớng an toàn hơn là lƣu ra file buffer copy khác để chạy. 4.6. Chia sẻ mạng của Ubuntu qua dây Ethernet Chia sẻ mạng(Internet Connection Sharing - ICS) là khả năng mà một máy tính dùng mạng có thể chia sẻ băng thông mạng với một hay nhiều máy tính khác. Để đƣợc nhƣ vậy, máy tính có kết nối mạng phải đƣợc cấu hình nhƣ một Cổng Internet(Internet Gateway). Máy tính đƣợc chia sẻ sẽ kết nối mạng trực tiếp thông qua cổng internet đó. Đồ án tốt nghiệp – ứng dụng tạo tiếng nói tiếng việt từ văn bản Nguyễn Trung Dũng – Phí Tùng Lâm – KTMTK52 Trang 54 4.6.1. Mô hình hoạt động Hình 40 - chia sẻ mạng qua dây erthenet Để chia sẻ qua dây ethernet, bên phía máy ubuntu,địa chỉ IP phải đƣợc đặt là 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 có thể từ máy đƣợc chia sẻ đi 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 sudo iptables -A POSTROUTING -t nat -j MASQUERADE Đồ án tốt nghiệp – ứng dụng tạo tiếng nói tiếng việt từ văn bản Nguyễn Trung Dũng – Phí Tùng Lâm – KTMTK52 Trang 55 Lệnh thứ nhất và thứ hai cho phép chuyển tiếp gói tin, lệnh thứ ba giúp dịch địa chỉ mạng(NAT),khi đó,gói tin từ máy đƣợc chia sẻ sẽ đƣợc đi thẳng qua Gateway trung gian và đến thẳng địa chỉ đƣợc yêu cầu,sau đó lúc gói tin đi về cũng đi theo đƣờng ngƣợc lại. Lƣu lại bảng IP để lần sau ta không phải cấu hình lại gateway nữa: sudo iptables-save | sudo tee /etc/iptables.sav Sửa file /etc/rc.local và 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 để có thể truyền dẫn gói tin giữa hai cổng bằng cách: sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" Sửa file /etc/sysctl.conf, thêm vào các dòng sau: net.ipv4.conf.default.forwarding=1 net.ipv4.conf.all.forwarding=1 Khi đó là đã 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 chỉ ip tĩnh cho cổng ethernet và cấu hình để cho các gói tin đi ra ngoài mạng qua cổng này Cấu hình địa chỉ ip tĩnh cho mini2440,trên màn hình boot: ifconfig eth0 192.168.1.230 netmask 255.255.255.0 up Cấu hình default gateway để các gói tin ra ngoài mạng sẽ đi qua cổng máy chia sẻ route add default gw 192.168.1.5 Và kết quả: Đồ án tốt nghiệp – ứng dụng tạo tiếng nói tiếng việt từ văn bản Nguyễn Trung Dũng – Phí Tùng Lâm – KTMTK52 Trang 56 Hình 41 - kết quả chia sẻ mạng Đồ án tốt nghiệp – ứng dụng tạo tiếng nói tiếng việt từ văn bản Nguyễn Trung Dũng – Phí Tùng Lâm – KTMTK52 Trang 57 CHƢƠNG V KẾT LUẬN Với mức độ phát triển hệ thống nhúng và hệ điều hành Android hiện nay ở VIệt Nam, các ứng dụng cho lĩnh vực này sẽ ngày càng phát triển rộng rãi, và ứng dụng TTS trên hệ thống nhúng Android sẽ đƣợc sử dụng rộng rãi. Ứng dụng cho chúng em xây dựng sẽ là bƣớc mở đầu cho chúng em tham gia vào lĩnh vực mới mẻ đầy tiềm năng này Mặc đù đã rất cố gắng nghiên cứu, nhƣng do chƣa có kinh nghiệm trong việc thiết kế và phát triển phần mềm nhúng và cũng do lĩnh vực nghiên cứu còn khá lạ lẫm nên chắc chắn không tránh khỏi những sai sót, mong các thầy cô và các bạn đóng góp ý kiến để em rút ra đƣợc các kinh nghiệm cho công việc sau này. Hƣớng phát triển: Do chƣa có phần cứng cụ thể nên ứng dụng đƣợc xây dựng trên nền tảng KIT Mini2440, trong tƣơng lai có thể xây dựng một hệ thống nhúng chuyên biệt nhƣ một thiết bị cầm tay nhỏ gọn để có thể di chuyển dễ dàng cho các công việc cần đến TTS tiếng việt. Tiếp tục hoàn thiện và sửa chữa những lỗi ứng dụng mắc phải khi đƣa vào thử nghiệm và hoạt động. Có thể xây dựng một bộ TTS cỡ nhỏ trực tiếp trên thiết bị nhúng cho các thành phần tiếng việt cơ bản thi di chuyển đến những khu vực không kết nối đƣợc mạng đảm bảo hoạt động thông suốt của thiết bị tuy nhiên chất lƣợng có thể giảm sút đôi chút. Đồ án tốt nghiệp – ứng dụng tạo tiếng nói tiếng việt từ văn bản Nguyễn Trung Dũng – Phí Tùng Lâm – KTMTK52 Trang 58 DANH MỤC TÀI LIỆU THAM KHẢO 1. Vietandroid.com; Hướng dẫn lập trình cơ bản với Android. 2. www.friendlyarm.net; Hướng dẫn cơ bản về KIT mini2440. 3. Google Developer; Google Android Project; 4. Mark .L Murphy; BeginningAndroid. 5. Reto Meier; Professional Android Application Development; US 2008. 6. Wei Meng Lee; Beginning Android Application Development.
File đính kèm:
- Đồ án Ứng dụng tạo tiếng nói tiếng Việt từ văn bản trên KIT mini2440.pdf