Đồ án Phân tích thiết kế hệ thống Xây dựng ứng dụng truyền thông âm thanh trên mạng cục bộ

Đề tài :  
Xây dựng ứng dụng truyền thông  
âm thanh trên mạng cục bộ  
LỜI NÓI ĐẦU  
Trong những năm gần đây, mạng máy tính ngày càng trở nên phổ biến. Việc liên kết  
các máy tính trên môi trường mạng cũng như liên kết các mạng lại với nhau đem lại cho  
chúng ta nhiều lợi ích trong công việc cũng như trong việc học tập nghiên cứu, giải trí.  
Chúng ta có thể sử dụng các tài nguyên sẵn có được chia xẻ như file server, printer, máy  
fax, ... môi trường mạng còn là một môi trường thông tin nhanh chóng và tiện lợi nhờ vào  
các cơ chế truyền thông trên mạng như : e-mail, www ...  
Bên cạnh đó, tốc độ phát triển của máy tính PC cũng rất nhanh chóng. Các kỹ thuật  
hiện đại đã giúp tạo ra các máy PC với tốc độ tính toán nhanh hơn, bộ nhớ lớn hơn và khả  
năng xử lý của nó cũng ngày càng đa dạng hơn trong khi giá thành ngày càng rẻ hơn. Một  
trong những khả năng ưu việt của máy PC hiện nay là hỗ trợ multimedia. Các máy PC ngày  
nay giao tiếp với con người không chỉ bằng text mà còn kết hợp tất cả các phương tiện khác  
như tiếng nói, hình ảnh.  
Việc đưa kỹ thuật multimedia vào các ứng dụng truyền thông trên mạng giúp chúng  
ta tạo ra nhiều ứng dụng phong phú hơn. Chẳng hạn hộp thư điện tử ngày nay có thể không  
chỉ là văn bản mà còn bao gồm tiếng nói, hình ảnh. Các trang web trở nên sinh động hơn  
hẳn khi kèm theo kỹ thuật multimedia. Bên cạnh đó, chúng ta có thể thiết kế các ứng dụng  
tiện ích như Video conference, voice mail...  
Thông qua chương trình này, người sử dụng có thể trao đổi thông tin với nhau bằng  
tiếng nói. Chương trình này đã được hiện thực rất nhiều trong các lĩnh vực thông tin như  
điện thoại, viễn thông, máy tính . . . Tuy nhiên nó chưa được áp dụng và phát triển rọng rãi  
như trên các lĩnh vực thông tin khác do sự hạn chế của thiết bị. Ngày nay, khi công nghệ  
thông tin đã phát triển thì việc hiện thực chương trình này là hoàn toàn có thể. Ứng dụng  
trong nhiều lĩnh vực khác nhau như :  
•Việc dạy học từ xa.  
•Việc chẩn đoán, chữa bệnh từ xa.  
•Hội thảo, thảo luận theo nhóm.  
•Công cụ trao đổi thông tin bằng hình ảnh và âm thanh.  
Mục tiêu của đồ án tốt nghiệp là tìm hiểu các mô hình và công nghệ truyền âm thanh  
trên mạng máy tính, trên cơ sở đó xây dựng ứng dụng truyền thông âm thanh thoại trên  
mạng cục bộ. Đồ án sẽ xây dựng thử nghiệm một hệ thống cho phép trao đổi thông tin bằng  
tiếng nói thoại, tương tác điểm – điểm trên mạng LAN. Đồ án được trình bày gồm 5 chương  
với bố cục như sau :  
Chương I : Tìm hiểu các mô hình điện thoại qua mạng, Từ đó đưa ra mô hình sẽ thực thi  
trong đồ án này.  
Chương II: Giới thiệu chung về các giao thức truyền thông trên mạng Internet và vào khảo  
sát cụ thể các giao thức này.  
Chương III : Giới thiệu các chuẩn mã hoá và nén âm thanh.  
Chương IV : Tìm hiều môi trường lập trình SDK Windows và ứng dụng trên mạng.  
Chương V : Thiết kế chương trình truyền tiếng nói qua mạng LAN thông qua sự trợ giúp  
của công cụ SDK. Đánh giá và các kết quả thử nghiệm.  
Phần kết luận : Nêu những kết quả của đề tài và hướng nghiên cứu hướng phát triển tiếp  
theo.  
Việc nghiên cứu lý thuyết một cách hệ thống và xây dựng chương trình phần mềm  
đòi hỏi phải đầu tư nhiều thời gian. Với thời gian có hạn cho nên bài luận văn này của em  
không tránh khỏi những thiếu sót, em rất mong được sự chỉ dẫn thêm của thầy cô và các  
bạn.  
Nhân đây, em xin chân thành cám ơn đến PGS - TS Nguyễn Thị Hoàng Lan, người  
trực tiếp hướng dẫn em hoàn thành cuốn luận văn này. Em xin chân thành cám ơn các thầy  
cô trong khoa Công nghệ thông tin Trường ĐH Bách Khoa HN, Trường ĐH Thủy Sản và  
toàn thể các bạn đã giúp đỡ em hoàn thành cuốn luận văn này.  
CHƯƠNG I  
TÌM HIỂU MÔ HÌNH ĐIỆN THOẠI QUA MẠNG  
I.1 CÁC MÔ HÌNH ĐIỆN THOẠI  
I.1.1 MÁY TÍNH ĐẾN MÁY TÍNH  
Trong mô hình này cả hai thuê bao đều sử dụng máy tính được nối vào mạng IP như  
một thiết bị đầu cuối. Tiếng nói được mã hoá sau đó là nén và quá trình nhận dữ liệu hoàn  
toán giống nhưng với quy trình ngược lại là giải nén, giải mã bằng phần mềm. Trong mô  
hình này đòi hỏi cả hai thuê bao cần phải có soundcard, microphone, loa và phần mềm  
giống nhau.[1]  
IP  
Máy tính  
Máy tính  
Hình I.1 : Mô hình PC - PC  
I.1.2 MÁY TÍNH ĐẾN ĐIỆN THOẠI HOẶC ĐIỆN THOẠI ĐẾN MÁY TÍNH  
Trong mô hình này, một thuê bao sử dụng máy tính nối mạng với mạng còn thuê bao  
kia sử dụng điện thoại trong mạng PSTN/ISDN/GSM/TDM. Sử dụng một gateway để  
chuyển tiếng nói trên mạng IP thành tiếng nói trên mạng PSTN và trao đổi thông tin giữa  
hai mạng trên. Như vậy, ở đây máy tính phải đầy đủ các thiết bị như Soundcard, loa,  
microphone và phần mềm thông qua server của mạng IP để có thể kết nối với mạng PSTN  
thông qua Geteway.  
Máy tính  
Đin thoi  
IP  
PSTN  
Hình I.2 : Mô hình Máy tính – Điện thoại  
I.1.3 ĐIỆN THOẠI ĐẾN ĐIỆN THOẠI  
Trong mô hình này, cả hai thuê bao đều sử dụng điện thoại bình thường và mạng IP  
được sử dụng trong trường hợp cuộc gọi đường dài. Gateway được sử dụng ở cả hai đầu để  
chuyển đổi dữ liệu giữa các mạng với nhau.[1]  
IP  
PSTN  
PSTN  
Hình I.3 : Mô hình Điện thoại – Điện thoại  
I.2 YÊU CẦU ỨNG DỤNG TRUYỀN ÂM THANH TRÊN MẠNG LAN  
Trong phần này sẽ phân tích các yêu cầu xây dựng ứng dụng truyền âm thanh trên  
mạng LAN : Từ ba mô hình trên em nhận thấy mô hình 2 và 3 đòi hỏi quá trình nghiên cứu  
và thiết bị phức tạp, đòi hỏi phải đầu tư công nghệ mới có thể thực hiện được. Nên trong đồ  
án này chỉ có thể thức hiện theo mô hình 1 là PC – PC, nó đơn giản hơn và không cần đầu  
tư thiết bị mới, có thể tận dụng các thiết bị có sẵn và điều quan trọng có thể thử nghiệm  
hoàn chỉnh trong phạm vi đồ án.  
Vấn đề đặt ra là với một hệ thống mạng LAN, WAN cùng với tài nguyên sẵn có của  
nó xây dựng một chương trình truyền tiếng nói với thời gian thực cho phép từ máy này sang  
máy khác (point to point) với một số các yêu cầu thích hợp giống như việc xử lý và truyền  
tiếng nói trong thông tin liên lạc (điện thoại hữu tuyến). Chương trình sử dụng giao thức  
TCP/IP là một giao thức phổ biến và tin cậy hiện nay để kết nối và truyền tiếng nói. Do sử  
dụng giao thức TCP là giao thức có liên kết nên dẫn đến độ trễ rất lớn nhưng với ứng dụng  
trong mạng LAN thì vẫn có thể chấp nhận được. Ngay khi tiếng nói được thu và có thể qua  
một số các xử lý như mã hoá tiếng nói hoặc nén trên một máy, tiếng nói được truyền tới  
máy cần kết nối và qua các xử lý ngược so với lúc thu như giải nén và giải mã để được phát  
ra loa. Chương trình cho phép kết nối hai máy và tạo một mô hình điện thoại trên máy tính  
như điện thoại hữu tuyến thông thường. Bất kỳ máy nào trong mạng cũng có thể ở chế độ  
chờ hay chế độ chạy nền (background) gọi máy là P-SERVER; máy ở chế độ gọi (active)  
gọi là P-CLIENT. Như vậy một máy trong mạng có thể là P-SERVER hoặc P-CLIENT.  
Trên môi trường mạng, khi chúng ta muốn nói chuyện một người trên một máy nào đó,  
chúng ta sẽ tiến hành việc gọi liên kết. Việc gọi liên kết được tiến hành bằng việc xác định  
địa chỉ IP của máy mà chúng ta cần liên kết. Sau đó chúng ta sẽ chờ việc xác lập liên kết. Ở  
máy được gọi sẽ có thông báo cho người sử dụng biết rằng có một người khác muốn nói  
chuyện. Tùy theo người đó quyết định có chấp nhận hay không. Nếu chấp nhận thì liên kết  
sẽ được xác lập và hai bên sẽ có thể tiến hành trao đổi thông tin với nhau.  
Trong quá trình trao đổi thông tin, các máy sẽ truyền tiếng nói của người sử dụng  
đồng thời nhận dữ liệu âm thanh của máy liên kết. Khi nói chuyện xong, liên kết sẽ bị hủy  
bỏ và chương trình kết thúc. Nếu máy được gọi không có người trả lời thì sau thời gian chờ  
vượt quá giới hạn thì liên kết cũng sẽ bị huỷ bỏ. Vì dữ liệu truyền nhận trong chương trình  
là dữ liệu dạng liên tục của âm thanh cho nên có các yêu cầu đặt ra như sau: Bảo đảm tính  
mạch lạc của dữ liệu. Tiếng nói trong quá trình thông tin phải rõ ràng, liền lạc, không bị  
ngắt quãng.  
Các yêu cầu trên đặt ra các nhiệm vụ mà chúng ta phải giải quyết trong việc xây  
dựng chương trình. Đối với dữ liệu là âm thanh, chúng ta phải xem xét các thông số trong  
quá trình lấy mẫu ở đầu vào. Các thông số đặc trưng như : tần số lấy mẫu, số bit biểu diễn  
cho một điểm lấy mẫu, kênh lấy mẫu được sử dụng 1 kênh (mono) hay hai kênh (stereo). Do  
đó chúng ta phải tổ chức kích thước buffer âm thanh sao cho phù hợp với việc truyền nhận  
đạt tốc độ cao. Một vấn đề khác được đặt ra với dữ liệu âm thanh là việc nhận và phát ở đầu  
ra, chúng ta phải quan tâm đến việc xử lý và loại bỏ các tín hiệu nhiễu giúp cho âm thanh  
được rõ ràng, trung thực. Do việc truyền nhận dữ liệu là trên môi trường mạng nên chúng ta  
phải quan tâm đến tốc độ, lưu lượng trao đổi dữ liệu, thời gian truyền nhận để đưa ra cách  
giải quyết cho phù hợp. Ngoài các vấn đề chính ở trên, một số yêu cầu khác đặt ra cho ứng  
dụng như : cơ chế tạo lập liên kết, việc chọn lựa các dạng format dữ liệu, định các thông số  
thời gian. Tất cả các nhiệm vụ thực thi đều phải được thực hiện thông qua giao diện dễ dàng  
cho người sử dụng.[3]  
Trường hợp mở rộng hệ thống cho mạng Internet cần một kết nối giữa server mạng  
với tổng đài mạng PABX, yêu cầu này đòi hỏi phức tạp hơn và cần có các trang thiết bị để  
thử nghiệm. Bởi vậy trong đồ án này em chỉ nghiên cứu cách thức truyền tiếng nói trên  
mạng nội bộ.  
CHƯƠNG II  
KHẢO SÁT CÁC GIAO THỨC TRUYỀN THÔNG  
II.1 KHÁI NIỆM CƠ BẢN GIAO THỨC TCP/IP  
Trong hệ thống mạng Internet, mỗi máy có một tên và một địa chỉ IP (Internet  
Protocol). Tên hay địa chỉ IP đều xác định duy nhất một máy trong hệ thống mạng Internet.  
Giữa tên máy và địa chỉ IP đều có thể chuyển đổi thông qua các hàm. Địa chỉ IP đều được  
biểu diễn bằng một số 32 bits. Mỗi giao diện mạng trong một nút nếu có hỗ trợ một ngăn  
xếp IP đều được gán một địa chỉ IP. Địa chỉ IP gồm 2 phần : chỉ số mạng(netid) và chỉ số  
của máy chủ (hostid). Những bits quan trọng nhất được dùng để xác định số lượng bits dùng  
cho netid và hostid. Có 5 lớp địa chỉ được xác định là A,B,C,D và E. Trong đó, lớp A,B,C  
chứa địa chỉ có thể gián được. Lớp D dành riêng cho kỹ thuật Multicasting và được sử dụng  
trong các giao thức đặc biệt để truyền thông điệp đến một nhóm nút được chọn lọc. Lớp E  
dành riêng cho những ứng dụng trong tương lai.[5]  
Hình II.1 Các lớp đại chỉ IP  
Hình II.2 TCI/IP và mô hình OSI  
Netid nhận dạng cho từng mạng riêng biệt. Các kiểu lớp địa chỉ IP cho thấy số lượng  
mạng và số lượng nút của mỗi lớp khác nhau. Bảng dưới cho thấy số lượng mạng và số  
lượng nút có thể của mỗi lớp địa chỉ :  
Lớp địa chỉ  
Số lượng mạng  
127  
Số lượng nút  
16.777.241  
65.534  
A
B
C
16.383  
2.097.151  
254  
Mạng lớp A dùng cho mạng diện rộng. Trường netid có 7 bits nên có thể có 127  
mạng. Mạng lớp B là mạng có kích thước trung bình và thích hợp cho các tổ chức có quy  
mô lớp và vừa. Mạng lớp C dùng trong cơ quan nhỏ, trong đó mỗi mạng chỉ có không hơn  
254 nút.  
Con số 32 bits biểu thị 4 chữ số thập phân tương ứng giá trị 4 byte tạo thành địa chỉ  
IP. Những số thập phân cách nhau bởi dấu chấm (.). Một ví dụ về tên máy và địa chỉ IP của  
máy :  
Hostname : viethung  
IP Address : 192.168.0.55  
II.1.1 KHÁI NIỆM SOCKET  
Socket là một đơn vị cấu trúc truyền thông 2 chiều. Chúng có thể đọc hay ghi lên nó.  
Tuy nhiên mỗi socket là một thành phần của một mối nào đó giữa các máy trên mạng máy  
tính và các thao tác đọc ghi chính là các thao tác trao đổi dữ liệu giữa các ứng dụng trên  
nhiều máy khác nhau. Socket là điểm kết nối cuối cùng cho phép những ứng dụng gắn vào  
mạng. Khái niệm socket được cung cấp bởi một thư viện chứa tất cả các hàm yêu cầu cho  
bất kỳ chương trình mạng nào. Khi một ứng dụng yêu cầu các dịch vụ mạng, nó gọi quá  
trình tự tập hợp các thư viện để quản lý hoạt động mạng. Hai loại socket có sẵn stream và  
datagram.[5]  
Những socket stream dùng cho TCP (Transmission Control Protocol), những socket  
datagram dùng UDP (User Datagram Protocol).  
Máy B  
Máy A  
Port  
Mi ni  
Port  
TCI/IP Interface  
Hình II.3 Các socket và port trong mối nối TCP/IP  
Số hiệu cổng  
Mô tả  
0
Reserved  
Management Entry  
Remote Job Entry  
Echo  
2
5
7
9
Discard  
11  
13  
15  
Systat  
Daytime  
Netstat  
17  
Quoted(quote of the day)  
FTP data  
20  
21  
FTP control  
23  
Telnet  
25  
SMTP  
37  
Time  
42  
Host name server  
Login host protocol  
Domain name server  
World wide web HTTP  
ISO-TSAP  
49  
53  
80  
102  
103  
104  
x.4000  
X.4000 sending server  
111  
Sun RPC  
139  
NetBIOS session source  
Reserved  
160-223  
Ghi chú :  
Trị số của cổng trong các ứng dụng :  
- Các ứng dụng chuẩn : 0 – 999  
- Các ứng dụng không chuẩn : 1000 – 64000  
II.1.2 GIAO THỨC IP  
Internet protocol (IP) là một dạng giao thức truyền tin được thiết kế cho mạng  
chuyển mạng gói. Vai trò của IP tương đương với vai trò của tầng mạng trong mô hình OSI.  
Giao thức IP đảm nhiệm việc chuyển những gói mạch dữ liệu (datagram) từ địa chỉ nguồn  
đến địa chỉ đích. Địa chỉ IP có địa chỉ cố định (4 byte) dùng để xác định duy nhất các trạm  
làm việc đang tham gia vào việc truyền, nhận dữ liệu. Trong trường hợp mạng truyền tin chỉ  
có thể truyền những gói dữ liệu có kích thức nhỏ, giao thức IP cũng đảm nhiệm chức năng  
chia nhỏ các gói dữ liệu có kích thước lớn trước khi truyền và gộp chúng lại chúng sau khi  
nhận được.[5]  
Giao thức IP được thiết kế với chức năng chuyển 1 gói các bit, gọi là internet  
datagram từ địa chỉ nguồn đến địa chỉ đích. Đây là một giao thức theo kiểu không liên kết,  
nghĩa là không có giai đoạn thiết lập liên kết trước khi truyền dữ liệu, nó cũng không có các  
cơ chế bảo đảm thông tin tới đích an toàn, không có cơ chế điều khiển luồng dữ liệu. Trên  
thực tế việc thông báo về lỗi đường truyền có thể được thực hiện nhờ một giao thức khác có  
tên ICMP( Internet Control Message Protocol).  
Địa chỉ IP như đã nói ở trên, là một chuỗi bit có độ dài 4 byte, được phân chia làm 5  
lớp và các bit đầu tiên được dùng làm định danh lớp địa chỉ.  
II.2 GIAO THỨC TCP  
Giao thức TCP là giao thức dùng cho tầng ngay trên tầng IP. Đối với mô hình OSI, ta  
có thể thấy tầng TCP có vai trò tương ứng với các tầng giao vận và tầng phiên .  
Khác với IP, TCP là giao thức có liên kết (connection oriented), nghĩa là nhất thiết  
phải có giai đoạn thiết lập liên kết giữ các cặp thực thể TCP trước khi chúng có trao đổi dữ  
liệu với nhau. Giao thức TCP cung cấp một khả năng truyền dữ liệu một cách an toàn giữa  
các thực thể trên mạng. Nó cung cấp các chức năng nhằm kiểm tra tính chính xác của dữ  
liệu khi gửi đến và gửi lại dữ liệu khi có lỗi xảy ra.[5]  
Đơn vị dữ liệu cơ bản của TCP gọi là segment. Trong segment có một cặp tham số là  
số hiệu cổng của trạm nguồn và số hiệu cổng của trạm đích. Mỗi một tiến trình ứng dụng tại  
một trạm sẽ truy cập các dịch vụ TCP thông qua một cổng. Một cổng như vậy kết hợp với  
một địa chỉ IP sẽ tạo thành một socket duy nhất trong mạng. Dịch vụ TCP được cung cấp  
nhờ liên kết logic giữa một cặp socket, mỗi socket có thể tham gia liên kết với nhiều socket  
ở xa khác nhau. Trước khi truyền dữ liệu chúng thiết lập liên kết và khi không có nhu cầu  
truyền dữ liệu nữa thì liên kết sẽ được giải phòng.  
Mỗi ứng dụng TCP gồm hai phần là client và server.  
Lưu đồ sau minh họa các bước cần thiết để các ứng dụng client và server giao tiếp với nhau  
:
Hình II.4 Tạo kết nối giữa client và server theo giao thức TCP  
II.2.1 CÁCH THỨC CÀI ĐẶT ỨNG DỤNG TCP SERVER  
Ứng dụng TCP server làm việc theo qui trình sau:  
Gọi hàm socket để tạo một socket.  
Gọi hàm bind để kết buộc socket với một port, đối với mỗi giao thức ứng dụng chuẩn  
thì sẽ có một hằng số được định nghĩa sẵn trong winsock cho port của giao thức đó.  
Gọi hàm listen để chờ đến khi có một client nối vào port.  
Khi có một client nối vào thì hàm listen trả điều khiển về, ứng dụng server gọi hàm  
accept để xác nhận mối nối của client.  
Gọi các hàm gửi hay nhận dữ liệu để trao đổi thông tin với client, ví dụ send, recv.  
Sau khi đã hoàn tất quá trình trao đổi dữ liệu, ứng dụng server gọi hàm closesocket  
để đóng socket đã tạo.  
Hình II.5 Sơ đồ giao tiếp giữa server với client  
II.2.2 CÁCH THỨC CÀI ĐẶT ỨNG DỤNG CLIENT TCP  
Ứng dụng client TCP làm việc theo qui trình sau :  
- Gọi hàm socket để tạo một socket .  
- Gọi hàm connect để nối vào server.  
- Gọi hàm gửi hay nhận dữ liệu để trao đổi thông tin với server, ví dụ như hàm  
send, recv.  
- Sau khi đã hoàn tất quá trình trao đổi dữ liệu, ứng dụng client gọi hàm  
closesocket để đóng socket đã tạo.  
Hình II.6 Sơ đồ giao tiếp của client với server  
Ghi chú:  
Các bước trên cơ bản là giống nhau cho các ứng dụng client và server viết trên  
Windows NT và UNIX. Tuy nhiên, với ứng dụng viết trên UNIX thì không cần gọi các hàm  
WSAStartup, WSACleanup để khởi tạo thư viện quản lý socket và đóng bộ phận này. Lý  
do, với UNIX thì bộ phận quản lý socket đã được hệ điều hành nạp sẵn.  
II.3 GIAO THỨC UDP  
Giao thức UDP cung cấp khả năng broadcast trên hệ thống mạng TCP/IP . Chúng ta  
cũng cần cài đặt ứng dụng client và server. Ứng dụng client có nhiệm vụ gửi thông báo đến  
tất cả các instance của ứng dụng server đang chạy trên hệ thống mạng.[5]  
II.3.1 CÁCH CÀI ĐẶT ỨNG DỤNG SERVER UDP  
Ứng dụng server UDP được cài đặt đơn giản hơn ứng dụng TCP. Chúng ta cần các  
bước chính sau đây :  
- Gọi hàm socket để tạo một socket .  
- Gọi hàm bind để kết buộc socket với một port, đối với mỗi giao thức ứng dụng  
chuẩn thì sẽ có một hằng số được định nghĩa sẵn trong winsock cho port của giao  
thức đó.  
- Gọi các hàm gửi hay nhận dữ liệu để trao đổi thông tin với client, ví như hàm  
sendto, recvfrom.  
- Sau khi đã hoàn tất quá trình trao đổi dữ liệu, ứng dụng server gọi hàm  
closesocket để đóng socket đã tạo.  
II.3.2 CÁCH CÀI ĐẶT ỨNG DỤNG CLIENT UDP  
Ứng dụng client UDP thực hiện các bước sau :  
- Gọi hàm socket để tạo một socket.  
- Gọi hàm setsockopt để làm cho socket có khả năng broadcoast .  
- Gọi các hàm gửi hay nhận dữ liệu để trao đổi thông tin với server, ví dụ hàm  
sendto, recvfrom.  
- Sau khi đã hoàn tất quá trình trao đổi dữ liệu, ứng dụng client gọi hàm  
closesocket để đóng socket đã tạo.  
Ghi chú:  
Ngoài các bước trên, các ứng dụng viết trên Windows NT (kể cả client và server)  
phải gọi hàm WSAStartup để khởi tạo thư viện liên kết động Windows Socket DLL và hàm  
WSACleanup để đóng thư viện này. Tuy nhiên, đối với ứng dụng viết trên UNIX thì bộ  
phận quản lý socket đã được hệ điều hành nạp sẵn và do đó không cần gọi các hàm như  
WSAStartup, WSACleanup của Windows NT.  
CHƯƠNG III  
PHƯƠNG PHÁP MÃ HOÁ VÀ NÉN ÂM THANH  
III.1 CÁC PHƯƠNG PHÁP MÃ HOÁ  
III.1.1 GIỚI THIỆU CHUNG  
Trong hệ thống xử lý âm thanh, âm thanh được mã hoá PCM. Các mã hoá này cho  
phép khôi phục một cách tương đối trung thực tín hiệu âm thanh trong dải tần nghe được.  
Tuy nhiên trong một ứng dụng đặc biệt như truyền dữ liệu âm thanh trên mạng, âm thanh  
được truyền với tốc độ thấp hơn nhiều. Từ đó xuất hiện một số kỹ thuật mã hoá và nén tín  
hiệu âm thanh như ADPCM, LPC, GSM….  
Các loại phần mềm và phần cứng thực hiện mã hoá và nén âm thanh sang các loại dữ  
liệu số thường được gọi là codec(Coder-Decoder). Có thể phân loại các phương pháp mã  
hoá âm thanh thành 3 loại :  
Mã hoá dạng sóng(waveform codec) : Giữ nguyên hình dạng nguyên thuỷ của sóng  
âm. Phương pháp mã hoá này đòi hỏi tốc độ dữ liệu rất cao nhưng lại cho chất lượng âm  
thanh rất tốt. Ưu điểm của bộ mã hoá này là độ phức tạp, giá thành thiết kế, độ trễ và công  
suất tiêu thụ thấp. Bộ mã hoá sóng đơn giản nhất là điều biên xung mã (PCM)…Tuy nhiên  
nhược điểm của bộ mã hoá là không tạo được âm thanh chất lượng cao tại tốc độ dưới 16  
kbps, bộ mã nguồn khắc phục được nhược điểm này.[4]  
Mã hoá nguồn (Source codec) : Cho phép đạt được tốc độ truyền dữ liệu thấp, có thể  
thực hiện tại tốc độ bit > 2kbps, nhưng chất lượng âm thanh không cao.  
Mã hoá hỗn hợp (hybrid codec) : Sử dụng cả hai phương pháp trên để tạo ra tín hiệu  
âm thanh có chất lượng tốt ở tốc độ dữ liệu trung bình.  
Mã hoá hn  
hp  
Mã hoá dng sóng  
Cht lượng tiếng nói  
Mã hoá dđoán  
Rt tt  
tuyến tính LPC  
Tt  
Trung  
bình  
2
4
8
16 32 64  
Tc độ  
Hình III.1 Biểu đồ so sánh các phương pháp mã hoá  
Mã hoá dạng sóng  
Đòi hỏi tốc độ bit rất cao nhưng tạo ra chất lượng âm thanh hoàn hảo và thời gian xử  
lý rất ít, bởi vì phương pháp này chỉ đơn giản lấy mẫu tín hiệu ở tốc độ nào đó và lượng tử  
hoá từng mẫu dùng lượng tử hoá tuyến tính. Cách tiếp cận này gọi là điều biến xung  
mã(PCM). Am thanh mã hoá theo phương pháp PCM, lấy mẫu tốc độ 8KHz, lượng tử  
8bit/mẫu, cho tốc độ bit ra là 64 kbps.  
Phương pháp điều biên xung mã vi phân (DPCM) dự đoán giá trị hiện tại dựa vào các  
giá trị trước của các mẫu quá khứ, chỉ lưu trữ giá trị sai số lượng tử. Giá trị sai số này sẽ nhỏ  
hơn giá trị thực của mẫu, do đó cho phép lưu trữ giảm đi một phần.  
Một cải tiến của DPCM là điều biến xung mã vi phân thích nghi(ADPCM). Bộ tiến  
đoán và lượng tử hoá trong phương pháp này có khả năng thích nghi với tín hiệu cần mã  
hoá. ADPCM hoạt động tốc độ 32 kbps cho chất lượng tương đối với PCM 64 kbps.  
Mã hoá dự đoán tuyến tính LPC  
Một vấn đề đáng quan tâm là phương pháp mã hoá dạng sóng là khi lấy mẫu tín hiệu  
tương đương sẽ cho ra dòng dữ liệu khá lớn. Các phương pháp mã hoá nguồn đi theo một  
cách tiếp cận khác, người ta phải qua tâm đến việc âm thanh được tạo ra như thế nào, nếu có  
thể mô hình hoá cách tạo ra âm thanh thì không phải truyền đi các mẫu của tín hiệu âm  
thanh mà chỉ cần gửi đi cách thức tạo ra âm đó trên đến bộ mã. Như vậy theo phương pháp  
này thay vì mã hoá và truyền trực tiếp âm thanh thì người ta chỉ mã hoá các tham số tạo ra  
âm thanh tại nơi nhận, từ các tham số này bộ tổng hợp tiếng nói sẽ tổng hợp nên tiếng nói  
nhân tạo. Những phương pháp đi theo cách tiếp cận này gọi là Vocoder. Mô tả đơn giản  
nhất của mô hình này là mã hoá dự đoán tuyến tính (LPC). Phương pháp mã hoá Vocoder  
cho tốc độ bit rất thấp (>2 kbps) nhưng độ phức tạp cao hơn với phương pháp mã hoá dạng  
sóng và chất lượng âm thanh không trung thực .  
Mã hoá hỗn hợp  
Để giải quyết vấn đề của phương pháp mã hoá dạng sóng và của phương pháp mã  
hoá dự đoán, một nhóm các phương pháp mã hoá sử dụng phương pháp AbS (Analysis by  
Synthesis) để tạo ra mô hình máy phát âm phức tạp hơn. Trong khi Vocoder sử dụng bộ lọc  
tuyến tính kích thích bởi chuỗi xung tuần hào hay chuồi nhiễu trắng để tạo ra âm hữu thanh  
hay vô thanh, AbS sử dụng một dãy các trạng thái được lưu trữ trong codebook. Khi xem  
xét một khung âm thanh, AbS kiểm tra khung đó với rất nhiều tín hiệu kích thước rồi sẽ  
chọn tín hiệu nào đưa ra kết quả gần đúng nhất với âm thanh ban đầu. Bộ giải mã chỉ cần  
biết chỉ số của xung kích thước đó, sau đó tra codebook rồi tái tạo lại âm thanh. Một số các  
tham số khác nhau như năng lượng của sự kích thích và giá trị chu kỳ cũng cần đến khi giải  
mã. Các phương pháp mã đi theo cách này đòi hỏi quá trình tính toán phức tạp, có thể tất cả  
các mục trong từ điển đều phải thử để đưa ra giá trị tốt nhất.  
Hệ thống thông tin toàn cầu GMS : GSM là mộ chuẩn điện thoại được Viện Tiêu  
Chuẩn Viễn Thông Châu Au ETSI để ra. Đầu vào của bộ nén GMS 06.10 bao gồm các  
khung 160 mẫu các tín giệu PCM tuyến tính lấy mẫu tại tần số 8 kHz. Chu kỳ mỗi khung là  
20 ms, đây là khoảng thời gian rất ngắn và trong khoảng thời gian này cho phép được coi tín  
hiệu âm thanh ổn định. Độ trễ truyền dẫn thông tin được tính bằng tổng thời gian xử lý và  
kích thước khung của thuật toán.  
Bộ mã hoá thực hiện việc nén một khung tín hiệu đầu vào 160 mẫu (20 ms) vào một  
khung 260 bit. Như vậy một giây nó sẽ thực hiện nén được 13.133 bit ( tương đương với  
1625 byte). Do vậy để nén một megabyte tín hiệu chỉ cần một thời gian chưa đầy 10  
phút.[4]  
Trung tâm của quá trình xử lý tín hiệu là bộ lọc. Đầu ra của bộ lọc phụ thuộc rất  
nhiều vào giá trị đầu vào đơn của nó. Khi có một dãy các giá trị đưa qua bộ lọc thì dãy tín  
hiệu này sẽ được dùng để kích thích bộ lọc. Dạng của bộ nén GMS 06.10 dùng để nén tín  
hiệu âm thanh bao gồm 2 bộ lọc và một giá trị kích thước ban đầu. Bộ lọc ngắn hạn dự đoán  
tuyến tính được đặt tại tầng đầu tiên của quá trình nén và tại tầng cuối cùng trong suốt quá  
trình dãn. Nó được kích thích bởi đầu ra của bộ lọc dự đoán dài hạn (LTP).  
III.1.2 PHƯƠNG PHÁP ĐIỀU BIẾN XUNG MÃ PCM  
Mã hoá tín hiệu âm thanh liên qua tới các bước sau đây :  
a. Tín hiệu âm thanh được lấy mẫu với tần số tối thiểu là :  
fs 2 fmax  
fs : tần số lấy mẫu  
fmax : tần số lớn nhất trong tín hiệu được lấy mẫu.  
Việc lấy mẫu như vậy là đảm bảo hoàn toàn khôi phục lại được tín hiệu tương đương  
ban đầu bởi thiết bị khôi phục thiết bị. Tần số lấy mẫu nhỏ nhất cũng có thể nhỏ hơn 2fmax  
nếu tần số thấp nhất của tín hiệu khác không.  
b. Biên độ của từng mẫu tín hiệu được lượng tử hoá thành một trong số 2B mức. Điều này  
có nghĩa dùng B bit trên một mẫu và thông lượng là 2fsB bit/giây với tín hiệu được lọc  
thông thấp.  
c. Các mức biên độ riêng biệt được thể hiện bằng các từ nhị phân riêng biệt có chiều dài B.  
ví dụ : với B =2 thì một từ có thể thể hiện cho 4 mức riêng biệt bằng cách sử dụng các từ  
mã 00, 01, 10 và 11.  
d. Đối với việc giải mã, các từu nhị phân được ứng thành các mức biên độ và chuỗi xung  
biên độ – thời gian được lọc thông thấp với một bộ lọc có dải tần giới hạn là fs. Bây giờ  
chúng ta giả sử là các bước a, c và d có thể thực hiện một cách hoàn toàn chính xác,  
chúng ta tập trung vào việc xác định các lỗi lượng tử xuất hiện trong bước b.  
Cho bước lượng tử (kí hiêu : ). Nếu số lượng các mức lượng tử rất lớn, người ta giả sử  
rằng sai số lượng tử có phân bố đồng nhất như sau :  
1
2
2
p(E) , - E (1)  
Điều này sẽ không đúng nếu tín hiệu là bão hoà bộ lượng tư. Ví du như biểu diễn  
hình 1, đầu ra của bộ lượng tử có thể bão hoà tại 5 với tần số đầu và vượt qua số lượng và  
mỗi lượng tử trong trường hợp này sẽ là một hàm tăng tuyến tính.[4]  
Hình III.2 a.Đặc tuyến lượng tử hoá;b.Đặc tuyết sai số lượng tử; c.VD lượng tử đều  
Nếu như ta cho rằng bộ lượng tử không bị bão hoà. Theo công thức (1) thì giá trị  
bình phương trung bình của sai số lượng tử là :  
2  
12  
2  
E2 p(E)dE   
(2)  
2
Nếu giá trị độ rộng của đầu vào X là Xrms, thì tỷ số tín hiệu/nhiễu được tính bởi :  
SNR X r2ms  
/
2 /12  
(3)  
Ví dụ, cho bộ lượng tử có khoảng biên độ từ – 4Xrms đến + 4Xrms( để thuận tiện về  
mặt lý thuyết, thì độ rộng 8Xrms của bộ lượng tử không có ràng buộc riêng, ngoại trừ các  
trường hợp đặc biệt. Ví dụ, nếu tín hiệu PDF p(x) được biến đổi bằng hàm Gaussian trung  
bình – không, thì các mẫu tín hiệu sẽ rơi bên ngoài khoảng 8Xrms của bộ lượng tử với xác  
xuất nhỏ hơn 1/10.000). bước lượng tử đều có thể được thực hiện tỷ số của khoảng biên độ  
trên số lượng các bước lượng tử (số các mức đầu ra).  
  8X rms / 2B (4)  
Từ (3) và (4) ta có :  
SNR(dB) 10log10 SNR 6B 7,2 (5)  
Công thức trên miêu tả rất tốt về PCM với các điều kiện sau :  
1.Hệ thống hoạt động với kênh sạch(không nhiễu), chỉ giới hạn về sai số lượng tử( và không  
gây ra lỗi các từ mã khi kênh có nhiễu).  
2.Tín hiệu đầu vào đủ phức tạp để loại trừ cấu trúc thời gian hiển nhiên trong dạng tín hiệu  
lỗi, như vậy biểu diễn tĩnh của lỗi trong 1 được thể hiện đầy đủ.  
3.lượng tử hoá đủ mịn(B>6) để ngăn chặn những thành phẩm liên quan đến tín hiệu trong  
dạng tín hiệu lỗi, sai số có thể được đo trong biểu thức công suất nhiễu hay là biến sai số 2.  
4.Bộ lượng tử được sắp với thanh biên độ từ (-4Xrms;+4Xrms)  
như vậy trong lượng tử đều, cứ thêm 1 bit thì được lợi 6 dB và để có chất lượng thích hợp  
thì B >11 do đó thông lượng tương đối lớn.  

Tải về để xem bản đầy đủ

pdf 131 trang yennguyen 28/03/2025 70
Bạn đang xem 30 trang mẫu của tài liệu "Đồ án Phân tích thiết kế hệ thống Xây dựng ứng dụng truyền thông âm thanh trên mạng cục bộ", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfdo_an_phan_tich_thiet_ke_he_thong_xay_dung_ung_dung_truyen_t.pdf