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].
15 trang |
Chia sẻ: vietpd | Lượt xem: 1574 | Lượt tải: 1
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.