Định dạng thực tế Chunk

Một phần của tài liệu công nghệ voip trên nền asterisk (Trang 45 - 52)

 Định dạng Phụ thuộc dữ liệu :

 Hiện tại chỉ có một lĩnh vực quy định cho các dữ liệu phụ thuộc vào định dạng. Đó là một giá trị duy nhất 4-byte quy định cụ thể số lượng mẫu trong đoạn dữ liệu dạng sóng. Giá trị này có thể được sử dụng với các mẫu ,mỗi giá trị thứ hai quy định trong định dạng đoạn để tính tốn chiều dài dạng sóng trong vài giây.

 Khi định dạng WAVE mới được giới thiệu, các đoạn thực tế sẽ được mở rộng, lĩnh vực phụ được thêm vào sau khi số lượng quy định của mẫu nghiên cứu lấy.

 Các ứng dụng có thể sử dụng kích thước đoạn thực tế để xác định các lĩnh vực có mặt trong đoạn.

3.2.4 Đọc file RIFF:

 Làn sóng tập tin header theo cấu trúc tập tin định dạng RIFF chuẩn.  8 byte đầu tiên trong tập tin tiêu đề trong đó có một ID đoạn "RIFF" và

một đoạn kích thước bằng kích thước tập tin trừ đi 8 byte được sử dụng bởi tiêu đề.

 Vì vậy, chúng ta cần phải biết tổng chiều dài của tất cả các tập tin để xác định ChunkSize và đọc NumChannels SampleRate và BitsPerSample.

private void WaveHeaderIN( string spath) {

FileStream fs = new FileStream(spath, FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(fs); length = ( int )fs.Length - 8 ;

fs.Position = 22 ; channels = br.ReadInt16(); fs.Position = 24 ; samplerate = br.ReadInt32(); fs.Position = 34 ; BitsPerSample = br.ReadInt16(); DataLength = ( int )fs.Length - 44 ; br.Close ();

fs.Close(); }

 Như chúng ta biết, các kênh được lưu trữ trong tiêu đề WAV trong số byte 22, chúng tôi di chuyển vị trí hiện tại của tập tin đến vị trí này và kích thước của nó là 2 byte, do đó chúng tơi sử dụng br.ReadInt16 () để đọc chỉ có 2 byte.

private void WaveHeaderOUT( string sPath) {

FileStream fs = new FileStream(sPath, FileMode.Create, FileAccess.Write );

BinaryWriter bw = new BinaryWriter(fs); fs.Position = 0;

bw.Write(new char[4] { 'R', 'I', 'F', 'F' }); bw.Write(length);

bw.Write(new char[8] {'W','A','V','E','f','m','t',' '}); bw.Write((int)16);

bw.Write((short)1); bw.Write(channels); bw.Write(samplerate );

bw.Write((int)(samplerate * ((BitsPerSample * channels) / 8))); bw.Write((short )((BitsPerSample * channels) / 8));

bw.Write(new char[4] {'d','a','t','a'}); bw.Write(DataLength);

bw.Close(); fs.Close(); }

 Khai báo "RIFF" như là một mảng của char, không phải là chuỗi và sử dụng loại int để lưu trữ 4 byte và loại ngắn để lưu trữ 2 byte. public void Merge( string [] files, string outfile)

{

WaveIO wa_IN = new WaveIO(); WaveIO wa_out = new WaveIO();

wa_out.DataLength = 0; wa_out.length = 0; //Gather header data

foreach (string path in files) {

wa_IN.WaveHeaderIN(@path);

wa_out.DataLength += wa_IN.DataLength; wa_out.length += wa_IN.length;

}

//Recontruct new header

wa_out.BitsPerSample = wa_IN.BitsPerSample; wa_out.channels = wa_IN.channels;

wa_out.samplerate = wa_IN.samplerate; wa_out.WaveHeaderOUT(@outfile); foreach (string path in files)

{

FileStream fs = new FileStream(@path, FileMode.Open, FileAccess.Read);

byte[] arrfile = new byte[fs.Length - 44]; fs.Position = 44;

fs.Read(arrfile, 0, arrfile.Length); fs.Close();

BinaryWriter bw = new BinaryWriter(fo); bw.Write(arrfile);

bw.Close(); fo.Close();

}

 Chúng ta cần để tính tốn tổng chiều dài và chiều dài dữ liệu của tất cả các tập tin và sau đó xác định các kênh, SampleRate và BitsPerSample của file.

 Tất cả chúng ta cần làm là gọi phương thức kết và quy định cụ thể các tập tin đầu vào và tập tin đầu ra.

string [] files = new string [ 2 ] { @" ..\đường dẫn\file.wav" , @"C:\WINDOWS\Media\Windows\XP Shutdown.wav" }; WaveIO wa = new WaveIO();

CHƢƠNG 4: TÌM HIỂU DỊCH VỤ TRA CỨU ĐIỂM TUYỂN SINH

4.1 Tổng quan về hệ thống tuyển sinh: 4.1.1 Hoạt động: 4.1.1 Hoạt động:

 Khi khách hàng gọi đến tổng đài , khách hàng có thể biết được mã trường , điểm thi của một thí sinh nào đó ứng với số báo danh.

 Theo lí thuyết, tuỳ theo chương trình mà ta chuyển xử lí đến điện thoại viên hay để máy xử lí tự động.Và nếu chuyển đến điện thoại viên thì ta phải quản lí thêm kênh kết nối giữa người và máy.Điều này sẽ làm ta khó quản lí hơn.

 Và trong thực tế, tổng đài thường được xử lí một cách tự động. Nó tạo hiệu quả xử lí nhanh và dễ quản lí. Chính điều đó, trong ứng dụng này, ta sẽ tạo một ứng dụng hoàn toàn tự động.

4.1.2 Các thành phần và quá trình hoạt động:

 Các thành phần

 Database server – sql server : chứa dữ liệu của dịch vụ.  Hub – router : kết nối mạng và các máy tính cục bộ.

 Máy tính : dùng để truy xuất cơ sở dữ liệu cà cài đặt softphone.  Softphone -3CX: điện thoại giao tiếp với người dùng.

 Khi bạn gọi tới hệ thống ,ứng dụng sẽ xuất hiện ngay câu chào : “Chào mừng bạn đến với dịch vụ tra điểm tuyển sinh”.

 Xử lý của ứng dụng

 Giao tiếp trong mạng Lan

 Trong phần demo này, ta cho các máy tính giao tiếp trog mạng Lan cục bộ chứ khơng giao tiếp với mạng điện thoại bên ngồi mạng được. Muốn kết nối được ta phải một thiết bị trung gian nào đó để có thể kết nối máy tính với máy điện thoại bên ngoài.

 Trong thực tế,ứng dụng sẽ được giao tiếp trực tiếp với mạng điện thoại thông qua một số Card do cơng ty Digium sản xuất.Nó giúp việc giao tiếp thuận lợi hơn.

 Truy vấn dữ liệu

 Tồn bộ thơng tin điểm ,số báo danh,danh sách thí sinh đều được lưu trữ trong chương trinh SQL Server 2005.

 Chương trình xử lý dựa vào thơng tin mà người dùng cung cấp như mã thí sinh mà đáp ứng yêu cầu người dùng.

 Chương trình đóng vai trị như client giao tiếp với SQL để gởi và nhận dữ liệu cần thiết.

 Thông tin lấy được ở đây là dạng Text.  Phát ra âm thanh

 Đây là quá trình giao tiếp giữa người và máy nên ta phải xử lí sao cho người dùng có thế nghe được âm thanh.

 Khi thơng tin được trả về, nó có dạng text nên ta phải chuyển sang dạng âm thanh tương ứng để người sử dụng hiểu được.  Tóm lại, chức năng chính của hệ thống là làm sao chuyển từ dạng text

sang dạng văn nói (tiếng nói) tương ứng với chữ đó. Và chức năng đó gọi là Text to Speech.

 Hoạt động

 Khi gọi vào, hệ thống sẽ yêu cầu bạn nhập mã số dự thi để bắt đầu tra cứu.Khi nhập xong,dựa vào mã số dự thi này,chương trình sẽ tìm kiếm trong cơ sở dữ liệu và thông báo kết quả cho bạn.

4.2 Chức năng của hệ thống: 4.2.1 Tổng quát chức năng 4.2.1 Tổng quát chức năng

4.2.2 Sơ đồ xử lí chức năng Lựa chọn Lựa chọn phím bấm Nghe điểm thi Đọc kết quả theo SBD Nghe mã mơn thi Khơng có sinh viên Gọi vào số 200 Nhập SBD khác Kết thúc cuộc gọi Truy vấn CSDL Trả lời tự động Phím 1 Phím 2

hết thời gian thao tác

hết thời gian thao tác khơng điểm hết thời gian xử lí Phím 2

4.3 Thiết kế lƣợc đồ dữ liệu quan hệ ERD 4.3.1 Các tập thực thể 4.3.1 Các tập thực thể

Một phần của tài liệu công nghệ voip trên nền asterisk (Trang 45 - 52)