资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,实验指导书,CTI,计算机电信集成(,CTI,)技术,实验安排,Experiment 1,语音编码与语音文件,语音的常见编码方式的编码以及解码,G711,G729A,G7231,观察语音文件的的格式,分析其内容,用程序判定语音文件头部的包含哪些内容,了解计算机播放语音文件需要的步骤,实验安排,Experiment 2TCP/IP,协议簇的点到点通信,TCP,协议以及范例通信程序实现,UDP,协议以及范例通信程序实现,MSN,是如何炼成的,开发自己的小,Socket,程序,实验安排,Experiment 3,网络侦听,纵观全局,了解,W,ireshark,软件的原理;,了解,IPV4,包的组成并与实例印证;,了解,HTTP,服务,掌握如何使用,W,ireshark,软件抓取,HTTP,服务,TCP,服务器,,UDP,包,MSN,的透明内容。,实验安排,Experiment 4,建立,CTI,电话银行,设计并且创建一个数据库,理解如何建立一个到数据库的链接,能够使用,EasyIVR,流程图设计呼叫处理程序,试验电话银行,实验须知,1.,命令行是什么?,(,开始,/,运行,/,cmd,),命令行是没有,Windows,界面程序使用的人机交互界面,最经典的就是黑底白字面孔。,2.,如何使用命令行执行程序获取结果?,与平时直接双击某个可执行程序,(*.exe),或者是其快捷方式不同的是,我们必须首先进入包含该程序的目录才能执行,假设你将本文件夹放在了,C:,CtiExpriments,目录,那么你可以执行(,Windows,不区分大小写),cd,c:CtiExpriments,(按一下回车键哦!),进入该目录,如果在,D,盘可以先输入,然后再做上一步,d:,(按一下回车键哦!),实验须知,当已经处于程序工作的目录,只需要输入程序的名称,加上所需要的参数即可。,举例,1,:对于一个可以将文件修改名字的命令有如下介绍,重命名文件。,RENAME drive:pathfilename1 filename2.,REN drive:pathfilename1 filename2.,请注意,您不能为目标文件指定新的驱动器或路径。,所以我们就可以用如下方式把,filea.aaa,修改为,fileb.bbb,ren,filea.aaa,fileb.bbb,(,按一下回车键哦!),Experiment 1,语音编码,工具安装,CoolEdit,Windows,下最好的音频文件分析工具之一,可以看见波形、频谱,可以对付各种类型的文件。,安装方法,进入,Tools,目录下的,CoolEditor,目录,运行,cepsetup.exe,后,接受协议、一路,next,,等待结束,因为咱们是试用版的所以点击,Keep Evaluating,继续试用,把弹出的,Buy now,窗口关闭,把弹出的,Check Out Syntrillium Online!,窗口关闭,需要中文版本可以自行安装,Cool2chinese.exe,Experiment 1,语音编码,文件分析,打开,Experiment1Waves,目录,你可以看到如下文件,使用,CoolEdit,以及下面提供的参数打开(,File-Open,或者拖动文件进入,CoolEdit,都可以打开它)它,欣赏一下音乐先,_:,a_law_pcm.wav,8kHz Memo8-bit,8-bit,A-Law Compressed,u_law_pcm.wav,8kHz Memo8-bit,8-bit,A-Law Compressed,linear.wav,8kHz Memo16-bit,16-bit,Intel PCM(LSB,MSB),Experiment 1,语音编码,举例:选择,a_law_pcm.wav,文件,并且打开,Experiment 1,语音编码,根据参数,采样率选择,8000,,单声道、,8bit,然后单击,OK,Experiment 1,语音编码,根据参数,编码方式选择,8-bit A-Law Compressed(,记住,No header,这个词,一会要说说它,),Experiment 1,语音编码,单击左下角绿色的播放按钮试试看,_,Experiment 1,语音编码,试一试,!,重新载入,a_law_pcm.wav,文件用以下参数展开,16kHz Memo8-bit8-bit A-Law Compressed,重新载入,u_law_pcm.wav,文件用以下参数展开,8kHz Memo8-bit,8-bit,A-Law Compressed,发生了什么?为什么?,Experiment 1,语音编码,音频文件的由来(模拟,-,数字),音源:某个歌手,乐器发出的振动,采样:每秒钟获取,N,个模拟数值(振动强度),量化:将这,N,个模拟数值放在一些固顶的阶次上,编码(,code,):将每个量化过的的数值编程一段二进制编码,音源,20Hz20kHz,采样量化:,8000Hz,单声道,编码:,8bit A,律(查表法),存入内存缓冲区,缓冲满,没有满,满了,写入文件,Experiment 1,语音编码,音频文件编码转换的原理,举例:,8bit A,律,8bit u,律,音质会有所损失么?,文件,decode,:,8bit A,律(查表法),16bit liner PCM,encode:8bit u,律,(,查表法,),文件结束,?,是,读取,8bit,否,Experiment 1,语音编码,试一试,!,重新打开,a_law_pcm.wav,8kHz Memo8-bit8-bit A-Law Compressed,File-Save As,文件名请修改一下不要覆盖源文件,保存类型:,A/mu-Law Wave,Options-Format,mu_law,8-bit,Experiment 1,语音编码,试一试,!,重新用,CoolEdit,打开刚刚,Save as,的文件。,怎么不用输入参数了?,看起来,CoolEdit,将我们的参数已经写入到文件里了,这样再次打开的时候就不需要协商了。,那么,我们再确认一下,用,Windows,的收音机分别打开,a_law_pcm.wav,以及刚刚,Save as,的文件试试看,看看会发生什么,Experiment 1,语音编码,为什么呢?,编码数据,Wave,文件头,编码数据,文件,1,文件,2,打开文件,是文件头?,读入规范长度文件头,根据文件头内定义的,信息调用,decoder,Decode,to liner PCM,放入播放缓冲区,读取一个编码长度,文件结束,?,关闭文件,是,否,是,否,不知道怎么办,只好退出,Experiment 1,语音编码,试一试,!,让我们用工具再观察一下语音文件头部吧,运行,Experiment 1AnalyseDebugTest.exe,打开,a_law_pcm.wav,(记得嘛,它可是,no header,哦),单击分析,为啥结果乱七八糟呢?(它根本没有头部,也就是说我们把音频部分当作头部来读取了,能不乱么?),试试看你刚刚,Save as,的文件,分析一下,看看参数是不是和我们一开始给出的一样呢,Experiment 1,语音编码,实现原理,编码数据,Wave,文件头,打开文件,用,Wave,文件头结构体指针指向,访问结构体中每一个项目,pragma,pack(1),struct,RIFFFORMAT,char riff_flag4;/,识别字看看头部是不是符合,RIFF,文件头部规范,内容应该是是,RIFF,int,riff_length,;/,数据的总长度加上头长度,char waveformat_flag8;/,格式识别符,,Wave,格式应该在这里是,WAVEfmt,int,waveformat_length,;/Wave,头长度加上总长度,short,int,wFormatTag,;/,格式类别,区分,liner PCM,,,acPCM,a-law,u-law,等等,short,int,nChannels,;/,声道数,int,nSamplesPerSec,;/,采样频率,int,nAvgBytepecSec,;/,平均码率,(,每秒编码的平均大小,),short,int,nBlockAlign,;,int,wBitsPerSample,;,char fact_flag4;,int,fact_length,;,int,fact_sample_num,;/,fact_data_num,显示总共采样样本数(净数据),如,8bit,量化,则与,data,后面数量一,/,如,16bit,量化,则为,data,后面数量的一半。,char data_flag4;,int,data_length,;,;,#,pragma,pack(),Char,类型相当于,8bit,Int,类型相当于,32bit,Short,int,相当于,16bit,N,长,Char,数组相当于,N,个,8bit,Experiment 1,语音编码,IP,电话语音的传输需要更好的压缩算法,才能节约更多的带宽,所以我们有,G721,G729A,G7231,等等其他编码方式,下面我们试试看他们是否可以通过放弃部分的语音质量节约带宽(或者文件的存储空间)。,Experiment 1,语音编码,G.721,编码器、解码器说明,encode-3|4|5-,a|u|l,outfile,decode-3|4|5-,a|u|l,outfile,where:,-3encode to(decode from)G.723 24kbps(3-bit)data,-4encode to(decode from)G.721 32kbps(4-bit)data the default,-5encode to(decode from)G.723 40kbps(5-bit)data,-aencode from(decode to)A-law data,-uencode from(decode to)u-law data the default,-lencode from(decode to)16-bit linear data,Experiment 1,语音编码,打开命令行,进入,Experiment 1,目录,举例:将,A-law,编码的,存放在,Waves,目录下的,a_law_pcm.wav,转换为,3bit,编码的,G.721,文件,文件名为,7233bit.wav,(如果程序不在当前目录,要告诉系统它在哪个目录下),G721encode.exe-3-a Wavesa_law_pcm.wav 7233bit.wav,g723_24_encoder,3 bit is,working.a,law.,coding is ok!,Experiment 1,语音编码,你会发现,Experiment 1,目录下多了一个文件,文件名正是,7233bit.wav,但是没有合适的播放器可以播放它。,于是我们再尝试将此文件恢复为,linear PCM,(也可以恢复为,a-law,mu-law,随意),例:,G721decode-3-l 7233bit.wav,linerPCM.wav,试试看用,Cooledit,播放一下这个,No header,的文件吧,_,,参数自己想想看?,我们这样编码又解码的文件存在质量损失嘛?,请验证一下不同编码后节约了多少空间,它们相同么?为什么?,Experiment 1,语音编码,G729A,编码器测试,使用方法,encode,input.wav,output.wav,输入和输入的文件应该满足以下要求,input:8khz sampling,16 bit linear,pcm,output:80 bits G729A stream file.,G729A,解码器测试,使用方法,decode,input.wav,output.wav,input:80 bits G729A stream file.,Output 8khz sampling,16 bit linear,pcm,Experiment 1,语音编码,用,Waves,目录下的,linear.wav,进行测试(或者自己生成符合要求的文件)编码,比较源文件以及编码后的文件大小,看一看,G729A,编码消耗的时间大概有多久,用,Waves,目录下的,linear.wav,进行测试(或者自己生成符合要求的文件)解码,比较源文件以及解码后的文件大小,看一看,G729A,解码消耗的时间大概有多久,用,Cooledit,播放比较一下源文件和解码后文件音频质量。,Experiment 1,语音编码,G7231,编码器测试,使用方法,lbccodec,c,input.wav,output.wav,输入和输入的文件应该满足以下要求,input:8khz sampling,16 bit linear,pcm,output:G7231A stream file.,G7231,解码器测试,使用方法,lbccodec,d,input.wav,output.wav,output:G7231A stream file.,Output 8khz sampling,16 bit linear,pcm,Experiment 1,语音编码,G7231,用,Waves,目录下的,linear.wav,进行测试(或者自己生成符合要求的文件)编码,比较源文件以及编码后的文件大小,看一看,G7231,编码消耗的时间大概有多久,用,Waves,目录下的,linear.wav,进行测试(或者自己生成符合要求的文件)解码,比较源文件以及解码后的文件大小,看一看,G7231,解码消耗的时间大概有多久,用,Cooledit,播放比较一下源文件和解码后文件音频质量,Experiment 1,语音编码,比较一下,同一个音频文件由各个编码器的压缩解码时间,压缩后大小,恢复线性,pcm,以后的音频质量,填入下表,方式压缩以及解码时间压缩后大小音频质量,线性,PCM,无原文件大小最好,721,729A,7231,Check Points!,Experiment 1,语音编码与语音文件,语音的常见编码方式的编码以及解码,G711,G729A,G7231,观察语音文件的的格式,分析其内容,用程序判定语音文件头部的包含哪些内容,了解计算机播放语音文件需要的步凑,Experiment 2TCP/IP,协议簇的点到点通信,我们已经学习了很多,TCP/IP,的理论,可是如何在计算机上构建一个基于,TCP,或者是基于,UDP,的协议呢?,Socket,是一种被众多操作系统支持的网络开发接口,应用程序,Socket,Raw Socket,TCP Socket,UDP Socket,操作系统,网络设备驱动程序,网络设备,Experiment 2TCP/IP,协议簇的点到点通信,试一试,内容一:基于,TCP,协议的,Socket,消息发送和接收,说明:事例程序在,TCP Socket,目录下,源程序也在其下。,运行示例程序,WinSocketServer.exe,设置端口号:,1001,,如图,12.2,点击“开启服务”,(,如果有防火墙碍事,请务必允许谢谢,),运行示例程序,WinSocketClient.exe,,设置端口号一定要与,Server,设置的一致。如果在同一台机器上运行,输入服务器,IP,地址:,127.0.0.1,,如果不在同一台机器上,输入局域网上服务器所在机器的,IP,地址(当然首先确保局域网通畅,如果不知道,IP,可以用命令行的,ipconfig,命令),点击“连接服务器”,在客户端输入文字消息,可以看到服务器端能显示出客户机的名称、,IP,地址、以及通过,Socket,消息发送过来的文字内容。如图,12.4,Experiment 2TCP/IP,协议簇的点到点通信,试一试,内容二:基于,UDP,协议的,Socket,消息发送和接收,说明:事例程序在,UDP Socket,目录下,源程序也在其下。,(必须是在两台机器上)均运行程序“,WinSockUDP.exe,”,,注意此时 客户端服务器在同一个程序里实现了,所以没有“服务器”“客户端”之说,首先打开端口,让后在另一台电脑上输入刚刚打开端口的电脑地址在“服务器名”栏,端口号必须一致。,连接上服务器后,可以互发消息,Experiment 2TCP/IP,协议簇的点到点通信,使用,MSN,简易客户端软件进行通信,并分析其采用的是,TCP,通信还是,UDP,通信,简要步骤,:,文件在,MSN,目录下,1,通过,File-New Contact-,增加你需要添加的,MSN,用户,如图,2,通过,Tools-Change Screen Name-,修改你的本地,MSN,姓名,;,3,通过,Actions-Send Instant Message-,进行,MSN,通信,(,前提,:,已经连接上某个用户,),Experiment 2TCP/IP,协议簇的点到点通信,实验报告要求,查找资料,分析,TCP,通信的基本过程,画出消息相应交互图;,阅读程序,分析,TCP,通信主要使用了哪些,Csocket2.0,的成员函数,对应上面的消息流程图说明其用法,试验动手要求,在,TCP,通信程序中,添加一个文本框,再添加一个“按键”控件,完成,Server,端发送消息到客户端。,说明为什么,UDP,消息为什么不需要先建立开启服务机制?,比较,TCP,通信和,UDP,通信方式的优劣。,思考题:,查找资料,分析什么是,Socket,消息拥塞情况,应如何编程避免?,如果多客户端连接,服务器程序是采用何种方式管理客户端个数和地址的?,如果现在要传送一个,TXT,文本,应如何实现,写出编程思路?,如果现在要传送一个二进制文件,采用,Socket,消息的方式合适嘛,为什么?,Check Points!,Experiment 2TCP/IP,协议簇的点到点通信,TCP,协议以及范例通信程序实现,UDP,协议以及范例通信程序实现,MSN,是如何炼成的,开发自己的小,Sockets,程序,Experiment 3,网络侦听,纵观全局,安装,Experiment 3,目录下的,wireshark-setup-1.0.0,,一路,Next,,在弹出的,WinPCap,库窗口也是一路,Next,I,agree,,,Finish,。,首先我们尝试捕捉:,单击左上角的第一个图标,列出所有可以捕捉的设备,选择一块有,IP,的网卡,单击,Start,既开始捕捉,Experiment 3,网络侦听,纵观全局,这时候流经这块网卡的数据包都会被截取下来保存一份在屏幕上,(,比如说开始捕捉后你上了网,就会产生,HTTP,协议的报文,,Winshark,里面就可以很清楚的看到,),你觉得满意以后,单击停止按钮,就不会有新的包被记录了,就是列出网卡按钮右边的有个红,x,的按钮,Experiment 3,网络侦听,纵观全局,单击每一个包,Winshark,会根据它所知道的规则解释给你看,如我现在选择的包就被分为了,Frame 13,(第,13,帧)物理,以太网二层链路,IP,协议网络,UDP,协议会话,HTTP,协议应用,这几个层面为我们进行分析,我们可以展开每个层次的分析看其详细结果,可以用,Winshark,上面的过滤器进行过滤,例如我们只需要,HTTP,协议的消息,在框中输入,http,,如果我们还想要,ftp,http AND ftp,即可,Experiment 3,网络侦听,纵观全局,因为,FTP,协议是明文传输帐号密码的,所以只要捕获包含登录信息的包就可以知道用户的帐号密码,让我们来验证一下,开启捕捉,登录已经架设好的,FTP,服务器,用户名:,mary,,密码:,123456,关闭捕捉,进行分析,Experiment 3,网络侦听,纵观全局,因为,HTTP,协议是传输的,所以用户的一切交互(请求和应答)都是可以清楚的被捕获的,开启捕捉,登录已经架设好的,HTTP,服务器密码页面,任意输入帐号密码,关闭捕捉,进行分析,Experiment 3,网络侦听,纵观全局,尝试使用,Winshark,分别捕捉第二章的几个网络测试小程序的报文,看看他们的格式与,HTTP,请求应答有什么区别,想一想什么是应用层协议,应用层协议与网络层协议有何区别?,Experiment 3,网络侦听,纵观全局,实验报告要求:,简要描述实验过程。,回答思考题中的若干问题。,思考题:,DLC,包、,IP,包、,TCP,包(,UDP,包)、,HTTP,包(,FTP,包)的关系是怎样,画出框图。,如何使用,sniffer,软件分析一个,IP,包的版本号?长度,Length?,生命周期,TTL?,头校验?源地址?目的地址?,一个,TCP,包如何确知自己的数据段是,HTTP,包。,已知一个,IP,包,如何知道该,IP,包的数据段是,TCP,包还是,UDP,包。,已知一个,TCP,包,分析其数据段(净荷)的组成结构是怎样的?,UDP,包的数据部分又是怎样结构?,练习一下,sniffer,软件,回答一下,sniffer,还有什么其它功能?,Check Points!,Experiment 3,网络侦听,纵观全局,了解,W,ireshark,软件的原理;,了解,IPV4,包的组成并与实例印证;,了解,HTTP,服务,掌握如何使用,W,ireshark,软件抓取,HTTP,服务,TCP,服务器,,UDP,包,MSN,的透明内容。,Experiment 4,建立我的,CTI,电话银行,详细内容请看,Experiment 4,试验四简要说明,.doc,重要提示:文件夹结构,EasyStudio,流程图编程工具,g-exe,运行平台,scriptscript,存放脚本的目录(自己做的流程脚本只有在这里才能正常运行!),scriptscriptsysvox,系统自带的数字音,圆、角、分、个、十、百、千、万,退出模拟运行平台的密码是,tongli2004,Experiment 4,建立我的,CTI,电话银行,写出一个电话银行的流程,画出流程图,应该包括:语音提示:,1,,帐户查询余额;,2,,转帐(将一个帐户的金额转入另一个有效帐户;,3,,修改密码;,4,,新增帐户;,5,,注销帐户;,6,,转人工服务。,将上面的流程用,EasyStudio.EXE,编写,vsd,文件,并声卡模拟测试。,思考题:,分析控件“发送数据”如何实现?,
展开阅读全文