ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:22.43KB ,
资源ID:3147967      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3147967.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Speexmanul手册中文版.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Speexmanul手册中文版.docx

1、Speexmanul手册中文版在VOIP的音频算法中,回音处理已经成为一个关系通话质量的主要问题。回声的产生在IP网络主要有两种:1.声学回声2.电路回声声学回声主要又分成以下几种:a ) 直接回声:由扬声器产生的声音未经任何反射直接进入麦克风b ) 间接回声: 由扬声器发出的声音经过多次反射后,再进入Mic对于第二种回声,拥有多路径,时变性的特点.是比较难处理的.由于IP网络下的传输的延迟较大,而一般情况下,对于人耳,如果声音延迟达到了10ms以上的话,那么回声就会越来越明显.一般来讲,VOIP中的声音延迟主要来自于几个方面:1. 编码延迟: 一般情况下编码算法在声音压缩时都会产生延迟,就我

2、们采用的Speex来讲,延迟大概在20ms左右2. 处理延迟, 封装时延, 缓冲时延等3. 在IP网络中数据的传输过程也会照成延时.这由当前的网络状况决定.回声消除的模型:a) 建立远端声音模型,进行回声估计, 从采集的值中减去估计值b) 声学模型Speex是一套专门用于压缩声音的库,由于其专门针对声音,所以压缩声音的性能非常高.Speex由于其压缩性能,及0.80版后的跨平台的性能,所以在网络声音的传输中有很大的价值.但是需要注意的是speex只能对声音进行压缩,不支持音乐的压缩,如果你需要音乐的压缩你或许需要用vorbis库.但是的speex资料像其它大都数专用库一样,并没有大多的中文资料

3、.所以在这里我决定将里面最核心的编程技术翻译出来.一来是练习练习自己翻译资料的能力,二来是方便一些英语水平较差的朋友.由于本人能力有限,有些感觉有出入或难理解的地方可以去speex的官方.speex.org找到英文原版的说明.1,speex的介绍(略)2特征描述这个章节展示了speex的主要特征,以衣一些关于对话(speech)编码的一个概念,以便帮助我们更好的了解下一章节.取样率(Sampling rate)Speex主要是设计了三种不同的取样率:8kHz,16kHz,32kHz.这些分别代表了窄宽(narrowband),多频率,超声.质量Speex编码大都数时间是被一个围为0到10的质量

4、参数来控制的.在一个比特率为常量(CBR)的操作中,质量参数是一个整数,而对于变动的比特率(VBR)参数是一个float;复杂性(变量)用speex,你可以将编码设置成允许的复杂度.这由一个围为1到10的整数来控制完成,就像你用选项-1到-9来控制gzip和bzip2的压缩质量.在通常的运用中,噪声级别的复杂度1是在1到2dB之间,比复杂度10要高,但是CPU需要复杂度10大概5倍高行复杂度1.在实践中,最好的是设置在2到4之间,尽管更高的设定通常有用,当编码一个非对话声音(non-speech sounds)像DTMF语调(tones).变波特率(VBRVariable bit-rate (

5、VBR) allows a codec to change its bit-rate dynamically to adapt to变波特率(VBR)允许编码动态地改变它的波特率以适应声音编码的”难度”.在speex举例来说,像元音(vowel)和瞬间高音(high-enenrg transients)需要个高的比特率来取得一个不错的质量,而摩擦音(fricative)可以被充分地用相对较少的字节来进行编码.由于上面这个原因,VBR可以调节到一个低的比特率却达到一个同样的质量,或者用某个比特率达到更好的质量.尽管有上面这些优点,但是VBR也有两个主要的缺点.首先,仅仅靠指定质量值,这里没有一个

6、关于最后平均比特率的保证.(译者注:作者大概是想说没有什么明确的方法知道质量值)此外,对一些即时通信,像IP(VoIP)这种包含着最大的比特率的,必须把比特率设为足够低以适应传输通道.平均比特率(ABR)平均比特率通过动态地调节VBR质量去得到一个确定的目标的比特率,从而解决了VBR中的一个问题.因为质量/比特率被即时的调整了,整体质量将会稍稍低于由VBR对一个设置得和目标平均比特率非常接近的质量数编码得到的结果.声音生动性检测(VAD)声音生动性检测将会发觉音频正在被编码成对话,静音,或背景噪音.VAD总在用VBR进行编码时暗中起作用,因此选项仅仅对一个不是VBR的操作起作用.对于不是VBR

7、的操作来说,speex察觉出一个不属于对话的周期,然后对它用足够的字节重新生成为背景噪音.不这叫做舒适的噪音生成(CNG).不连续传输(DTX)不连续传输是VAD/VBR操作的一个额外选项,当背景噪音一定时,它可以完整地传输.因为在基于文件的操作中,我们不能停止对文件进行写入,所以只有5字节被这种帧所运用.(给250bps通信)Algorithmic delay迟时算法每一个声音编码导致了在传输上的延时.对于speex,这种延时等于frame的大小加上一些数量的需要对每一帧进行的前瞻(”look-adhead”).在窄宽操作中(8kHz),迟时是30ms,而对于多频率(2-44Hz),迟时是3

8、4ms.这些值不包括CPU编码,解码帧的时间.4.1 Encoding4.1压缩为了用Speex压缩对话,你首先需要引用头文件:#include 然后你需要定义一个Speex的位采集(bit-packing)结构SpeexBits bits;and a Speex encoder state以及定义一个speex编码器状态量void *enc_state;上面定义的这样被初始化:The two are initialized by:speex_bits_init(&bits);enc_state = speex_encoder_init(&speex_nb_mode);为了支持多频率的压缩,s

9、peex_nb_mode将被sppex_wb_mode取代.在大都数情况下,你需要知道你用的模式(mode)的帧(frame)的大小,你可以得到在frame_size变量里得到这值:speex_encoder_ctl(enc_state,SPEEX_GET_FRAME_SIZE,&frame_size);一但初始化完毕,对于每一个输入帧:speex_bits_reset(&bits);speex_encode(enc_state, input_frame, &bits);nbBytes = speex_bits_write(&bits, byte_ptr, MAX_NB_BYTES);上面in

10、put_frame是一个指向对话(speech)帧(frame)的float指针(pointing);byte_ptr是指向编码帧开始写的地方的char指针,MAX_NB_BYTES是能写进byte_ptr而不会造成溢出的最大数.nbBytes是一个实际写入btye_ptr的数,即编码的实际大小在调用speex_bits_write前,可能你需要调用speex_bits_nbytes(&bits)得到需要写入(write)的字节大小.在你已经编码后,释放所有的资源.speex_bits_destroy(&bits);speex_encoder_destroy(enc_state);Thats

11、about it for the encoder.这就是关于编码的方面.Speex manul中文版三附源代码的翻译:B Sample codeB例程源代码这个章节演示了一段用speex编码,解码对话(speech)的源代码.可以如下用api命令来编码并解码一个文件:译者注:这里说的api命令是指unix的用”|”进行管道写入读出.在windows下这样并不能实现.% sampleenc in_file.sw | sampledec out_file.sw这里这两段代码都没有引用其它的头文件,并以16比特率(bits)进行编码natural endianness).B.1 sampleenc.

12、cSameleenc用一个未加工的16比特率(bits)文章,给它编码并产生一个speex流(steam)给标准输出.注意已压缩的和speexenc/speexdec不和谐!#include #include #define FRAME_SIZE 160 int main(int argc, char *argv) char *inFile; FILE *fin; short inFRAME_SIZE; float inputFRAME_SIZE; char cbits200; int nbBytes; void *state; SpeexBits bits; int i, tmp; /新建一

13、个新的编码状态在窄宽(narrowband)模式下 state = speex_encoder_init(&speex_nb_mode); /设置质量为8(15kbps) tmp=8; speex_encoder_ctl(state, SPEEX_SET_QUALITY, &tmp); inFile = argv1; fin = fopen(inFile, r); /初始化结构使他们保存数据 speex_bits_init(&bits); while (1) /读入一帧16bits的声音 fread(in, sizeof(short), FRAME_SIZE, fin); if (feof(f

14、in) break; /把16bits的值转化为float,以便speex库可以在上面工作 for (i=0;iFRAME_SIZE;i+)inputi=ini;/清空这个结构体里所有的字节,以便我们可以编码一个新的帧speex_bits_reset(&bits);/对帧进行编码speex_encode(state, input, &bits);/把bits拷贝到一个利用写出的char型数组nbBytes = speex_bits_write(&bits, cbits, 200);/首先写出帧的大小,这是sampledec文件需要的一个值,但是你的应用程序中可能不一样fwrite(&nbByt

15、es, sizeof(int), 1, stdout);/写出压缩后的数组fwrite(cbits, 1, nbBytes, stdout);/释放编码器状态量speex_encoder_destroy(state);/释放bit_packing结构speex_bits_destroy(&bits);fclose(fin);return 0;如何使用Speex中的AEC模块,提高声音质量?在Speex(.speex.org)的最新版本中,开始集成了回音消除的模块,而回音消除一直是Voip之中亟待解决的主要问题。很多朋友和我说speex的aec模块的效能并不好,我们先来看一下speex的aec的api调用方式。SpeexEchoState *echo_state = speex_echo_stat

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1