Tổng hợp tiếng nói trên windows

Windows Mobile là một hệ điều hành thu gọn, kết hợp với một bộ các ứng dụng cơ bản cho các thiết bị di độngdựa trên giao diện lập trình ứng dụng Win32 của Microsoft. Các thiết bị chạy Windows Mobile bao gồm Pocket PC, Smartphone, Portable Media Center, . Ngoài ra, một số máy tính xách tay loại nhỏ (Ultra-portable notebook) cũng có thể sử dụng hệ điều hành này[2].

pdf15 trang | Chia sẻ: vietpd | Lượt xem: 1571 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Tổng hợp tiếng nói trên windows, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
17 CHƢƠNG 3. TỔNG HỢP TIẾNG NÓI TRÊN WINDOWS 3.1. Giới thiệu Windows Mobile là một hệ điều hành thu gọn, kết hợp với một bộ các ứng dụng cơ bản cho các thiết bị di động dựa trên giao diện lập trình ứng dụng Win32 của Microsoft. Các thiết bị chạy Windows Mobile bao gồm Pocket PC, Smartphone, Portable Media Center, .... Ngoài ra, một số máy tính xách tay loại nhỏ (Ultra-portable notebook) cũng có thể sử dụng hệ điều hành này [2]. Windows Mobile đƣợc thiết kế để có vẻ ngoài và các tính năng tƣơng tự với các phiên bản desktop của Windows. Xuất hiện lần đầu với tên hệ điều hành Pocket PC 2000, Windows Mobile đã đƣợc nâng cấp vài lần, phiên bản hiện hành là Windows Mobile 6.5, dự kiến phiên bản Windows Mobile 7 sẽ ra mắt vào năm 2010. Để lập trình ứng dụng chạy trên Windows mobile, chúng ta cần môi trƣờng và công cụ sau: - Smart Device Extensions: là môi trƣờng phát triển tích hợp (IDE) nhằm vào .NET Compact Framework. Nó là một thành phần của Visual Studio 2003 hoặc mới hơn. - .NET Compact Framework: là một phiên bản rút gọn của .NET Framework dùng cho Windows mobile - Device Emulator Manager: giả lập thiết bị Pocket PC để phát triển ứng dụng trên Windows mobile (dùng debug, test, …) - ActiveSync: kết nối Visual Studio với thiết bị thật để bẫy lỗi, kết nối với thiết bị ảo để hỗ trợ truy cập mạng từ thiết bị ảo. 18 Trong phạm vi đề tài này, tôi sử dụng Visual Studio 2005; Windows Mobile 5.0 Pocket PC SDK; và Microsoft ActiveSync 4.5 để phát triển ứng dụng trên Windows mobile 5. 3.2. Windows Mobile SDK Windows mobile SDK là bộ công cụ để phát triển các ứng dụng trên Windows mobile gồm: - Các hàm API hỗ trợ lập trình trên Windows mobile. - Các công cụ cho trình soạn thảo (Visual Studio) và biên dịch mã. - Trợ giúp và các ví dụ. Windows mobile 5 SDK đƣợc tích hợp sẵn trong bộ Visual Studio 2005 và Visual Studio 2008, dùng để lập trình ứng dụng cho các thiết bị chạy Windows Mobile 5. Để lập trình trên Windows mobile 6, Microsoft cung cấp bộ Windows mobile 6 SDK (gồm 2 phiên bản Standard dùng cho smartphone và Professional dùng cho Pocket PC). 19 Sơ đồ định hƣớng windows mobile SDK [15]: Hình 3.1 Sơ đồ định hƣớng windows mobile SDK 20 Một số hàm API của windows mobile 5 SDK sử dụng trong đề tài này [11, 15]: Telephony: Namespace: WindowsMobile.Telephony - Thực thi một cuộc gọi chỉ bằng 1 dòng lệnh. New Phone().Talk(“090123456”); - Tùy chọn ngƣời dùng có quyền hoặc không có quyền thực hiện cuộc gọi. Pocket Outlook: Namespace: Microsoft.WindowsMobile.PocketOutlook Hình 3.2 Hàm API Outlook session OutlookSession class: Properties: Appointments Contacts EmailAccounts SmsAccount Task Methods: Dispose OutlookSession 21 Hình 3.3 Hàm API Messaging Một đoạn code ví dụ gởi 1 Email: OutlookSession session = new OutlookSession(); EmailMessage email = new EmailMessage(); email.To.Add(new Recipient(“ndkhuong@fit.hcmus.edu.vn”)); email.Subject = “Help !”; email.BodyText = “Help me!”; EmailAccount emailAccount = session.EmailAccounts[0]; email.Send(emailAccount); session.Dispose(); // Send the email MessagingApplication.Synchronize(emailAccount); Session.Dispose(); SMSAccount class: Public Methods: Send Account class: Public Properties: Name Public Methods: Dispose EmailAccount class: Public Properties: Transport Public Methods: Send 22 Một đoạn code ví dụ gởi 1 SMS: SmsMessage sms = new SmsMessage(“84989183568”, “Help me!”); sms.Send(); SMS Interception: Chặn tin nhắn Namespace: PocketOutlook.MessageInterception * Nhận 1 thông báo khi có 1 SMS đến. Tùy chọn có thể xóa SMS * Có thể lọc 1 SMS bằng cách sử dụng phƣơng pháp so sánh. VD: Đoạn code chặn tin nhắn có từ "nhac chuong mien phi" MessageInterceptor mi = new MessageInterceptor(); mi.InterceptionAction = InterceptionAction.NotifyAndDelete; MessageCondition mc = new MessageCondition(); mc.CaseSensitive = true; mc.ComparisonType = MessagePropertyComparisonType.EndsWith; mc.ComparisonValue = "nhac chuong mien phi"; mi.MessageCondition = mc; mi.MessageReceived += new MessageInterceptorEventHandler (mi_MessageReceived); mi.EnableApplicationLauncher("APP"); this.Text="This is test message"; Event khi nhận đƣợc 1 tin nhắn: void mi_MessageReceived(object sender, MessageInterceptorEventArgs e) { if (e.Message is SmsMessage) { SmsMessage sms = (SmsMessage)e.Message; } 23 } 3.3. .NET Compact Framework Có vài sự khác biệt giữa .NET Framework (bản đầy đủ) và .NET Compact Framework, trong đó .NET Compact Framework không hỗ trợ một số lớp đối tƣợng, đồng thời có bổ sung 2 lớp đối tƣợng cho môi trƣờng di động. Hình 3.4 Các thƣ viện lớp đối tƣợng đƣợc hỗ trợ trong .NET Compact Framework Một số hạn chế của .NET Compact Framework: - MDI forms: Không hỗ trợ Multiple Document Interface - GDI+: Không hỗ trợ - Drag-and-Drop: Không hỗ trợ - Printing: Không hỗ trợ - Web service: Chỉ hỗ trợ client-side Các điều khiển không đƣợc hỗ trợ trong .NET Compact Framework: 24 - CheckedListBox - ColorDialog - ErrorProvider - FontDialog - GroupBox - HelpProvider - LinkLabel - NotificationBubble - NotifyIcon - All Print controls - RichTextBox - Splitter Các tính năng không hỗ trợ trong .NET Compact Framework: - AcceptButton - CancelButton - AutoScroll - Anchor - Multiple Document Interface (MDI) - KeyPreview - TabIndex - TabStop - Drag and drop - Printing - Hosting ActiveX controls 25 3.4. Phát âm thanh trên windows mobile Để phát (play) một file wav trên windows mobile, chúng ta có thể dùng thƣ viện PlaySound API trong CoreDll.dll [16] using System.Runtime.InteropServices; [DllImport("coredll.dll")] public static extern int PlaySound(string pszSound, int hmod, int fdwSound); public void Play(string sFileName) { PlaySound(sFileName, 0, 0x00020000); } Thƣ viện này đơn giản và dể sử dụng, tƣơng thích với các phiên bản khác nhau của windows mobile. 3.5. Vấn đề lƣu trữ và xử lý trên thiết bị di động Bộ nhớ trong của các điện thoại thông minh (smartphone) dùng Windows mobile thƣờng hạn chế, ví dụ máy HTC 8252, O2 mini: RAM 64MB; bộ nhớ lƣu trữ (storage) 56,22MB. Với lƣợng bộ nhớ này, hệ điều hành và các ứng dụng sẵn có đã chiếm gần hết, lƣợng RAM và bộ nhớ lƣu trữ còn lại khá ít, sẽ không chạy nỗi các ứng dụng chiếm nhiều tài nguyên. Hầu hết các dòng máy sử dụng windows mobile đều có hỗ trợ khe cắm thẻ nhớ hỗ trợ đến 2GB, đây là nơi đƣợc chọn lƣu trữ dữ liệu của những phần mềm có dữ liệu lớn nhƣ tổng hợp tiếng nói (hiện nay giá thẻ nhớ khá rẻ nên hầu hết các máy smartphone có hỗ trợ thẻ nhớ đều có trang bị). 26 Bộ vi xử lý (CPU) của máy điện thoại thông minh thƣờng có tốc độ từ 350Mhz – 512Mhz, khá khiêm tốn so với máy tính để bàn (desktop) hoặc server. Vì vậy phải tối ƣu thuật toán và tổ chức dữ liệu để thời gian xử lý chấp nhận đƣợc. 3.6. Vấn đề tổ chức và nén dữ liệu Do âm thanh phát trên điện thoại di động nên không cần chất lƣợng cao, nên các file dữ liệu âm thanh đƣợc lƣu với chất lƣợng thấp (8khz, mono) để giảm kích thƣớc. Dù số lƣợng file từ điển âm thanh khá lớn, nhƣng chúng đƣợc tổ chức dƣới dạng danh mục (index) nên có thể truy xuất nhanh dữ liệu âm thanh cần thiết. Ví dụ một đoạn trong file danh mục (phần đầu là tên file và phần còn lại là từ / cụm từ): P18_485 tâm can P18_486 tâm đắc P18_487 tâm địa P18_488 tâm giao P18_489 tâm hồn P18_490 tâm linh P18_491 tâm lý P18_492 tâm lý học P18_493 tâm não P19_001 tâm nhĩ P19_002 tâm phúc P19_003 tâm sự P19_004 tâm thành P19_005 tâm thần 27 P19_006 tâm thất P19_007 tâm tình P19_008 tâm tính P19_009 tâm trạng P19_010 tâm trí P19_011 tâm tƣ P19_012 tầm P19_013 tầm bậy P19_014 tầm gửi P19_015 tầm nã P19_016 tầm phào P19_017 tầm tã P19_018 tầm thƣờng P19_019 tầm vóc P19_020 tầm vông P19_021 tầm xích P19_022 tầm xuân Để xử lý, ghép nối các file âm thanh chúng ta cần hiểu rõ cấu trúc của file âm thanh theo định dạng đƣợc chọn, trong đề tài này là định dạng wav nhƣ các hình 3.5. 28 Hình 3.5 Cấu trúc header của file âm thanh theo định dạng Wav Trong đó: ChunkID (4 byte): có giá trị là “RIFF” ChunkSize (4 byte): có giá trị bằng kích thƣớc file trừ đi 8 (byte) Format (4 byte): có giá trị là “WAVE” SubChunk1ID (4 byte): có giá trị là “ fmt “ 29 SubChunk1Size (4 byte): có giá trị là 16 + phần header mở rộng (PCM=16) AudioFormat (2 byte): mã định dạng âm thanh (PCM=1) NumChannels (2 byte): số kênh âm thanh (mono=1; stereo=2; …) SampleRate (4 byte): tốc độ lấy mẫu (8000=8khz;16000=16khz; …) ByteRate (4 byte): có giá trị bằng SampleRate * NumChannels * BitsPerSample/8 BlockAlign (2 byte): có giá trị bằng NumChannels * BitsPerSample/8 BitsPerSample (2 byte): số bit lấy mẫu (8 bits = 8; 16 bits = 16; …) Subchunk2ID (4 byte): có giá trị là “data” Subchunk2Size (4 byte): có giá trị là NumSamples (số mẫu) * NumChannels * BitsPerSample/8 (chính là kích thƣớc dữ liệu âm thanh) Data: chứa dữ liệu âm thanh thực sự. 30 Hình 3.6 Ví dụ thông tin header của một file wav 3.7. Phƣơng pháp tổng hợp ghép nối chọn đơn vị Trong phƣơng pháp ghép nối, các phân đoạn âm thanh càng dài nối kết lại với nhau sẽ tạo ra chất lƣợng âm thanh tự nhiên hơn giảm tối thiểu tính không liên tục giữa các đơn vị đƣợc lựa chọn, ít tốn chi phí ghép nối. Nhƣng sẽ cần nhiều không gian lƣu trữ để chứa dữ liệu âm thanh. Từ văn bản đầu vào ở bƣớc phân tích văn bản sau khi đƣợc chuẩn hoá sẽ đƣợc tách thành từng từ / cụm từ theo từ điển (dùng phƣơng pháp so khớp dài nhất), sau đó chọn các cụm từ đó trong cơ sở dữ liệu âm thanh để ghép nối thành file kết quả và xuất ra loa. Ví dụ: ta có câu sau cần tổng hợp thành âm thanh: 31 “Phòng thí nghiệm trí tuệ nhân tạo của Khoa Công nghệ Thông tin” Sau khi phân tích văn bản theo từ điển của bộ dữ liệu âm thanh, sẽ đƣợc các từ / cụm từ sau: + phòng thí nghiệm + trí tuệ + nhân tạo + của + khoa + công nghệ + thông tin Vì dữ liệu âm thanh đƣợc lƣu dƣới dạng mỗi từ / cụm từ trong từ điển thành một file âm thanh riêng nên tổng hợp đơn giản là ghép các file âm thanh tƣơng ứng với các từ / cụm từ trên thành một file âm thanh kết quả. Với những từ không tìm thấy trong từ điển âm thanh sẽ bị bỏ qua.
Tài liệu liên quan