1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

93 987 4
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 93
Dung lượng 733,5 KB

Nội dung

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

Trang 1

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ạivới nhau đem lại cho chúng ta nhiều lợi ích trong công việc cũng như trong việchọ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ó đượcchia xẻ như file server, printer, máy fax, môi trường mạng còn là một môitrường thông tin nhanh chóng và tiện lợi nhờ vào các cơ chế truyền thông trênmạ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 khigiá 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ệnnay là hỗ trợ multimedia Các máy PC ngày nay giao tiếp với con người khôngchỉ 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ạnggiú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áctrang web trở nên sinh động hơn hẳn khi kèm theo kỹ thuật multimedia Bêncạ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ớinhau bằng tiếng nói Chương trình này đã được hiện thực rất nhiều trong cáclĩ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ệchiệ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ựckhác nhau như :

 •Việc dạy học từ xa

Trang 2

 •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ềnthô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ểmtrê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ạngInternet 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ụngtrên mạng

Chương V : Thiết kế chương trình truyền tiếng nói qua mạng LAN thôngqua 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ướngphá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ìnhphầ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àiluậ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 Cô giáo hướng dẫn đã giúp đỡ

em 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ủySản và toàn thể các bạn đã giúp đỡ em hoàn thành cuốn luận văn này

Trang 3

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àomạ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]

Trang 4

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]

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 âmthanh 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ỏiquá 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ácthiế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ênsẵ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ựccho 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

PST N

Trang 5

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ệnthoạ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ứcTCP 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ụngtrong 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ếngnó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ôngthường Bất kỳ máy nào trong mạng cũng có thể ở chế độ chờ hay chế độ chạynề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áynà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ànhbằ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ụngbiế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ệnxong, 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ắtquã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 trongviệ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

Trang 6

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íchthước buffer âm thanh sao cho phù hợp với việc truyền nhận đạt tốc độ cao Mộtvấ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 âmthanh được rõ ràng, trung thực Do việc truyền nhận dữ liệu là trên môi trườngmạng nên chúng ta phải quan tâm đến tốc độ, lưu lượng trao đổi dữ liệu, thờigian 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ácnhiệm vụ thực thi đều phải được thực hiện thông qua giao diện dễ dàng chongườ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ữaserver 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ứucá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ệ

Trang 7

thống mạng Internet Giữa tên máy và địa chỉ IP đều có thể chuyển đổi thôngqua các hàm Địa chỉ IP đều được biểu diễn bằng một số 32 bits Mỗi giao diệnmạ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,Cchứ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ómnú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

Trang 8

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 chothấ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ỉ :

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 chocá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ạothà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

Trang 9

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 hayghi 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ữacá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ốicuối cùng cho phép những ứng dụng gắn vào mạng Khái niệm socket đượccung 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ìnhmạ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ậphợ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)

Trang 10

23 Telnet

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 theokiể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 khitruyề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

Trang 11

đường truyền có thể được thực hiện nhờ một giao thức khác có tênICMP( 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ânchia 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 khichúng có trao đổi dữ liệu với nhau Giao thức TCP cung cấp một khả năngtruyề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ácchứ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ộtcặ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ỗimộ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ộtcổ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 duynhất trong mạng Dịch vụ TCP được cung cấp nhờ liên kết logic giữa một cặpsocket, 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à servergiao tiếp với nhau :

Trang 12

Hình II.4 Tạo kết nối giữa client và server theo giao thức TCPII.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 ứngdụng chuẩn thì sẽ có một hằng số được định nghĩa sẵn trong winsock cho portcủ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ụngserver gọi hàm accept để xác nhận mối nối của client

Trang 13

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àmclosesocket để đóng socket đã tạo

Trang 14

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

Trang 15

- 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àmclosesocket để đóng socket đã tạo

Hình II.6 Sơ đồ giao tiếp của client với server

Ghi chú:

Trang 16

Các bước trên cơ bản là giống nhau cho các ứng dụng client và server viếttrên Windows NT và UNIX Tuy nhiên, với ứng dụng viết trên UNIX thì khôngcầ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ạngTCP/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 đangchạ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 choport 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àmclosesocket để đó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àmclosesocket để đóng socket đã tạo

Trang 17

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 WindowsSocket 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ạpsẵn và do đó không cần gọi các hàm như WSAStartup, WSACleanup củaWindows NT

CHƯƠNG III PHƯƠNG PHÁP MÃ HOÁ VÀ NÉN ÂM THANH

Trang 18

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 trongdả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 sangcác loại dữ liệu số thường được gọi là codec(Coder-Decoder) Có thể phân loạicá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ạicho 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ôngtạo được âm thanh chất lượng cao tại tốc độ dưới 16 kbps, bộ mã nguồn khắcphụ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ệuthấp, có thể thực hiện tại tốc độ bit > 2kbps, nhưng chất lượng âm thanh khôngcao

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

Trang 19

Hình III.1 Biểu đồ so sánh các phương pháp mã hoá

Phương pháp điều biên xung mã vi phân (DPCM) dự đoán giá trị hiện tạidự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íchnghi(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 chochấ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ấymẫ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

Trang 20

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ứctạ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 thanhtạ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óinhâ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ươngpháp mã hoá Vocoder cho tốc độ bit rất thấp (>2 kbps) nhưng độ phức tạp caohơn với phương pháp mã hoá dạng sóng và chất lượng âm thanh không trungthự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ươngpháp mã hoá dự đoán, một nhóm các phương pháp mã hoá sử dụng phươngphá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ầnhào hay chuồi nhiễu trắng để tạo ra âm hữu thanh hay vô thanh, AbS sử dụngmột dãy các trạng thái được lưu trữ trong codebook Khi xem xét một khung âmthanh, 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ínhiệ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ầnbiế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 đượcViện Tiêu Chuẩn Viễn Thông Châu Au ETSI để ra Đầu vào của bộ nén GMS06.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à trongkhoảng thời gian này cho phép được coi tín hiệu âm thanh ổn định Độ trễ

Trang 21

truyền dẫn thông tin được tính bằng tổng thời gian xử lý và kích thước khungcủ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 (20ms) vào một khung 260 bit Như vậy một giây nó sẽ thực hiện nén được 13.133bit ( tương đương với 1625 byte) Do vậy để nén một megabyte tín hiệu chỉ cầnmộ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ị đưaqua 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 đầutiê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ó đượckí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à :

f s2 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ệutươ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ấtcũ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à 2fsBbit/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ânriê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ứcriê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ứcbiê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ó

Trang 22

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ựchiệ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ỗilượ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 :

Trang 23

Hình III.2 a.Đặc tuyến lượng tử hoá; b.Đặc tuyết sai số lượng tử; c.VDlượ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

2 2

12)

( dE E p

Trang 24

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ượngcác bước lượng tử (số các mức đầu ra).

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êntrong 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ôngsuấ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ấtlượng thích hợp thì B >11 do đó thông lượng tương đối lớn

III.2 CÁC PHƯƠNG PHÁP NÉN TIẾNG NÓI III.2.1 GIỚI THIỆU CHUNG

Y tưởng nén tiếng nói là để giảm kích thước nhằm giúp ít tốn băng thôngtruyền qua mạng Dòng dữ liệu tiếng nói được giải nén ở tốc độ lấy mẫu mặcđịnh ( 8bits/mẫu, 8 khz, kênh mono) sẽ yêu cầu đường truyền có tốc độ 8000mẫu/giây * 8 bits/ mẫu = 64 Kbits/giây để truyền dữ liệu qua mạng Do đó, tùytheo tốc độ đường truyền thực tế trên mỗi mạng mà chọn giải pháp nén haykhông nén dữ liệu trước khi truyền dữ liệu âm thanh qua mạng, cũng như chọn

tỉ lệ nén là bao nhiêu cho phù hợp (chọn giải thuật nén) Vì nếu dữ liệu đượcnén thì phải giải nén khi được truyền đến máy nhận, do đó cũng tốn thời gian để

Trang 25

nén và giải nén dữ liệu, điều này dẫn đến ảnh hưởng thời gian thực của hệthống.

Đối với các mạng cục bộ, thường có tốc độ truyền của mạng cao nên cóthể không cần phải nén tiếng nói trước khi truyền

Ngược lại, đối với mạng Internet, hệ thống được kết nối với Internetthông qua các modem chuẩn có tốc độ thấp 14,4 Kbits/s hoặc 28,8Kbits/s thìnhất thiết phải nén tiếng nói trước khi truyền và giải nén trước khi phát Haiphương pháp nén âm thanh thường được dùng nhất để giảm băng thông là GSM

và ADPCM.[2]

III.2.2 CÁC PHƯƠNG PHÁP NÉN CỤ THỂ

III.2.2.1 Phương pháp nén tiếng nói theo chuẩn GSM

Phát triển tại Đại học Kỹ thuật Berlin vào năm 1992, GSM là một trongnhững phương pháp nén âm thanh phức tạp nhất đang được sử dụng, cho tỉ lệnén 1:10 Giải thuật GSM dựa trên giao thức truyền thông Mobile Phone, hiệntại là giao thức phổ biến nhất tại Châu Âu đối với điện thoại di động

Đầu vào của GSM bao gồm các frames 160 tín hiệu, những tín hiệu PCMtuyến tính 13 bits lấy mẫu ở 8 Khz GSM có sẵn trong thư viện C có thể đượcdùng để tạo ra một đối tượng gsm giữ trạng thái cần thiết hoặc để mã hóa nhữngmẫu PCM tuyến tính thành các frames GSM, hoặc giải mã các frames GSMthành các frames PCM tuyến tính Bộ mã hóa nén 160 frames PCM 16 bitsthành các frames GSM 260 bits Tương ứng một giây tiếng nói thành 1625bytes Bởi vì mẫu 260 bits không chẵn để gắn vào các bytes 8 bits, nên bộ mãhóa sẽ mã hóa frame 160 bytes thành frame GSM 264 bits Một buffer GSMnén 1 Mb có thể lưu tiếng nói gần 10 phút.[2]

Một dòng dữ liệu tiếng nói giải nén 16 bits/mẫu ở 8Khz yêu cầu băngthông tốc độ 128 Kbits/s, trong khi đó băng thông để truyền qua mạng nếu dùnggiải thuật nén GSM , tiếng nói 16 bits/mẫu chỉ cần:

( 264 bits * 8.000 mẫu/giây)/160 mẫu = 13,2 Kbits/giây Cho tỉ lệ nén 128/13,2 = 9,7 tương đương 10 :1

Trang 26

III.2.2.2 Phương pháp nén ADPCM

Nguyên tắc :

Là một phương pháp có thể được dùng để nén các khối dữ liệu tiếng nóitrước khi chúng được truyền đến các máy nhận và giải nén chúng để phát lại saukhi được nhận từ đường truyền

Hình sau là một giản đồ khối đơn giản của bộ mã hóa và giải mã ADPCM:

Hình III.3 Sơ đồ khối bộ mã hoá và giải mã ADPCM

Bộ mã hóa ADPCM giả sử rằng những mẫu âm thanh kế cận nhau sẽgiống nhau, vì thế thay vì biểu diễn mỗi mẫu độc lập như PCM ADPCM tínhtoán sự chênh lệch giữa các mẫu âm thanh và giá trị tiên đoán của nó và tạo ranhững giá trị vi phân PCM Có nhiều giải thuật ADPCM khác nhau được đềnghị Trong phạm vi luận văn này em tìm hiểu và ứng dụng giải thuật đưa ra bởiIMA (Interactive Multimedia Association)

Giải thuật IMA ADPCM nén những mẫu PCM tuyến tính thành các mứclượng hóa 4 bits, trong đó mỗi mẫu DPCM được biểu diễn bằng các giá trị âm

Trang 27

thanh 16 bits, do đó giải thuật này cung cấp một tỉ lệ nén là 4:1 Ví dụ tiếng nói

16 bits/mẫu, 8 Khz, kênh mono yêu cầu tốc độ truyền dữ liệu là 128 Kbits/s ,khi nén với giải thuật IMA_ADPCM chỉ cần tốc độ truyền dữ liệu 32 Kbits/s làđủ

Quá trình thực hiện của giải thuật IMA_ADPCM là đọc từ những bộ đệm

có giá trị kiểu nguyên và nén chúng thành một mẫu âm thanh 16 bits được biểudiễn bằng các mức lượng hóa 4 bit Bởi vì không có giới hạn trong kích thướcbuffers tiếng nói nên những mã ADPCM được kết hợp một cách dễ dàng vớicác phần còn lại của chương trình để nén tiếng nói khi thu và giải nén trở lại khiphát

Giải thuật nén IMA ADPCM :

Theo sơ đồ mã hóa trên chúng ta thấy giải thuật IMA ADPCM tính toán

sự chênh lệch giữa mẫu âm thanh hiện tại X[n] và mẫu đã tiên đoán trước 1] và sử dụng sự chênh lệch đó để tính toán mức lượng hóa D[n] cho mỗi mẫu.Giá trị Xp[n-1] chỉ là giá trị trễ thời gian của giá trị X[n] Hình sau chỉ ra sơ đồ

Xp[n-khối của quá trình lượng hóa dùng giải thuật IMA Mỗi mức đầu ra của bộlượng hóa được biểu diễn bằng bốn bits Bit thứ tư là bit dấu của mức độ lượnghóa.[2]

Trang 28

Từ sơ đồ giải thuật ta thấy rằng bit thứ ba được cài đặt lên 1 nếu độ chênhlệch giữa X[n] và Xp[n-1] là lớn hơn hay bằng step_size Sau đó step_size đượcchia 2 và so sánh trở lại với độ chênh lệch (độ chênh lệch sẽ được tính lại Mẫu

= mẫu-kích thước mẫu tại bước giải thuật nếu bit thứ ba được cài lên1) Bit thứhai cũng được cài lên 1 khi độ chênh lệch mới ≥ kích thước mẫu tại bước giảithuật/2 Bộ mã hóa một lần nữa laị chia kích thước mẫu tại bước giải thuật cho

2 và so sánh với độ chênh lệch mới và thiết lập giá trị cho bit một tương tự nhưcác bước trước

CHƯƠNG IV TÌM HIỂU HỖ TRỢ CỦA WINDOWS SDK

TRONG XỬ LÝ VÀ TRUYỀN NHẬN ÂM THANH

Trang 29

IV.1 MÔI TRƯỜNG LẬP TRÌNH SDK ĐỐI VỚI TRUYỀN ÂM THANH

Môi trường Windows SDK là môi trường lập trình đa phương tiện dướiWindows, cung cấp các hàm cấp thấp rất thích hợp cho các ứng dụng trênmạng Một cách thức đơn giản nhất trong việc xuất dữ liệu waveform ra loa làdùng hàm PlaySound Chúng ta có thể thao tác với dạng dữ liệu waveform bằngcác hàm cấp thấp do hệ thống cung cấp Ngoài ra hệ thống còn cung cấp một cơchế giúp người lập trình giao tiếp dễ dàng hơn với thiết bị, đó là các hàm MCI.[6]

IV.1.1 CẤU TRÚC FILE WAVE VÀ HÀM PLAYSOUND

IV.1.1.1 Cấu trúc file âm thanh wave

Một file wave thật sự là một phần của một lớp file lớn hơn dùng bởi cáchàm multimedia của windows là các file RIFF ( Resource Interchange FileFormat) Một file Riff bao gồm một hoặc nhiều chunk Trong mỗi chunk có contrỏ chỉ đến chunk kế tiếp Mỗi chunk có một mô tả kiểu theo sau bởi một số dữliệu Một ứng dụng để đọc các file RIFF có thể bước qua một số chunk, đọc cácchunk cần quan tâm và bỏ qua các chunk không liên quan Chunk file RIFFluôn luôn bắt đầu bằng header sau:

FOURCC là một vùng 4 bytes định nghĩa loại chunk Vùng này sẽ chứa

từ WAVE đối với file wave

ckSize đặc tả kích thước dữ liệu trong chunk, sau header này chúng ta sẽtìm thấy cSize bytes dữ liệu

Các chunk có thể chứa các subchunks Cấu trúc thật sự một file wave cơbản bao gồm một chunk fmt theo sau là một chunk dữ liệu Có thể có nhữngchunk khác phía sau chunk WAVE nhưng thiết bị sử dụng file WAVE sẽ bỏ quacác chunk này Hình sau mô tả cấu trúc file RIFF chứa dữ liệu WAVE

Trang 30

IDSIZEFROM TYPE

Typedef struct waveformar_tag{

nChannels : Của đối tượng WAVEFORMAT có 2 giá trị :

 1 đối với âm thanh mono

 2 đối với âm thanh stereo

Trang 31

nSamplePerSec : Cho biết tần số lấy mẫu của âm thanh để có thể thu vàphát cùng một tốc độ, giá trị thông thường của field này nhận một những giá trịsau:

22055 - 22,050Khz

44100 - 44,1 KhznAvgBytesPerSec : Cho biết số bytes trung bình trong mỗi giây để thu vàphát dữ liệu wave

nBlockAlign : Xác định số bytes yêu cầu chứa trong một mẫu

 Những mẫu có độ phân giải nhỏ hơn hoặc bằng 8 bits có thể lưuvào 1 bytes

 Những mẫu có độ phân giải từ 9 đến 16 bits yêu cầu 2 bytes

Những mẫu stereo yêu cầu số bytes gấp đôi những mono

Trong cấu trúc trên không định nghĩa số bits thật sự trong một mẫu dữliệu âm thanh file wave, để định nghĩa số bits trong một mẫu ta dùng cấu trúcsau:

nBitsPerSample: Xác định số bits thật sự trong một mẫu

Trong một mẫu mono 8 bits dữ liệu của chunk dữ liệu gồm một chuỗi dài

có giá trị 1 byte Những mẫu stereo được chia ra với byte đầu dùng cho kênhbên trái và byte thứ hai dùng cho kênh bên phải, như vậy mỗi mẫu stereo 8 bits

sẽ cần 2 bytes.[6]

Để làm việc với một file RIFF bao gồm các bước sau :

Trang 32

Mở file.

Vào chunk cần thiết

Chuyển con trỏ file vào vị trí bắt đầu dữ liệu của chunk.Hoàn tất, ra khỏi chunk

Vào chunk kế tiếp

IV.1.1.2 Hàm Playsound

Chúng ta dùng hàm PlaySound để play dữ liệu dạng waveform hoặcchúng ta có thể dùng hàm sndPlaySound Tuy nhiên trong môi trường Win32thì nên dùng hàm PlaySound

Hàm PlaySound cho phép chúng ta chỉ định các thông số nguồn âm thanhtheo các cách sau:

 Dùng tên alias khai báo trong file WIN.INI

Play sound theo các hiện tượng

Hàm PlaySound còn cho phép chúng ta xuất âm thanh tùy theo một sựkiện nào đó xảy ra trong hệ thống như click mouse hay nhấn một phím nào đó

Hệ thống sẽ phát âm thanh tùy theo hiệc tượng xảy ra để cảnh báo người sửdụng Am thanh dạng này được gọi là sound events

Để xác định sound event, hàm PlaySound sẽ được gọi với thông sốpszSound trỏ đến bảng đăng ký sự kiện Ví dụ chúng ta sẽ gọi hàm PlaySoundứng với sự kiện mouse click như sau:

PlaySound("MouseClick", NULL, SND_SYNC);

Trang 33

IV.1.2 GIAO TIẾP AUDIO VỚI BẰNG CÁC DỊCH VỤ CẤP THẤPTrong phần này chúng ta sẽ khảo sát việc giao tiếp với thiết bị audio bằngcác hàm cấp thấp, các hàm này phù hợp với các ứng dụng cần giao tiếp Cáchàm và cấu trúc cấp thấp này đều có prefix là wave.[6]

Thiết bị và dữ liệu

Khi muốn giao tiếp với thiết bị, chúng ta phải mở thiết bị để sử dụng vàsau khi sử dụng xong thì phải đóng thiết bị lại Trong khi sử dụng chúng ta sẽtruy xuất các tính năng của thiết bị và theo dõi thiết bị thực thi bằng các handles

ta dùng cờ WAVE_MAPPER để xác định thiết bị output sẽ xuất âm thanh dạngwaveform

Dò tìm thiết bị

Windows cung cấp các hàm sau giúp chúng ta xác định các thiết bị trong

hệ thống phù hợp cho yêu cầu của mình

AuxGetNumDevs Truy xuất số lượng các thiết bị sẵn có

trong hệ thốngWaveInGetNumDevs Truy xuất số lượng các thiết bị nhập hỗ

trợ waveform audio sẵn có trong hệ thốngWaveOutGetNumDev

s

Truy xuất số lượng các thiết bị xuất hỗ trợwaveform audio sẵn có trong hệ thống

Trang 34

Các thiết bị khai báo trong hệ thống được đánh các chỉ số nhận dạng bắtđầu từ 0 Sau khi xác định số lượng các thiết bị sẵn có trong hệ thống, chúng ta

có thể dò tìm khả năng của từng thiết bị bằng các hàm sau:

AuxGetDevCaps Truy xuất khả năng của thiết bị xuất

WaveInGetDevCaps Truy xuất khả năng của thiết bị nhập dạng

waveformWaveOutGetDevCaps Truy xuất khả năng của thiết bị xuất dạng

waveformCác hàm truy xuất này sẽ truy xuất này sẽ lấy các cấu trúc liên quan đếnkhả năng của thiết bị Các cấu trúc dưới đây sẽ tương ứng với các hàm liệt kê ởtrên:

Handle và Identifier của thiết bị

Khi mở thiết bị, chúng ta sẽ nhận được handle hay thông số Identify củathiết bị Chúng ta sẽ điều khiển thiết bị qua các thông số này

Sự khác biệt giữa handle và identify là khó thấy nhưng rất quan trọng.Identitier của thiết bị được chỉ định ngầm định từ số lượng các thiết bị sẵn

có trong hệ thống Identifier sẽ được trả về khi chúng ta dùng các hàmauxGetNumDevs, waveInGetNumDevs, or waveOutGetNumDevs Hàm

Handle của thiết bị là thông số trả về của device driver khi chúng ta dùngcác hàm waveInOpen hay waveOutOpen

Waveform-Audio Output Data Types

Trang 35

Các thông số dưới đây được dùng cho thiết bị waveform output

waveform Cấu trúc được dùng cho cả thiết bị output và input

WAVEOUTCAPS Cấu trúc dò hỏi khả năng của thiết bị output

Chỉ định dạng format của dữ liệu waveform audio

Khi chúng ta mở thiết bị output bằng hàm waveOutOpen, thông số pwfx

sẽ chỉ định cấu trúc WAVEFORMATEX xác định dạng format của dữ liệuwaveform Đây là cấu trúc mở rông của cấu trúc WAVEFORMAT

Ghi dữ liệu waveform

Sau khi mở thiết bị xuất, chúng ta có thể xuất dữ liệu bằng cách gọi hàmwaveOutWrite Hàm sẽ gửi khối dữ liệu âm thanh ra thiết bị xuất Chúng tadùng cấu trúc WAVEHDR để chỉ định header của khối dữ liệu được gửi ra.Header này gồm con trỏ tới khối dữ liệu đã lock, chiều dài khối dữ liệu và một

số thông số cờ Khối dữ liệu phải được prepare trước khi đem ra sử dụng

Sau khi gửi khối dữ liệu đến thiết bị output, chúng ta phải chờ driverhoàn tất việc xử lý khối dữ liệu trước khi giải phóng nó Khi chúng ta cần gửinhiều khối dữ liệu liên tục, chúng ta sẽ phải theo dõi việc xử lý hoàn tất khối dữliệu để có thể gửi khối tiếp theo

PCM Waveform-Audio Data Format

Thông số lpData trong cấu trúc WAVEHDR sẽ trỏ đến dữ liệu đã đượclấy mẫu Đối với dữ liệu PCM 8-bit, mỗi giá trị lấy mẫu được biểu diễn bằngmột số 8 bit không dấu Đối với dữ liệu PCM 16-bit, mỗi giá trị lấy mẫu đượcbiểu diễn bằng một số 16 bit không dấu Bảng dưới đây cho chúng ta thấy cácgiá trị cao nhất, thấp nhất cũng như giá trị trung bình của dữ liệu PCM:

Trang 36

Data format Maximum value Minimum value Midpoint value

PCM

waveform

Chức năng

8-bit mono Mỗi giá trị lấy mẫu là 1 byte tương ứng một kênh

Các giá trị mẫu xếp theo thứ tự 1, 2, 3, 4 8-bit stereo Mỗi giá trị lấy mẫu là 2 byte Các giá trị mẫu xếp

theo thứ tự 1, 2, 3, 4 Với mỗi giá trị mẫu byte đầu là kênh 0 (trái) còn byte sau là kênh 1 (phải)

16-bit mono Mỗi giá trị lấy mẫu là 2 byte Các giá trị mẫu xếp

theo thứ tự 1, 2, 3, 4 Với mỗi giá trị mẫu byte đầu là byte thấp của kênh 0 còn byte sau là byte caocủa kênh 0

16-bit stereo Mỗi giá trị lấy mẫu là 4 byte Các giá trị mẫu xếp

theo thứ tự 1, 2, 3, 4 Với mỗi giá trị mẫu byte đầu là byte thấp của kênh 0 (trái), byte thứ 2 là bytecao của kênh 0, byte thứ 3 là byte thấp của kênh 1 (phải) còn byte thứ 4 là byte cao của kênh 1

Đóng thiết bị waveform-Audio Output

Sau khi thực thi công việc xong, chúng ta sẽ gọi hàm waveOutClose đểđóng thiết bị Khi thiết bị đang thực thi mà gọi hàm này thì lỗi sẽ xảy ra Nếuchúng ta muốn đóng thiết bị giữa chừng thì đầu tiên chúng ta nên gọi hàm

Trang 37

waveOutReset trước khi đóng thiết bị Nhưng trước đó cũng cần gọi hàmwaveOutUnprepareHeader để unprepare tất cả các khối dữ liệu

Playing Waveform-Audio Files

Chúng ta có thể dùng các hàm sau đây để xuất dữ liệu dạng âm thanh raloa:

MessageBeep Xuất âm thanh dưới dạng thông báo của hệ thống

SndPlaySound Xuất âm thanh dưới dạng đăng ký trước trong hệ

thống hay là nội dung của một file wavePlaySound Giống như hàm trên và thêm cơ chế truy xuất trực

tiếp tài nguyên

Các hàm PlaySound và sndPlaySound sẽ nạp hoàn toàn nội dung filewave vào bộ nhớ và xuất ra ngõ output Khả năng bộ nhớ của chúng có giới hạnnên chúng chỉ quản lý được các nội dung dưới 100KB Khi làm việc với các file

có nội dung lớn hơn thì chúng ta có thể sử dụng các dịch vụ do MCI cung cấp

Sử dụng Windows message trong việc quản lý khi playback

Các Thông báo dưới đây có thể được sử dụng trong quá trình xuất dữliệu:

Trang 38

WAVEHDR chỉ định sụ hoàn tất của dữ liệu trong khi thông số này không đượchai Thông báo còn lại dùng Việc dùng này rất hữu hiệu, Thông báoMM_WOM_DONE sẽ là tín hiệu được báo về sau khi việc playback khối dữliệu hoàn tất Ta sẽ tiếp nhận Thông báo này và giải phóng các biến có liênquan.

Thay đổi volume của quá trình playback dữ liệu waveform audio

Chúng ta sẽ dùngcác hàm sau đây để lấy thông số volume cũng như thiếtlập các thông số này theo yêu cầu

WaveOutGetVolume Truy xuất mức volume của thiết bị xuất

Giá trị volume là một số doubleword Khi audio format là stereo, 16 bitcao chỉ giá trị volume của channel phải và 16 bits thấp chỉ giá trị volume củachannel trái Còn nếu ở các thiết bị không hỗ trợ 2 kênh thì 16 bit thấp sẽ được

sử dụng chỉ giá trị volume còn 16 bit cao sẽ không dùng đến

Giá trị volume thay đổi từ giá trị 0x0 (silence) cho đến mức 0xFFFF(maximum)

Recording Waveform Audio

Chúng ta có thể sử dụng dịch vụ thu âm thanh theo chuẩn MCI Tuynhiên nếu thấy cần thiết, chúng ta có thể sử dụng các hàm thu âm thanh cấpthấp

Các thông số dữ liệu dưới đây sẽ đặc trưng cho dạng dữ liệu waveformaudio input

WAVEFORMATEX Cấu trúc của dạng dữ liệu được thiết bị input hỗ

trợ

Trang 39

input Nó cũng được dùng khi xuất dữ liệu ra Output

WAVEINCAPS Cấu trúc dùng dò hỏi các khả năng của thiết bị

input

Trước khi bắt đầu công việc thu dữ liệu, chúng ta phải dùng hàmwaveInGetDevCaps để dò hỏi khả năng cũng như xác định các thuôc tính củathiết bị Hàm sẽ trả về cấu trúc WAVEINCAPS xác định các thông số mongmuốn

Opening Waveform-Audio Input Devices

Để thu dữ liệu, trước hết chúng ta dùng hàm waveInOpen để mở thiết bịwaveform input Nếu thực thi thành công, hàm sẽ trả về cho chúng ta handle củathiết bị

Managing Waveform-Audio Recording

Sau khi mở thiết bị, chúng ta có thể tiến hành việc thu dữ liệu Dạng dữliệu waveform thu được sẽ được đưa vào buffer, buffer này được trỏ đến trongcấu trúc WAVEHDR Trước khi được sử dụng, chúng ta phải prepare buffernày

Windows cung cấp cho chúng ta các hàm sau đây dùng thu dữ liệuwaveform:

WaveInAddBuffer Gửi một buffer cho device driver, thiết bị

sẽ thu dữ liệu vào khối nàyWaveInReset Ngừng thu dữ liệu và đánh dấu tất cả các

buffer đã thu xongWaveInStart Bắt đầu thu dữ liệu

WaveInStop Kết thúc việc thu dữ liệu

Chúng ta dùng hàm waveInAddBuffer để gửi các khối buffer tới devicedriver Khi dữ liệu được điền đầy vào buffer, ứng dụng sẽ được thông báo bằng

Trang 40

window Thông báo, callback Thông báo, thread Thông báo, hay event, tùy theo

cờ thông báo được chỉ định trong hàm open device

Trước khi bắt đầu thu dữ liệu, chúng ta phải gửi ít nhất một buffer dữ liệucho thiết bị input và khi đóng thiết bị, chúng ta gọi hàm waveInReset để đánhdấu các buffer đã được thu xong

Using Window Messages to Manage Waveform-Audio Recording

Các Thông báo sau đây sẽ được dùng để quản lý việc thu dữ liệu dạngwaveform audio:

Audio data block

Hàm waveInAddBuffer và waveOutWrite có thông số yêu cầu ứng dụngchỉ định khối dữ liệu cần cho thiết bị sử dụng cho việc thu hay playback Cáchàm trên sử dụng cấu trúc WAVEHDR để miêu tả khối dữ liệu trên

Trước khi sử dụng các hàm trên để gửi khối dữ liệu cho thiết bị Chúng taphải cấp phát vùng nhớ cho khối dự liệu và khối header Khối header phải đượcprepare và unprepare bằng các hàm sau:

Ngày đăng: 27/04/2013, 08:33

HÌNH ẢNH LIÊN QUAN

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 - 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
rong 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 (Trang 3)
Hình I.2 : Mô hình Máy tính – Điện thoại - 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
nh I.2 : Mô hình Máy tính – Điện thoại (Trang 4)
Hình I.3 : Mô hình Điện thoại – Điện thoại - 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
nh I.3 : Mô hình Điện thoại – Điện thoại (Trang 4)
Hình II.1 Các lớp đại chỉ IP - 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
nh II.1 Các lớp đại chỉ IP (Trang 7)
Hình II.2 TCI/IP và mô hình OSI - 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
nh II.2 TCI/IP và mô hình OSI (Trang 8)
Hình II.3 Các socket và port trong mối nối TCP/IP - 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
nh II.3 Các socket và port trong mối nối TCP/IP (Trang 9)
II.1.1 KHÁI NIỆM SOCKET - 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
1.1 KHÁI NIỆM SOCKET (Trang 9)
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  - 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
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 (Trang 12)
Hình II.5 Sơ đồ giao tiếp giữa server với client - 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
nh II.5 Sơ đồ giao tiếp giữa server với client (Trang 14)
Hình II.6 Sơ đồ giao tiếp của client với server - 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
nh II.6 Sơ đồ giao tiếp của client với server (Trang 15)
Hình II.6  Sơ đồ giao tiếp của client với server - 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
nh II.6 Sơ đồ giao tiếp của client với server (Trang 15)
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 - 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
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 (Trang 18)
Hình sau là một giản đồ khối đơn giản của bộ mã hóa và giải mã ADPCM : - 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
Hình sau là một giản đồ khối đơn giản của bộ mã hóa và giải mã ADPCM : (Trang 26)
Hình sau là một giản đồ khối đơn giản của bộ mã hóa và giải mã ADPCM  : - 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
Hình sau là một giản đồ khối đơn giản của bộ mã hóa và giải mã ADPCM : (Trang 26)
IV.2.1 MÔ HÌNH LIÊN KẾT VÀ TRAO ĐỔI DỮ LIỆU - 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
2.1 MÔ HÌNH LIÊN KẾT VÀ TRAO ĐỔI DỮ LIỆU (Trang 43)
IV.2 KỸ THUẬT TRUYỀN NHẬN ÂM THANH TRÊN MẠNG IP - 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
2 KỸ THUẬT TRUYỀN NHẬN ÂM THANH TRÊN MẠNG IP (Trang 43)
V.2.2 XÂY DỰNG MÔ HÌNH CPHONE - 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
2.2 XÂY DỰNG MÔ HÌNH CPHONE (Trang 63)
Hình V.2 Các modul của chương trình CPhone - 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
nh V.2 Các modul của chương trình CPhone (Trang 65)
Hình V.3 Lưu đồ của modul thu và phát tiếng nói - 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
nh V.3 Lưu đồ của modul thu và phát tiếng nói (Trang 67)
Hình V.4 Lưu đồ giải thuật modul mã hoá - 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
nh V.4 Lưu đồ giải thuật modul mã hoá (Trang 68)
Hình V.5 Lưu đồ giải thuật modul mã hoá - 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
nh V.5 Lưu đồ giải thuật modul mã hoá (Trang 69)
Hình V .6 Lưu đồ giải thuật modul truyền - 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
nh V .6 Lưu đồ giải thuật modul truyền (Trang 70)
Hình V.7 Lưu đồ giải thuật modul nhận - 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
nh V.7 Lưu đồ giải thuật modul nhận (Trang 71)
Hình V.9 Nhập địa chỉ IP - 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
nh V.9 Nhập địa chỉ IP (Trang 72)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w