VoIP基本原理

VoIP是通过Internet等互联网络传递语音信息的,主要包括终端设备、网关、网守和网络管理等部分。网关负责提供IP网络和传统的PSTN接口。

VoIP的基本原理:通过语音压缩算法对语音数据进行压缩编码处理,然后将语音数据按照TCP/IP标准打包,经过IP网络把数据包发送到接收端,之后将语音数据包串起来,经过解码解压之后,恢复成原来的语音信号,从而达到利用互联网传送语音的目的。与之相似的有公共交换电话网络(Public Swithched Telephone Network, PSTN):这是一种日常生活中经常使用的电话网。由于PSTN是一种电路交换的方式,所以一条通路自建立直至释放,其全部带宽仅能被通路两端的设备使用,因此带宽利用率极低。

VoIP的核心与关键设备是IP网关。网关具有路由管理功能,它把各地区电话区号映射为相应的地区网关IP地址。这些信息存放在一个数据库中,数据接续处理软件将完成呼叫处理、数字语音打包、路由管理等功能。在用户拨打长途电话时,网关根据电话区号数据库资料,确定相应网关的IP地址,并将此IP地址加入IP数据包中,同时选择最佳路由以减少传输时延,IP数据包经Internet到达目的地的网关,在一些Internet尚未延伸到或暂时未设立网关的地区,可设置路由,由最近的网关经过长途电话网转接,实现通信业务。

为了在一个IP网络上传输语音信号,对网络有一些最低要求。最简单形式的网络由两个或多个具有VoIP功能的设备组成,这些设备通过一个IP网络连接。VoIP传输过程:

  1. 语音->数据转换

    语音信号本身是模拟信号,如果通过IP传输语音,不管是实时应用还是非实时应用,首先都需要对语音信号进行模拟数据转换,也就是对模拟信号进行8位或16位的量化,然后送入缓冲存储区中,缓冲区大小可以根据延迟和编码的要求选择,低比特率的编码器通常采取以帧为单位进行编码,典型帧长为10ms~30ms。考虑传输过程中的代价,语音包通常由60ms、120ms和240ms的语音数据组成。数字化可以使用各种语音编码方案来实现,目前采用的语音编码标准有ITU-T G. 711、G. 729等。发送端和接收端的语音编码器和语音编码器必须实现相同的算法,这样接收端才能恢复原始的语音信号。

  2. 原始数据->IP转换

    语音数据数字编码之后,下一步就是对语音包以特定的帧长进行压缩编码。大部分的编码器都有特定帧长,若一个编码器使用15ms的帧,则把第1步中的60ms的包分成4帧,并按照顺序进行编码,如果采样率8kHz,则每帧共15ms*8kHz=120个采样点。编码后将4个数据包合成一个压缩语音包送入网络处理器,网络处理器为语音添加包头、时序和其它信息通过互联网传送到另一端。IP网络不像电路交换网络,其不形成连接,它要求把数据放在变长的数据报或分组中,每个数据报附带寻址和控制信息,并通过网络发送,一站一站转发到目的地。

  3. 传送

    在这个通道中,全部网络被看成一个整体,持续不断地从输入端接收语音包,然后在一定时间\(t\)内将其传送到网络输出端。时间\(t\)可以在某个范围内变化,反映了网络传输中的抖动。网络中的中间节点检查每个IP数据附带的寻址信息,并使用这个信息把该数据报转发到目的地路径上的下一站。

  4. IP包->数据转换

    目的地VoIP设备接收这个IP数据报并开始处理,并提供一个变长缓冲区用来调节网络产生的抖动。小的缓冲区延迟较小,但不能容纳更大的抖动。

  5. 数字信号->模拟语音

    播放驱动器将缓冲器中的语音样本点送入声卡,通过扬声器按照预定的频率播放。

VoIP基本原理的更多相关文章

  1. VoIP语音处理流程和知识点梳理

    做音频软件开发10+年,包括语音通信.语音识别.音乐播放等,大部分时间在做语音通信.做语音通信中又大部分时间在做VoIP语音处理.语音通信是全双工的,既要把自己的语音发送出去让对方听到,又要接收对方的 ...

  2. Ognl表达式基本原理和使用方法

    Ognl表达式基本原理和使用方法 1.Ognl表达式语言 1.1.概述 OGNL表达式 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,他是一个 ...

  3. Android自定义控件之基本原理

    前言: 在日常的Android开发中会经常和控件打交道,有时Android提供的控件未必能满足业务的需求,这个时候就需要我们实现自定义一些控件,今天先大致了解一下自定义控件的要求和实现的基本原理. 自 ...

  4. HMM基本原理及其实现(隐马尔科夫模型)

    HMM(隐马尔科夫模型)基本原理及其实现 HMM基本原理 Markov链:如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程.马尔可夫链是时间和状态 ...

  5. 动态令牌-(OTP,HOTP,TOTP)-基本原理

    名词解释和基本介绍 OTP 是 One-Time Password的简写,表示一次性密码. HOTP 是HMAC-based One-Time Password的简写,表示基于HMAC算法加密的一次性 ...

  6. ZooKeeper基本原理

    ZooKeeper简介 ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. ZooKeeper设计目的 1. ...

  7. 如何实现VoIP中大并发应用

    后台服务器实现高并发方式: 说明: 黄色皆为运营商或第三方对接系统的VoIP设备等. 前置服务器A与B为热备容灾模式,当A异常,立即跳转到B. 应用服务器做实时容灾处理. 数据库做实时容灾处理. 媒体 ...

  8. GBDT的基本原理

    这里以二元分类为例子,给出最基本原理的解释 GBDT 是多棵树的输出预测值的累加 GBDT的树都是 回归树 而不是分类树 分类树 分裂的时候选取使得误差下降最多的分裂 计算的技巧 最终分裂收益按照下面 ...

  9. 全文检索引擎 Solr 部署与基本原理

    全文检索引擎 Solr 部署与基本原理 搜索引擎Solr环境搭建实例 关于 solr , schema.xml 的配置说明 全文检索引擎Solr系列-–全文检索基本原理 一.搜索引擎Solr环境搭建实 ...

随机推荐

  1. Spring JDBC最佳实践(2)

    原文地址:https://my.oschina.net/u/218421/blog/38576 使用DataSourceUtils进行Connection的管理由上节代码可知,JdbcTemplate ...

  2. BST平衡二叉树的后继结点(最近的大)

    public class InorderSuccessorInBST {//平衡二叉树查找后继结点 public TreeNode inorderSuccessor(TreeNode root, Tr ...

  3. 前端与算法 leetcode 125. 验证回文串

    目录 # 前端与算法 leetcode 125. 验证回文串 题目描述 概要 提示 解析 解法一:api侠 解法二:双指针 算法 传入测试用例的运行结果 执行结果 GitHub仓库 查看更多 # 前端 ...

  4. redis的setIfAbsent

    setIfAbsent(K key, V value) 如果键不存在则新增,存在则不改变已经有的值.

  5. 从有序矩阵M x N中找出是否包含某一个数,要求时间复杂度为O(M+N)

    有序指的是每行从左到右依次变大,每列从上到下依次变大 思路: 从右上顶点开始依次判断当前值与给定值的大小,往左下顶点移动,结束条件是下标超过范围 public class FindNumInOrder ...

  6. ElasticSearch中碰到的C10K问题

    Elasticsearch基于Netty解决C10K问题背后的原理是JAVA NIO中的IO多路复用机制,涉及到三大"组件":SelectableChannel.Selector. ...

  7. 观察者(Observer)模式

    观察者模式又叫做发布-订阅模式(Publish.Subscribe)模式.模型-视图模式(Model/View)模式.源-监听器模式(Source/Listener)模式或从属者(Dependents ...

  8. git实战中遇到git@github.com: Permission denied (publickey).的问题

    一.问题我们在使用git的时候会建立一个私钥和一个公钥来完成彼此的通讯,因此如何使用给一个指令建立一个秘钥至关重要.但是我在实践的过程中出现了git@github.com: Permission de ...

  9. 『异或粽子 堆 可持久化trie』

    异或粽子 Description 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子. 小粽面前有 n 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 1 到 n.第 i 种馅儿 ...

  10. Tomcat 路由请求的实现 Mapper

    在分析 Tomcat 实现之前,首先看一下 Servlet 规范是如何规定容器怎么把请求映射到一个 servlet.本文首发于(微信公众号:顿悟源码) 1. 使用 URL 路径 收到客户端请求后,容器 ...