Xem mẫu

  1. Luận văn tốt nghiệp Tìm hiểu mô hình điện thoại qua mạng
  2. LUẬN VĂN TỐT NGHIỆP Trang 1 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] Máy tính IP 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. Gateway Máy tính IP PSTN Điện thoại 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] Điện thoại Điện thoại Gateway Gateway PSTN IP PSTN Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  3. LUẬN VĂN TỐT NGHIỆP Trang 2 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 Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  4. LUẬN VĂN TỐT NGHIỆP Trang 3 đổ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] Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  5. LUẬN VĂN T L TỐT NGHIỆ ỆP Trang 4 Hình I Các lớp đại chỉ IP II.1 p Hình II.2 TCI/IP và mô hình OS m SI Netid nhận dạng cho từng m d g mạng riêng biệt. Các k lớp địa chỉ IP cho thấy số g kiểu a o lư ượng mạng và số lượn nút của mỗi lớp khác nhau. Bảng dưới cho thấy s lượng g ng k số mạng và số l m lượng nút có thể của m lớp địa chỉ : c mỗi Lớp địa c chỉ Số lượng mạnng Số lượng nút A 127 16 6.777.241 B 16.383 65.534 C 2.097.151 2 254 Mạng lớp A dùn cho mạn diện rộn Trường netid có 7 bits nên c thể có g ng ng ng. có 127 mạng. M Mạng lớp B là mạng có kích thướ trung bình và thích h cho các tổ chức ó ớc h hợp c
  6. LUẬN VĂN TỐT NGHIỆP Trang 5 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 A Máy B Port Mối nối 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 2 Management Entry 5 Remote Job Entry 7 Echo 9 Discard 11 Systat 13 Daytime 15 Netstat 17 Quoted(quote of the day) 20 FTP data 21 FTP control 23 Telnet 25 SMTP 37 Time 42 Host name server 49 Login host protocol Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  7. LUẬN VĂN TỐT NGHIỆP Trang 6 53 Domain name server 80 World wide web HTTP 102 ISO-TSAP 103 x.4000 104 X.4000 sending server 111 Sun RPC 139 NetBIOS session source 160-223 Reserved 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 Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  8. LUẬN VĂN T L TỐT NGHIỆ ỆP Trang 7 th lập liên kết và khi không có nhu cầu tru hiết n i uyền dữ liệu nữa thì li kết sẽ đ iên được giải phòng. Mỗi ứng dụng T gồm ha phần là cl ứ TCP ai lient và serv ver. Lưu L đồ sau m minh họa các bước cần thiết để cá ứng dụng client và server giao tiếp với n ác o nhau : n Hìn II.4 Tạo kết nối giữ client và server theo giao thức TCP nh o ữa à o I.2.1 CÁCH THỨC CÀ ĐẶT ỨN DỤNG TCP SERV II H ÀI NG G VER Ứng Ứ dụng TCP server l việc the qui trình sau: làm eo h Gọi hàm socket để tạo một socket. h Gọi hàm bind để kết buộc s h ể socket với m port, đố với mỗi giao thức ứ dụng một ối ứng ch huẩn thì sẽ có một hằn số được định nghĩa sẵn trong w ng winsock cho port của g thức o giao đó. Gọi hàm listen đ chờ đến k có một client nối v port. h để khi c vào Khi c một clien nối vào t hàm liste trả điều khiển về, ứ dụng se có nt thì en ứng erver gọi hàm h accept để xác nhận mối nối củ client. đ n ủa
  9. LUẬN VĂN T L TỐT NGHIỆ ỆP Trang 8 Gọi c hàm gử hay nhận dữ liệu để trao đổi th các ửi hông tin với client, ví dụ send, i re ecv. Sau khi đã hoà tất quá trình trao đổi dữ liệ ứng dụn server g hàm k àn ệu, ng gọi cl losesocket đ đóng soc đã tạo. để cket . Hình II Sơ đồ gi tiếp giữa server với client I.5 iao a
  10. LUẬN VĂN T L TỐT NGHIỆ ỆP Trang 9 II I.2.2 CÁCH THỨC CÀ ĐẶT ỨN DỤNG CLIENT T H ÀI NG G TCP Ứng Ứ dụng cl lient TCP là việc the qui trình sau : àm eo - Gọi hàm sock để tạo m socket . ket một - Gọi hàm connnect để nối vào server i r. - Gọi hàm gửi hay nhận dữ liệu để trao đổi th i hông tin vớ server, ví dụ như ới í hà send, rec àm cv. - Sa khi đã h au hoàn tất qu trình tra đổi dữ li uá ao iệu, ứng dụ client gọi hàm ụng closesocket để đóng soc đã tạo. đ cket Hình II.6 Sơ đồ giao tiếp của client với ser o rver Ghi G chúù: Các bước trên cơ bản là giố nhau ch các ứng dụng client và server viết trên b ơ ống ho Windows NT và UNIX Tuy nhiê với ứng dụng viết trên UNIX thì không cần gọi W X. ên, g X g
  11. LUẬN VĂN TỐT NGHIỆP Trang 10 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. Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  12. LUẬN VĂN TỐT NGHIỆP Trang 11 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á Mã hoá dạng sóng Chất lượng tiếng nói hỗn hợp Mã hoá dự đoán Rất tốt tuyến tính LPC Tốt Trung bình Hình III.1 Biểu đồ so sánh 32 phương pháp mã hoá 2 4 8 16 các 64 Tốc độ 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). Aâm 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. Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  13. LUẬN VĂN TỐT NGHIỆP Trang 12 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 Aâu 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 Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  14. LUẬN VĂN TỐT NGHIỆP Trang 13 để 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à : f s ≥ 2 f max 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 Δ Δ p (E ) = , - ≤ E < (1) Δ 2 2 Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  15. LUẬN VĂN T L TỐT NGHIỆ ỆP Trang 14 Điều này sẽ khô đúng nếu tín hiệu là bão hoà bộ lượng tư. Ví du n biểu ông à như diễn hình 1, đầu ra của bộ lượng t có thể bã hoà tại 5 với tần số đầu và vượ qua số d tử ão ợt lư ượng và mỗ lượng tử t ỗi trong trườn hợp này s là một hà tăng tuy tính.[4] ng sẽ àm yến Hình III.2 a.Đặc tuyến lượng tử ho H oá;b.Đặc tuy sai số lư yết ượng tử; c.V lượng tử đều VD ử Nếu n ta cho rằng bộ lượ tử khôn bị bão h Theo cô thức (1 thì giá như ợng ng hoà. ông 1) tr bình phươ trung bình của sai số lượng tử là : rị ơng b ử −Δ 2 Δ2 ∫ E 2 p (E ) = )dE 12 (2 2) −Δ 2 Nếu N giá trị độ rộng của đầu vào X là Xrms, th tỷ số tín h đ hì hiệu/nhiễu đ được tính b : bởi [ SNR = X rm / Δ2 / 12 (3) 2 ms ] Ví dụ cho bộ lư ụ, ượng tử có khoảng biê độ từ – 4 ên 4Xrms đến + 4Xrms( đ thuận để ti về mặt lý thuyết, t độ rộng 8Xrms của bộ lượng tử không c ràng buộ riêng, iện thì a có ộc ngoại trừ cá trường hợ đặc biệt Ví dụ, nế tín hiệu PDF p(x) đ n ác ợp t. ếu được biến đ bằng đổi hàm Gaussian trung bình – khôn thì các mẫu tín h h b ng, hiệu sẽ rơi bên ngoài khoảng i 8Xrms của b lượng tử với xác x bộ ử xuất nhỏ h 1/10.00 bước lư hơn 00). ượng tử đều có thể được thực hi tỷ số củ khoảng b độ trên số lượng c bước lư iện ủa biên n các ượng tử (số các mức đầu ra). Δ = 8 X rms / 2 B (4 4)
  16. LUẬN VĂN TỐT NGHIỆP Trang 15 Từ (3) và (4) ta có : SNR (dB ) = 10 log 10 SNR = 6 B − 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. 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ông truyề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 độ 8000 mẫu/giây * 8 bits/ mẫu = 64 Kbits/giây để truyền dữ liệu qua mạng. Do đó, tùy theo tốc độ đường truyền thực tế trên mỗi mạng mà chọn giải pháp nén hay khô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 được né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 để 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 Internet thô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. Hai phươ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 trong nhữ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ện tạ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 PCM tuyến tính 13 bits lấy mẫu ở 8 Khz. GSM có sẵn trong thư viện C có thể được dù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ững mẫu PCM tuyến tính thành các frames GSM, hoặc giải mã các frames GSM thành các frames PCM tuyến tính. Bộ mã hóa nén 160 frames PCM 16 bits thành các frames GSM 260 bits. Tương ứng một giây tiếng nói thành 1625 bytes. 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 GSM nén 1 Mb có thể lưu tiếng nói gần 10 phút.[2] Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  17. LUẬN VĂN TỐT NGHIỆP Trang 16 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ăng thông tốc độ 128 Kbits/s, trong khi đó băng thông để truyền qua mạng nếu dùng giả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. 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ói trướ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 sau khi đượ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ính toá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 ra nhữ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ởi IMA (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ức lượng hóa 4 bits, trong đó mỗi mẫu DPCM được biểu diễn bằng các giá trị âm 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ểu diễ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ước buffers tiếng nói Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  18. LUẬN VĂN TỐT NGHIỆP Trang 17 nên những mã ADPCM được kết hợp một cách dễ dàng với cá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 khi phá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 Xp[n-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ơ đồ 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ượng hóa.[2] Hình III.4 Sơ đồ giải thuật mã hoá nén IMA ADPCM Từ sơ đồ giải thuật ta thấy rằng bit thứ ba được cài đặt lên 1 nếu độ chênh lệch giữa X[n] và Xp[n-1] là lớn hơn hay bằng step_size. Sau đó step_size được chia 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ải thuậ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. Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  19. LUẬN VĂN TỐT NGHIỆP Trang 18 CHƯƠNG IV TÌM HIỂU HỖ TRỢ CỦA WINDOWS SDK TRONG XỬ LÝ VÀ TRUYỀN NHẬN ÂM THANH 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ưới Windows, cung cấp các hàm cấp thấp rất thích hợp cho các ứng dụng trên mạ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ằng cá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ác hàm multimedia của windows là các file RIFF ( Resource Interchange File Format). Một file Riff bao gồm một hoặc nhiều chunk. Trong mỗi chunk có con trỏ 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ác chunk cần quan tâm và bỏ qua các chunk không liên quan. Chunk file RIFF luôn luôn bắt đầu bằng header sau: Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
  20. LUẬN VĂN TỐT NGHIỆP Trang 19 Typedef struct { FOURCC ckID; DWORD cksize; }CK; Trong đó: 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ững chunk khác phía sau chunk WAVE nhưng thiết bị sử dụng file WAVE sẽ bỏ qua các chunk này. Hình sau mô tả cấu trúc file RIFF chứa dữ liệu WAVE. ID SIZE FROM TYPE "fmt" SIZE "data" SIZE Hai subchunk trong chunk wave đặc tả thông tin về một âm thanh file wave và sau đó là chính dữ liệu âm thanh. Chunk fmt chứa chủ yếu đối tượng WAVEFORMAT và một số dữ liệu thêm vào gắn ở cuối chunk. Một đối tượng WAVEFORMAT được định nghĩa như sau : Typedef struct waveformar_tag{ WORD wFormatTag; WORD nChannels; DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; WORD nBlockAlign; } WAVEFORMAT; Trong đo ù: wFormatTag : Chứa hằng WAVE_FORMAT_PCM được định nghĩa trong MMSYSTEM.H như sau: # define WAVE_FORMAT_PCM 1 Giá trị WAVE_FORMAT_PCM báo cho phần mềm đọc file wave biết cách âm thanh trong nó được mã hoá. 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. 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: Đề tài : Xây dng öứg duụg truyeề thoôg aâ thanh treê maạg cuụ boộ
nguon tai.lieu . vn