2.6.1 Kết nối IP PBX với PBX
Một ngữ cảnh đặt ra ở đây như sau :”Hiện tại công ty đã trang bị hệ thống PBX bây giờ cần trang bị thêm để đáp ứng nhu cầu liên lạc trong công ty sao cho với chi phí thấp nhất”.
Giải pháp để thực hiện việc đó là trang bị hệ thống Asterisk và kết nối với hệ thống PBX đang tồn tại qua luồng E1.
Hình 2.7: Sơ đồ kết nối IP PBX với PBX
Ngoài ra để tăng khả năng liên lạc với mạng PSTN và VoIP khác, Công Ty sẽ đăng ký kết nối dịch vụ với nhà cung cấp dịch vụ VoIP.
2.6.2 Kết nối giữa Server Asterisk
Phương pháp trên ứng dụng rất hiệu quả cho các công ty nằm rãi rác ở các vị trị địa lý khác nhau nhằm giảm chi phí đường dài.
Hình 2.8 : Sơ đồ kết nối các server Asterisk
Ví dụ công ty Mẹ có trụ sở đặt tại nước Mỹ và có các Chi nhánh đặt tại Việt Nam với hai địa điểm là Hà Nội và thành phố Hồ Chí Minh. Thông qua mạng WAN của công ty, các cuộc gọi nội bộ giữa các vị trí khác nhau được kết nối, và sẽ giảm chi phí đáng kể.
2.6.3 Các ứng dụng IVR,Conference Call
Ứng dụng thực hiện các server kết nối với hệ thống PSTN hay tổng đài PBX để triển khai các ứng dụng như tương tác thoại IVR.
Một ví dụ cho ứng dụng tương tác thoại đó là cho biết kết quả xổ số, kiểm tra cước cuộc, dịch vụ giải trí – tra cứu thông tin thông qua số 19001260. Ứng dụng VoiceMail thu nhận những tin nhắn thoại từ phía thuê bao giống như chức năng hộp thư thoại của Bưu Điện.
Chức năng cuộc gọi hội nghị được thiết lập cho nhiều máy điện thoại cùng nói chuyện với nhau.
Hình 2.9 : Các ứng dụng của tổng đài IP
2.6.4 Phân phối cuộc gọi tự động ACD
ACD (Automatic Call Distribution): Phân phối cuộc gọi tự động.
Chức năng được ứng dụng cho nhu cầu chăm sóc khách hàng hay nhận phản hổi từ phía khách hàng.
Với chức năng này, hệ thống tổng đài sẽ bớt tình trạng tắt nghẽn khi có nhiều cuộc gọi cùng lúc.
Giả sử một Công ty hệ thống điện thoại có khả năng tiếp nhận cùng một lúc 10 cuộc gọi,nếu có thêm cuộc gọi thứ 11 gọi đến thì hệ thống giải quyết như thế nào? Bình thường thì sẽ nghe tín hiệu bận nhưng với chức năng phân phối cuộc gọi sẽ đưa thuê bao đó vào hàng đợi để chờ trả lời, trong khi chờ trả lời cuộc gọi thuê bao có thể nghe những bài hát hay do asterisk cung cấp và khi nào một trong mười số điện thoại đang gọi trở về trạng thái rỗi thì cuộc gọi đang chờ sẽ được trả lời. Giống như chức năng của dịch vụ: dịch vụ hỗ trợ thông tin 1080, dịch vụ hẹn giờ 116 của Bưu Điện, dịch vụ hỗ trợ khách hàng của các tổng đài điện thoại.
2.7 Tổ chức thƣ mục trong hệ thống Asterisk 2.7.1 Các thƣ mục trong hệ thống 2.7.1 Các thƣ mục trong hệ thống
Cd /etc/asterisk/
Chứa các tập tin cấu hình ASTERISK. Tuy nhiên tập tin zaptel.conf lại nằm trong thư mục /etc/. zaptel.conf được dùng để cấu hình thực hiện liên lạc giữa máy tính và môi trường điện thoại truyền thống. Cd /usr/lib/asterisk/modules/
Chứa tất cả các module được khởi động bởi ASTERISK. Các ứng dụng chương trình, codecs, formats, và các kênh thoại. Mặc định ASTERISK sẽ khởi động tất cả các modules lúc khởi động.
Cd /var/lib/asterisk
Chứa đựng tập tin astdb và các thư mục con khác. Tập tin astdb chứa thông tin về cơ sở dữ liệu của ASTERISK bao gồm các thư mục chính:
agi-bin/ : Chứa các custom scripts, như là các ứng dụng AGI.
Firmware : Chứa các thông tin về các thiết bị gắn kết với ASTERISK.
sounds : Tất cả các thông báo từ hệ thống ASTERISK đều nằm trong thư mục sounds.
Cd /var/spool/asterisk/
Chứa một số thư mục con như outgoing/, qcall/, tmp/, và voicemail/
Hình 2.11: Cấu trúc thư mục var
Thư mục tmp/ được dùng để lưu trữ các thông tin tạm thời cho các quá trình như sao chép, hoặc ngăn cản hai quá trình ghi và đọc tập tin cùng một lúc.
Tất cả các voicemail và các lời chào đều chứa trong thư mục voicemail.
Cd /var/run/
Chứa tất cả thông tin về các tiến trình đang hoạt động trong hệ thống, bao gồm ASTERISK (đặt biệt là trong tập tin asterisk.conf). Cd /var/log/asterisk/
Chứa các thông tin logs của ASTERISK. Các thông tin này có thể được hiệu chỉnh trong logger.conf trong thư mục /etc/asterisk/.
2.7.2 Các tập tin cấu hình trong hệ thống
Các file cấu hình cho hệ thống asterisk đều nằm tại thư mục
/etc/asterisk Ví dụ như: extensions.conf sip.conf voicemail.conf asterisk.conf…….
Tuy nhiên, file zaptel.conf cấu hình cho phần cứng TDM nằm tại thư mục /etc, cách thức cấu hình giống như tập tin .ini của window.
Một số file .conf quan trọng
Extensions.conf : file chứa dial plan Sip.conf : dùng để cấu hình giao thức SIP.
Iax.conf: dùng cấu hình các kênh truyền của giao thức IAX.
2.8 Cơ chế FastAGI 2.8.1 FastAGI là gì? 2.8.1 FastAGI là gì?
FastAGI có thể được sử dụng như một khuôn mẫu để thiết kế quá trình lập trình AGI từ xa của bạn.
Cơ chế này giúp giảm tải trên CPU của bạn. Nó sẽ gọi dịch vụ từ một máy tính khác trong mạng và trả về kết quả cho server xử lí.Nó giúp cho server bớt công đoạn xử lí các công việc,giảm quá trình tắt nghẽn tổng đài.
FastAGI vẫn là một trong những lựa chọn thay thế tốt nhất để xây dựng các ứng dụng Asterisk, tách các ứng dụng riêng của mình, nhân rộng trên nhiều ứng dụng máy chủ FastAGI.
Để kết nối với một giao diện AGI /API interfaces,ta phải có một số thư viện để kết nối. Chúng bao gồm:
Asterisk –Java Asterisk.NET PHPAGI Asterisk-Perl Asterisk-PyThon
2.8.2 Hoạt động
Đầu tiên,trên tổng đài ta chỉ khai báo địa chỉ của máy cục bộ(nơi xử lí công việc dùm server)
AGI:\\192.168.1.123\script_cong_viec
Down về thư viện Asterisk.NET để chạy các script trên máy cục bộ và trả về kết quả cho server. Thư viện này bao gồm một tập hợp các lớp C# cho phép bạn dễ dàng xây dựng các ứng dụng tương tác với một máy chủ PBX Asterisk. Cả FastAGI và API đều được hỗ trợ trong .NET / Mono tương thích.
Asterisk NET hỗ trợ cả hai giao diện đó Asterisk cung cấp cho kịch bản này:Các giao thức FastAGI và quản lý API. Việc thực hiện FastAGI hỗ trợ tất cả các lệnh có sẵn từ Asterisk.
Link down : http://sourceforge.net/projects/asterisk-dotnet/
CHƢƠNG 3: TÌM HIỂU CHỨC NĂNG TEXT TO SPEECH
3.1 Khái niệm:
3.1.1 Sơ lƣợc về tiếng nói trong VoIP:
Là công cụ để diễn đạt ý nghĩ và giao tiếp giữa người với người.Tiếng nói là một sự kết hợp của rất nhiều âm thanh khác nhau.
Trong lĩnh vực viễn thông , ta có cụm từ “voice over IP”. Đó là “tiếng nói qua giao thức Internet”. Nói đến công nghệ tiếng nói qua IP là nói đến việc truyền dẫn tiếng nói qua các mạng lưới hoạt động dựa trên mạng internet. Ban đầu giao thức Internet (Internet Protocol - IP) được thiết kế để nối mạng dữ liệu và sau khi vận hành thành công, giao thức đã được áp dụng vào việc nối mạng tiếng nói.
Công nghệ tiếng nói qua IP (VoIP) có thể dễ dàng hỗ trợ các nhiệm vụ và đáp ứng các dịch vụ mà khi sử dụng hệ thống PSTN truyền thống có thể sẽ phức tạp hay tốn kém.
3.1.2 Khái niệm về Text To Speech:
Text To Speech (kí hiệu TTS) là quá trình chuyển dạng văn bản dạng text sang tiếng nói.
TTS được phân loại như sau: Nối từ (Concatenated Word):
Là hệ thống chứa những từ đã được ghi âm sẵn . Khi nhận được một chuỗi văn bản cần đọc, hệ thống tách các từ trong chuỗi này ra. Sau đó, tìm các từ này trong hệ thống từ ghi âm sẵn. Cuối cùng, ta kết hợp các từ tương ứng trong chuỗi lại và phát âm thành câu.
Hai âm tố(Diphone Concatenation):
Là phương pháp nối lại những đoạn âm thanh ngắn đã được số hoá và tạo ra âm thanh liên tục. Mỗi diphone bao gồm hai âm vị : một âm vị bắt đầu và một âm vị kết thúc.
Tổng hợp:
Là phương pháp tạo âm giống giọng con người với sự mô phỏng về chiều dài,cổ họng,khoang miệng…Với kĩ thuật này, ta có thể thay đổi chất lượng giọng ,tạo ra âm trầm bổng khác nhau.
3.1.3 Lí do chọn Text To Speech
Thuận tiện cho việc đọc văn bản động, nhất là các cụm từ ngữ ngắn và luôn thay đổi liên tục mà ta không thể ghi âm hết tất cả.
Khi đọc lên văn bản hay số liệu sẽ giúp người sử dụng có thể nghe lại văn bản của mình và phát hiện lỗi khi gõ bàn phím.
Cung cấp những phản hồi rõ ràng và thông báo cho người dùng bằng âm thanh phát ra. Người dùng có thể nghe và đáp ứng lại thông báo.
Ứng dụng này rất thiết thực và hữu ích trong cuộc sống như: hộp thư thoại, các tổng đài trả lời tự động,các đường dây nóng 1900xxx…
3.1.4 Hạn chế của Text To Speech (TTS)
Chất lượng giọng chưa tốt đôi khi khó nghe nếu đọc cụm từ dài . Vì TTS thực chất là ta phải nối từng từ lại với nhau để tạo thành 1 câu dài. Nó là giọng đọc tổng hợp các từ ngữ với các dấu nhấn,nhịp ngắt,trọng âm,thời gian đọc….
Biểu cảm cảm xúc như chấm than,chấm hỏi lên xuống giọng sẽ không đáp ứng thật như con người.
Có thể bị lỗi phát âm từ sai do đặc điểm phát âm của từng vùng trong nước.
3.2 Cấu trúc file âm thanh 3.2.1 Khái niệm: 3.2.1 Khái niệm:
Tâ ̣p tin âm thanh là mô ̣t da ̣ng tâ ̣p tin dùng để lưu trữ dữ liê ̣u âm thanh số (dạng sóng ) và nó là một trong những định dạng phổ biến nhất của hệ điều hành Windows.
Tâ ̣p tin wave thuô ̣c chuẩn RIFF ( Resource Interchange File Format - dạng tập tin tài nguyên có thể trao đổi).
Đặc điểm của những tập tin thuộc chuẩn RIFF đó là nó sẽ nhóm nội dung của tâ ̣p tin thành các khối riêng biệt .Mỗi một khối sẽ gồm một header (dùng để qui định kiểu và kích thước của khối ) và các byte dữ liê ̣u.
Tập tin wave có hai dạng là dạng nén và dạng không nén (dạng chuẩn).Vì thế trong đề tài này tôi chỉ đề cập đến dạng chuẩn của tập tin wave tức là dạng không nén.
3.2.2 Định dạng dữ liệu:
Tất cả các giá trị dữ liệu được lưu trữ trong thứ tự nhỏ dần về cuối (byte ít quan trọng đầu tiên).
File sóng có thể chứa các chuỗi văn bản quy định cụ thể các nhãn điểm nhấn, ghi chú,… Strings được lưu trữ trong một định dạng mà các byte đầu tiên xác định số lượng theo byte văn bản ASCII trong chuỗi.
Các byte sau đây là các byte ký tự ASCII tạo nên các chuỗi văn bản. Đây là định dạng được sử dụng cho các chuỗi Pascal.
7 'E' 'X' 'A' 'M' 'P' 'L' 'E'
Hình 3.1: Định dạng chuỗi sóng
3.2.3 Xử lí tập tin wave
Là một dạng tập tin dùng để lưu trữ dữ liệu âm thanh số(dạng sóng) và nó là một trong những định dạng phổ biến nhất của hệ điều hành Windows.
Một file RIFF chứa một hay nhiều loại chunks.Mỗi chunk gồm có loại chunk và dữ liệu theo sau loại chunk đó,đồng thời chứa con trỏ để trỏ đến chunk kế tiếp.
Cấu trúc file âm thanh gồm ba khối: khối mô tả dạng RIFF,khối thuộc tính “fmt “ và khối dữ liệu “data” trong đó khối thuộc tính “fmt” và khối dữ liệu “data” là 2 khối con của khối mô tả dạng RIFF.
Hình 3.2: Cấu trúc tập tin âm thanh Khối mô tả dạng RIFF:
Khối này xác định dạng RIFF và có kích thước là 12 byte gồm các trường.
Hình 3.3 : Làn sóng dạng RIFF
Khối thuô ̣c tính “fmt ”:
Khối này xác định các thuộc tính của dữ liệu âm thanh và có kích thước là 24 byte.
Cấu trúc khối fmt như sau:
class WavFormatChunk : WavChunk {
// kiểu mã hoá dữ liệu âm thanh publicushort wFormatTag;
// có hai giá trị: bằng 1 cho âm thanh mono, bằng 2 cho âm thanh stereo
publicushort wChannels;
// cho biết tốc độ lấy mẫu (11025-11,025kHz,22050-22,05 kHz…)
publiculong dwSamplesPerSec;
//số byte trung bình yêu cầu trong 1 giây để phát lại mẫu dữ liệu của sóng âm
publiculong dwAvgBytesPerSec;
// mẫu <= 8 bit sẽ yêu cầu 1 byte, mẫu 9-16 bit sẽ yêu cầu 2 bytes
publicushort wBlockAlign;
// cho biết số bit trong một mẫu dữ liệu(dạng byte hay word) publicushort wBitsPerSample;
}
Khối này xác định các thuộc tính của dữ liệu âm thanh và có kích thước là 24 byte gồm các trường:
• Subchunk1ID:
- Kích thước: 4 byte
- Chứ c năng: chứa chuỗi “fmt ”. • Subchunk1Size:
- Kích thước: 4 byte
- Chức năng :cho biết tổng kích thước của các trường thuộc khối thuộc tính đứng phía sau trường này.
(đối với tập tin wave không nén thì Subchunk1Size bằng 16) • AudioFormat:
- Kích thước: 2 byte
- Chức năng: cho ta biết dạng nén của dữ liệu trong tập tin wave. Giá trị mô tả
- 0 :Không xác định
- 1: Không nén (PCM-Pulse Code Modulation) Một số giá trị thông dụng
• NumChannels: Kích thước: 2 byte
Chức năng: cho biết số kênh của tập tin wave. (Mono=1,Stereo=2,v.v)
• SampleRate:
- Kích thước: 4 byte
- Chức năng: cho biết số mẫu trên 1s và đây chính là tần số lấy mẫu của tập tin wave.
• ByteRate:
- Kích thước: 4 byte
- Chức năng:cho biết số byte trên 1 s ứng với tần số lấy mẫu trên. (ByteRate=SampleRate*NumChannels*(BitsperSample/8))
• BlockAlign:
- Kích thước:2 byte
- Chức năng: cho biết số byte của 1 mẫu gồm tất cả các kênh. • BitsPerSample: cho biết số bit trên 1 mẫu chỉ tính cho 1 kênh. ( 8 bit=8,16 bit=16,v.v)
Data Chunk - "dữ liệu"
Chunk sóng dữ liệu chứa dữ liệu mẫu âm thanh kỹ thuật số có thể được giải mã bằng cách sử dụng định dạng và phương pháp nén quy định tại Chunk Định dạng Wave.
Đối với mẫu âm thanh 8 bit,dữ liệu của “data” bao gồm các giá trị 1 byte(từ 0-255) của các mẫu âm thanh. Với mẫu âm thanh 16 bits,mỗi mẫu dữ liệu gồm 2 bytes (-32768 đến 32767).
Cấu trúc :
typedef struct
{
ID chunkID;
Long chunkSize;
unsigned char waveformData [];
} DataChunk;
ChunkSize là số lượng byte trong đoạn.
Độ phân giải bit và các thông tin khác nhận được từ các đoạn định dạng(Format).
Các mảng waveformData chứa dữ liệu dạng sóng thực tế. Dữ liệu được sắp xếp thành các khung mẫu.
Số lượng các khung mẫu trong waveformData được xác định bằng cách chia này chunkSize wBlockAlign đoạn định dạng.
Chunk dữ liệu là cần thiết vì chỉ có một Chunk dữ liệu có thể xuất hiện trong một WAVE.
Làn sóng các tập tin thường chứa chỉ có một đoạn dữ liệu, nhưng chúng có thể chứa nhiều hơn một nếu họ được chứa trong một Chunk Danh sách Wave ("wavl").
Hình 3.4: Định dạng dữ liệu Chunk
Mẫu kĩ thuật số đa kênh âm thanh được lưu trữ như các dữ liệu sóng xen kẽ (như âm thanh stereo và surround).
Sóng tập tin được lưu trữ bằng cách lướt qua các mẫu âm thanh cho mỗi kênh trước khi tiến tới mẫu tiếp theo. Điều này được thực hiện để các tập tin âm thanh có thể được phát hoặc xem trực tiếp trước khi toàn bộ tập tin có thể được đọc. Đây là tiện dụng khi phát một file lớn từ đĩa (có