0
Tải bản đầy đủ (.pdf) (75 trang)

Thiết kế và xây dựng chương trình

Một phần của tài liệu ĐỒ ÁN TỐT NGHIỆP KỸ SƯ :" XÂY DỰNG HỆ THỐNG TRẢ LỜI TỰ ĐỘNG " DOCX (Trang 53 -75 )

3. 1 5 Thiết kế Cơ sở dữ liệ u

3.2.2 Thiết kế và xây dựng chương trình

3. 2. 2. 1 Xây Dựng MôdunIVR-Programer.

a. Các yêu cầu chức năng:

+ Trả lời ñiểm, họ tên, môn học của sinh viên mà người sử dụng nhập từ ñiện thoại.

b. Các yêu cầu phi chức năng: + OCX Teletool.

+ Cơ sở dữ liệu SQL.

+ Công cụ lập trình. NET và môi trường phát triển. + Voice Modem.

+ ðường dây ñiện thoại & một số máy ñiện thoại. + Các tài liệu liên quan.

c. Thiết kế cơ sở dữ liệu

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 53

d. Tổ chức kịch bản của dịch vụ

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 54

3. 2. 2. 2 Xây dựng Môdun TTS.

Hình 3.8 Mô hình tổng hợp tiếng nói từ văn bản

Hình 3. 9 Biểu ñồ lớp tổng quát

* Lớp DataLibClass :

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 55

- Fields : Mảng arDipphone chứa danh sách các Diphone cần lưu trữ - Methods : GetDiphone(int index) hàm này sẽ ñọc CSDL và trả về một ñối tượng thuộc lớp DiphoneClass.

*Lớp SpeakClass :

- Nhiệm vụ : ðây là lớp của ứng dụng - Methods :

+Hàm OpendataLib() : có nhiệm vụ ñọc CSDL từ ổ cứng lên +Hàm Speak(string sentence) : có nhiệm vụ phát âm một chuỗi ra loa

+Hàm Save(string filePath) : lưu dữ liệu file Wav xuống ổ cứng.

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 56 Hình 3.10 Sơñồ tổng hợp mức cao

3.2.2.2.2 Tổng hợp mức thấp.

Hình 3. 11 Sơñồ Tổng hợp mức Thấp.

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 57

+ Toàn bộ môdun ñược ñóng gói thành một dll nên dễ dàng thừa kế cho các ứng dụng khác.

+ Toàn bộ môdun ñược thiết kế theo hướng ñối tượng kể cả CSDL nên dễ nâng cấp sửa chữa về sau, và ñược thiết kế ñộc lập nên khi sửa ñổi CSDL không làm ảnh hưởng tới chương trình.

+ Môdun sử dụng Font Unicode là Font khá thông dụng hiện nay.

+ Môdun ñược lập trình trên nền .Net kích thước File CSDL khá nhỏ nên có thể dễ dàng chuyển ñổi sang các ứng dụng chạy trên ñiện thoại di ñộng.

3.2.2.2.4 Một số vấn ñề và giải pháp.

* Vn ñề lưu tr CSDL.

+ Vấn ñề : CSDL là một kiểu dữ liệu có cấu trúc chứa danh sách các diphone.Trong ñó mỗi Diphone là một ñối tượng có các thuộc tính như mảng dữ liệu của File Wav, mảng toạ ñộ các ñiểm cực trị, toạ ñộ ñiểm nối vv... nên việc lưu trữ dữ liệu theo kiểu tuần tự là khó khăn và phức tạp thậm trí việc tìm kiếm truy cập, cập nhật là khó do kiểu lưu trữ tuần tự gây ra ví dụ khi thay ñổi khíc thước, dung lượng của một Diphone có thể sẽ làm mất hoặc sai lệch các dữ liệu của Diphone ñằng sau nó

+ Ý tưởng và giải pháp : coi toàn bộ CSDL là một Object có cấu trúc và lưu toàn bộ Object này xuống ổ cứng. ðể giải quyết vấn ñề này em sử dụng một formatter ñể tuần tự hóa ñối tượng và ghi nó vào một System. IO. FileStream. Khi cần truy xuất ñối tượng, sử dụng formatter cùng kiểu ñể ñọc dữ liệu ñược-tuần-tự-hóa từ file và giải tuần tự hóa ñối tượng. Thư viện lớp. NET Framework cung cấp các hiện thực formatter sau ñây ñể tuần tự hóa ñối tượng theo dạng nhị phân hay SOAP:

System. Runtime. Serialization. Formatters. Binary. BinaryFormatter System. Runtime. Serialization. Formatters. Soap. SoapFormatter

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 58

Lớp BinaryFormatter và SoapFormatter có thể ñược sử dụng ñể tuần tự hóa một ñối tượng của bất kỳ kiểu nào ñược gắn với ñặc tính System. SerializableAttribute. BinaryFormatter sinh ra một stream dữ liệu nhị phân mô tả ñối tượng và trạng thái của nó, trong khi SoapFormatter sinh ra một tài liệu SOAP.

Cả hai lớp BinaryFormatter và SoapFormatter ñều hiện thực giao diện System. Runtime. Serialization. IFormatter, giao diện này ñịnh nghĩa hai phương thức: Serialize và Deserialize.

Serializenhận một tham chiếu System. Object và một tham chiếu System. IO. Stream làm ñối số, tuần tự hóa Object và ghi nó vào Stream.

Deserializenhận một tham chiếu Stream làm ñối số, ñọc dữ liệu của ñối tượng ñược-tuần-tự-hóa từ Stream, và trả về một tham chiếu Object ñến ñối tượng ñược-giải-tuần-tự-hóa. Ta phải ép tham chiếu Object này về kiểu thích hợp.

* Vn ñề tách du và tìm kiếm các Diphone

+ Vấn ñề : Một trong những bước quan trọng của bước tổng hợp mức cao ñó là tìm ñược vị trí nguyên âm ñầu tiên và dấu của từ là gì. ví dụ dấu huyền dấu sắc hay dấu hỏi…hay như khi ñã tìm ñược Diphone ñó là Diphone gì thì việc xác ñịnh vị trí của nó trong CSDL như thế nào? Việc viết các hàm kiểm tra và tìm kiếm này không khó tuy nhiên tốc ñộ thực thi phải nhanh và tối ưu.

+ Ý tưởng và giải pháp : Sử dụng các tập hợp của. Net cung cấp sẵn. cụ thể vấn ñề xác ñịnh kí tự ñó có phải là nguyên âm hay không hoặc kí tự ñó có chứa dấu hay không trong C# em sử dụng tập hợp StringCollection và sử dụng hàm Contains() ñể kiểm tra kí tự ñó có thuộc tập hợp hay không. Còn vấn ñề tìm kiếm em sử dụng bảng băm Hashtable, Hashtable là kiểu cấu trúc

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 59

dữ liệu có mục tiêu tối ưu hoá việc tìm kiếm trong. Net. Hashtable là một kiểu từ ñiển ( kiểu tập hợp trong ñó có 2 thành phần chính liên hệ với nhau là khóa và giá trị) ñược tối ưu cho việc truy cập nhanh. Khi chúng ta truy cập một giá trị trong hashtable thì phải cấp một khóa. Khóa trong hashtable có thể là kiểu dữ liệu ñược xây dựng sẵn hay cũng có thể là thể hiện của kiểu dữ liệu do người dùng tạo ra.

* Vn ñề ct và ghép ni các Diphone.

+ Vấn ñề : Sau khi thu âm ñược các từ mẫu, vấn ñề tiếp theo là phải tách từ ñã thu ñể thu ñược các diphone mong muốn. Do ñặc ñiểm từ ñơn âm tiết của tiếng Việt nên từ mẫu ñược tạo nên từ hai diphone, diphone bắt ñầu và diphone kết thúc. ðể có ñược các diphone này, ta phải cắt ra các ñoạn tín hiệu từ mẫu ñã có. Các diphone bắt ñầu ñược cắt từ phần bên trái của mẫu và các diphone kết thúc ñược cắt từ phần bên phải của mẫu. Các ñiểm cắt ñược xác ñịnh trực tiếp bằng mắt. ðiểm cắt phải thoả mãn ñiều kiện:

+ Nằm trong phần tín hiệu ổn ñịnh..

+ ðiểm cắt bên phải của diphone bắt ñầu và ñiểm cắt bên trái của diphone kết thúc phải nằm tại ñỉnh cao nhất trong một chu kỳ của phần tín hiệu tương ứng với nguyên âm (gần như tuần hoàn). ðiều này bảo ñảm rằng hai diphone dùng ñể ghép nối không bị lệch pha nhiều.

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 60

+ Ý tưởng và giải pháp : Em không sử dụng khái niệm “ñiểm cắt-ñiểm nối ” mà ñưa ra khái niệm “ðoạn nối”.Vị trí ñoạn nối này cũng vẫn phải thỏa mãn ñiều kiện là nắm trong phân tín hiệu ổn ñịnh và vị trí ñiểm cắt cũng phải nằm tại ñỉnh cao nhất trong một chu kỳ của phần tín hiệu tương ứng. Cụ thể quá trình xử lý nối hai Diphone ñược tiến hành như sau :

- Bước 1 : Tiến hành cắt Diphone như bình thường.

- Bước 2 : Áp dụng biến ñổi khung OLA cho ½ chu kì bên phải của Diphone bên trái, tương tự cũng áp dụng ñổi khung OLA cho ½ chu kì bên trái của Diphone bên phải.

-Bước 4 : ðiều chỉnh cường ñộ của hai Diphone ñảm bảo không có hiện tượng chênh lệch về cường ñộ do quá trình thu âm gây ra.

-Bước 5 : Cộng xếp chồng hai Diphone ñể dược từ hoàn chỉnh

Nửa bên trái sau khi cắt và xử lý khung OLA

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 61 Hình 3.13 Kết quả sau khi cộng xếp chồng 2 nửa.

- ðể ý rằng do sử dụng giải thuật cộng xếp chồng hai nửa tín hiệu mà tín hiệu giường như ñược biến ñổi một cách từ từ từ ñoạn thứ nhất sang ñoạn thứ hai, hay nói cách khác “ñoạn nối” ñã ñược làm “trơn”. Và với phương pháp tách riêng hai nửa chu kì kết hợp với biến ñổi về cường ñộ cho một số khung OLA ở gần chỗ cắt hoàn toàn có thể tăng ñược ñộ dài của ñoạn nối lên To,3/2To,2To,vv…Nghĩa là làm tín hiệu ñược biến ñổi một cách dần dần từ ñoạn 1 sang ñoạn 2.

- ðể thuận tiện cho người sử dụng việc cắt các Diphone em hỗ trợ hai phương pháp. Phương pháp 1 : Sử dụng một phần mềm xử lý âm thanh ñể cắt file Wav một cách trực tiếp sau ñó lưu file Wav này vào CSDL. Phương pháp 2 : sử dụng dữ liệu của một từ ñã có trong CSDL và chỉ ra vị trí ñiểm cần cắt và chương trình sẽ tự ñộng cắt lấy Diphone tương ứng. Ưu ñiểm của phương pháp thứ 2 là không phụ thuộc vào chương trình trung gian và kích thước CSDL tạo ra sẽ nhỏ hơn tuy nhiên chi phí tính toán sẽ nhiều hơn so với phương pháp 1.

* Vn ñề biến ñổi cường ñộ và trường ñộ.

+ Vấn ñề : Khi ghép nối các Diphone hay ghép nối các từ có hiện tượng không ñồng bộ về cường ñộ do quá trình thu âm gây ra .Vì vậy cần phải biến ñổi cường ñộ ñể cho cường ñộ của các từ hay các diphone ñồng bộ.Vấn ñề tiếp là trong các câu có ngữ ñiệu hay biến ñổi từ không dấu thành từ có dấu vv..thì yếu tố biến ñổi về trường ñộ cũng có vai trò quan trọng.

+ Ý tưởng và giải pháp : Vấn ñề biến ñổi cường ñộ ñược thực hiện bằng cách biến ñổi trực tiếp(cộng, trừ, nhân, chia….) dữ liệu của File Wav .Vấn ñề biến ñổi về trường ñộ ñược giải quyết bằng cách sử

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 62

dụng ArrayList ñể cài ñặt mảng OLA. Việc kéo dãn hay thu ngắn trường ñộ của từ ñược thực hiện bằng cách thêm hoặc bớt một phần tử của ArrayList tại vị trí xác ñịnh. Lớp ArrayList hỗ trợ phương thức Insert() ñể thêm một phần tử và phương thức RemoveAt() ñể gỡ bỏ một phần tử tại vị trí xác ñịnh của mảng.

* Vn ñề biến ñổi tn s cơ bn .

+ Vấn ñề : Giải thuật TD-PSOLA sử dụng biến ñổi tần số cơ bản của một từ không dấu ñể tạo ra từ có dấu ,vì vậy mà làm giảm kích thước CSDL.

+ Ý tưởng và giải pháp : Quá trình thay ñổi tần số cơ bản ñược tiến hành bằng cách thay ñổi khoảng cách giữa các khung OLA.Chiều dài của một khung OLA là một chu kì cơ bản. Tuy nhiên tâm của khung OLA lại không nằm chính giữa. ðể tăng ñộ chính xác em ñưa ra khái niệm ñó là sử dụng khung OLA bất ñối xứng. Trong ñó hai nửa của khung OLA nửa trái và và nửa phải ñược tách và xử lí riêng. Phương pháp này cũng làm cho việc xử lí các phụ âm sát như sắc, chắc, sắn, sán, xá vv… một cách dễ dàng và mềm dẻo hơn.

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 63

Quá trình giảm tần số cơ bản sẽ là quá trình tăng khoảng cách giữa các khung OLA.Ngược lại quá trình tăng tần số cơ bản sẽ là quá trình giảm khoảng cách giữa các khung OLA .Khoảng cách giữa 2 khung OLA chính bằng ½ chu kì cơ bản.

Hình 3.15 Một khung OLA sau khi ñược tách và xử lí

3.2.2.2.5 Chương trình thử nghiệm.

Toàn bộ Môdun ñược ñóng gói thành một lớp trong một dll nên việc sủ dụng rất ñơn giản. Cụ thể như sau :

//Khởi tạo một ñối tượng Speaker Speaker TL_Speak = newSpeaker(); //Phát âm ra loa.

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 64

TL_Speak.Speak("Khoa Công Nghệ Thông Tin Trường ðại Học Thuỷ Lợi");

//Hiện ñồ thị sóng âm lên pictureBox2.

TL_Speak.RenderTimeDomainLeft(ref pictureBox2); //Lưu File xuống ổ cứng.

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 65

Chương IV : KT LUN

4. 1 Chương trình SMS.

4. 1. 1 Kh năng ca h thng.

- Cung cấp tra cứu cho người dùng với chi phí cực thấp. - Triển khai nhanh chóng, tiện dụng và miễn phí.

- Có thể phục vụ cho các hệ thống tra cứu trung bình, và tương ñối lớn. - Khả năng nghẽn mạng nhỏ, và thời gian tra cứu nhanh chóng.

- Có thể triển khai và áp dụng ngay.

4. 1. 2 Phm vi và gii hn ca h thng.

ða số các hạn chế ñều do mô hình VG miễn phí tác ñộng tới. Trong quy mô triển khai hệ thống dạng miễn phí, hệ thống chỉ có thể tương tác tin nhắn 2 chiều, với yêu cầu người dùng gửi thông tin trước và ñợi phản hồi. Trong mô hình VG4, ñang ñược triển khai, hệ thống có thể nhắn tin tới số ñăng kí trước khi cơ sở dữ liệu ñược cập nhập.

Ví dụ : Áp dụng cho mô hình nhắn tin thời vụ. Khi ta nhắn tin trước tới hệ thống này, số sẽ ñược lưu lại và khi hệ thống có tin mới, nó sẽ tự ñộng gửi tin nhắn tới cho người dùng.

- Số lượng kí tự trả về chỉ giới hạn trong 120 kí tự (với hệ thống VG free), vì thế không thể trả ra các bản tin có dung lượng lớn. Nhưng ñặc ñiểm của tin nhắn là ngắn gọn và nêu bật lên thông tin cần tải. Vì vậy, ñây không là nhược ñiểm lớn.

- Không thể thay ñổi ñịnh danh(senderID) của hệ thống, ñó là do hệ thống quy ñịnh, ta chỉ có thể thay ñổi chức năng này nếu dùng bản VG Business Gateway.

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 66

4. 2 Chương trình IVR.

4. 2. 1 Kh năng ca h thng.

Phần mềm này có thể ứng dụng rất rộng rãi và trong rất nhiều trường hợp. từ chương trình này, chũng ta có thể dễ dàng phát triển thành các chương trình khác như :

Chương trình trả lời ñiện thoại từ ñộng khi có người gọi ñến Có thể sử dụng trong nhà khi mọi người ñi vắng, chương trình sẽ tự ghi âm lại cho người gọi tới.

+ Ứng dụng làm hộp thư thoại ñể ñóng góp ý kiến hay ñề nghị yêu cầu. + Có thể dùng làm nơi tra cứu ñiểm thi ñại học.

+ Có thể làm ñiện thoại tư vấn tra cứu tự ñộng trong nhiều lĩnh vực (VD tra cứu tuyến xe buýt nào gần nơi hiện tại nhất, chỗ nào bán máy móc nhiều nhất, trả lời giá vàng……. ).

Cung cấp các dịch vụ gia tăng qua ñiện thoại như: kể chuyện, ñọc chuyện ngắn, nghe dự báo thời tiết, nghe tin vắn trong ngày…. .

Chương trình hiện nay mới chỉ ñáp ứng ñược một ñường truyền, tức là chỉ phục vụ ñược cho một người một lúc. Trong tương lai, chương trình có thể hỗ trợ thêm một số ñường truyền nữa ñể ñáp ứng nhu cầu trong các giờ, ngày, tháng cao ñiểm.

Nếu có kinh phí, có thể ñăng kí dịch vụ cung cấp số ñiện thoại gọi tới với tổng ñài, lúc ñó có thể nhận ñược số ñiện thoại gọi tới giúp tăng thêm thông tin cho việc quản lý.

+ Có thể trả lời kết quả thông qua fax, bên gửi sẽ fax cho chương trình yêu cầu theo mẫu sẵn có, chương trình sẽ xử lý và fax trả lại cho bên gửi.

4. 2. 2 Phm vi và gii hn ca h thng.

Sinh Viên : Trần Thành ðức - Lớp : 46TH Trang 67

- Hệ thống chưa thu ñược số ñiện thoại của cuộc gọi tới. - Hệ thống hiện chỉ ñáp ứng ñược 1 ñường truyền trong một

Một phần của tài liệu ĐỒ ÁN TỐT NGHIỆP KỸ SƯ :" XÂY DỰNG HỆ THỐNG TRẢ LỜI TỰ ĐỘNG " DOCX (Trang 53 -75 )

×