SILK : SILK_RTP_PayloadFormat 中文翻译
关于本备忘录
本文件可能不会发布修正版本等后续工作。请注意SILK 仍然处在测试阶段,所以SILK 及其RTP 负载格式和文件存储格式都可能改变。如有疑问,请联系 silksupport@skype.net。
版权声明
版权 2009-2010,版权归Skype 所有
摘要
本文件定义了将SILK 语音频编码数据打包所用的实时传输协议(RTP)负载格式和文件存储格式,这些数据对于以最兼容的方式实现SILK 是必不可少的。并进一步描述了RTP 负载格式和文件存储格式的媒体类型注册。
目录
1. 简介
SILK 是Skype 内部开发的一个语音频编解码器,作为Skype 到Skype 调用的默认编解码器。SILK 在音频带宽、网络码率和复杂度等方面的高度可扩展性使其成为可选择多种模式和应用的编解码器。
Skype 鼓励第三方合作伙伴组织(3GPP)在可能与Skype 互操作的网络中采用SILK。因此,本文件定义了将SILK 语音频编码数据打包所用的RTP 负载格式和文件存储格式,这些数据是以最兼容方式实现SILK 必不可少的。本文件进一步描述了RTP 负载格式和文件存储格式媒体类型注册。
关于SILK 的更多信息可以通过以下链接获得:
https://developer.skype.com/silk
2. 本文件使用的公约、定义和缩略语
本文件中出现的关键词“MUST”,“MUST NOT”,“REQUIRED”,“SHALL”,“SHALL NOT”,“SHOULD”,“SHOULD NOT”,“RECOMMEDED”,“MAY”,“OPTIONAL”的解释参见RFC 2119 [1]。
定义和缩略词:
CPU —— 中央处理单元
IP —— 网络协议
MTU —— 最大传输单元
PSTN —— 公共交换电话网
Samples —— 语音或音频采样点
SDP —— 会话描述协议
3. SILK 编解码器
SILK 语音频编解码器在音频带宽、网络码率和复杂度等方面具有高度的可扩展性。
SILK 支持四种不同的音频带宽:窄带8000 Hz 采样率,中带12000 Hz 采样率,宽带16000 Hz 采样率,超宽带24000 Hz 采样率。窄带模式应该(SHOULD)只用于PSTN 网络的接口或者用在不支持大于8000 Hz 采样率的低端设备上。中带模式应该(SHOULD)用于不支持大于12000 Hz 采样率的更低端设备或者严重的网络带宽限制的条件下(例如无线设备)。宽带模式应该(SHOULD)用于所有不支持大于16000 Hz 采样率的所有网络协议平台。超宽带模式应该(SHOULD)用于所有支持24000 Hz 或者更高采样率的平台。
平均目标网络码率在表1 对应音频带宽下规定的范围内是可变的。平均网络目标码率可以实时定义和修正,而实际码率依赖于输入信号,且随时间而改变。实际码率可能高于或低于表1 规定的自适应目标码率。推荐采用表中码率范围的上限。
表1. fs 代表以赫兹为单位的采样率,BR 代表以千位每秒为单位的自适应目标码率范围
Fs (Hz) |
BR (kbps) |
|
窄带 |
8000 |
5 – 20 |
中带 |
12000 |
7 – 25 |
宽带 |
16000 |
8 – 30 |
超宽带 |
24000 |
20 – 40 |
复杂度可扩展用于实时优化CPU 资源,多用于与网络码率的权衡。
SILK 内部帧长为20 ms。SILK 编码器可以设置为捆绑5 个内部帧为一个输出帧,允许编码语音频数据的帧长为20,40,60,80,100 ms。表2 显示了不同帧长和采样率时一帧语音或者音频包含的采样点数。
表2. 不同帧长和采样率时,一帧包含的采样点数
帧长 |
20 ms |
40 ms |
60 ms |
80 ms |
100 ms |
窄带采样点 |
160 |
320 |
480 |
640 |
800 |
中带采样点 |
240 |
480 |
720 |
960 |
1200 |
宽带采样点 |
320 |
640 |
960 |
1280 |
1600 |
超宽带采样点 |
480 |
960 |
1440 |
1920 |
2400 |
SILK 操作在非常低的算法延迟,包括算法打包延迟(例如20,40,60,80,100 ms)加上5 ms 前瞻延迟。
3.1.自适应采样频率
SILK 编码的语音频信号内部采样率可以随着传输时间而变化,这可能在以下两种情况下发生。
第一种情况是,SILK 提供一种内部逻辑,决定自动将编码的语音频信号内部采样率调整到最有效的采样率,这个最有效采样率取决于输入信号和信道容量信息。这种内部逻辑使得SILK 支持拥塞控制和网络负荷管理。
第二种情况是,SILK 提供手动设置编码的语音频信号最大内部采样率的API 功能。这个最大内部采样率不能(MUST NOT)被设置高于呼叫建立协商时商定的采样率,这是因为SILK 的早期版本不能解码内部采样率高于解码端输出采样率(解码器API 采样率)的信号。
对于以上两种情况,只有被编码成码流的语音频信号的内部采样率被切换时,SILK 编码器输入的语音频信号和解码器输出的语音频信号的采样率才能单独设置而互不影响。
会话建立的时候,解码端应该(SHOULD)将系统可以利用的所有采样率(率参数)发信号给给编码端
3.2.自适应网络码率
SILK 编码器可以设置不同的平均目标码率输出编码的语音频数据。规定的平均目标码率是为积极信号(例如非静音帧)设置的,因此每一帧的实际码率根据数据语音频信号的感知重要性而变化。平均目标码率可以以帧为单位进行调整,这使SILK 支持拥塞控制和网络负荷管理。
为了有效的实现这些,必须提供信道容量和存储设备的相关信息。这些信息可以通过多种渠道获得,但不再本文件讨论范围。
当无法获得信道容量信息时,SILK 可以以固定的平均目标码率运行。这个固定的平均目标码率必须谨慎选择,因为超过信道容量时可能导致额外的延迟和语音帧丢失。除非最宽带宽网络接口技术的信道限制是已知的,否则推荐使用表1 中提供的最大平均目标码率达到最好的语音音质。
3.3.不连续传输(DTX)
如本文件3.2 节所述,SILK 编解码器是码率自适应的。对于特定的输入信号,比如静音周期,码率会被自动削减。在连续传输模式下,当输入信号允许的时候,编码器会削减码率,但是,到接收器的传输不会被中断。因此,接收到的信号在全部传输过程中使码率最小化但保持较高水平的音质。
在SILK 的平均码率需要进一步削减的情况下,SILK 编码器可以设置成不连续传输(DTX),此时部分编码信号,即输入语音频信号的静音周期,不被传送到接收端。
在接收端,没有传送的部分将被SILK 解码器当作丢失帧处理,即产生舒适噪声信号代替没有传送的语音频信号部分。
SILK 的不连续传输模式的语音频音质会比连续模式稍差。因此,推荐(RECOMMENDED)使用SILK 的连续模式,除非网络带宽的限制比较严格。
3.4.前向差错纠正(FEC)
SILK 编解码器允许在SILK 码流中嵌入“带内”前向差错纠正(FEC)数据。这种FEC 方案将前一帧(n-1)或者前两帧(n-2)的冗余信息加到当前帧(n)。对于每一帧,编码器根据以下信息决定是否使用FEC :(1)外部提供的信道丢包率估计值;(2)外部提供的信道容量估计值;(3)语音频信号对丢包的敏感度;(4)接收端解码器是否显示可以利用“带内”FEC 信息。发送“带内”FEC 信息的决定完全受编码器控制,因此不需要关于负载或存储格式的特殊注意事项。
在接收端,当某一帧丢失而未来帧可接收到的时候,解码器可以利用这些附加信息。为了使用FEC 数据,抖动缓冲区需要提供包含SILK 未来帧的负载和相对SIK 上一解码帧偏移量的信息。一个特殊的API 函数可以搜索可用的FEC 数据,如果搜索成功的话,可以作为当前丢失帧提供给解码器。
如果这种FEC 方案没有在接收端实现的话,FEC不应该(SHOULD NOT)被使用,因为它将导致网络带宽的低效使用。解码器支持FEC 的话,应该(SHOULD)在会话建立的时候显示。
SILK : SILK_RTP_PayloadFormat 中文翻译相关推荐
- SILK : SILK_RTP_PayloadFormat 中文翻译(一)
测试版本1.3 J. Spittka H. Astrom K. Vos Skype 2010年8月16日 SILK 语音频编解码器的RTP 负载格式和文件存储格式 关于本备忘录 本文件可能 ...
- Techniques and Applications for Crawling, Ingesting and Analyzing Blockchain Data 中文翻译
Techniques and Applications for Crawling, Ingesting and Analyzing Blockchain Data 中文翻译 摘要 关键词 I 引言 I ...
- YOLOv4全文阅读(全文中文翻译)
YOLOv4全文阅读(全文中文翻译) YOLOv4: Optimal Speed and Accuracy of Object Detection 论文链接: https://arxiv.org/pd ...
- ctypealpha php_php ctype函数中文翻译和示例
PHP Ctype扩展是PHP4.2开始就内建的扩展,注意,Ctype系列函数都只有一个字符串类型参数,它们返回布尔值. $str = "0.1123"; //检查字符串所有字符是 ...
- sound.js # pixi辅助插件 — 中文翻译教程
本篇博客为中文翻译博客,转载请注明出处 sound.js-pixi的交互性插件[版本3.0.11] 安装配置 加载声音文件 初始化加载的声音 播放和控制加载的声音 更改回放速率 添加回声 添加混响 产 ...
- jBPM3.12用户指南中文翻译----第一章 绪论
这是Jboss 的jBPM3.12框架的用户指南的中文翻译.其中第一章的译文,是我在网上找到的.其他几章都是我自己做的翻译.我的翻译是中英文对照,只翻译部分我认为重要的,不翻译简单的英文,以免浪费你我 ...
- magento工具PHP语言,Magento2建立中文翻译语言包
今天要教大家 在 Magento2 系统中建立中文翻译的语言包 我们要在系统上开始建立语言包,首先先确认 /app/i18n/ 文件夹是否存在? 若不存在就请建立此文件夹 接着建立文件夹 /app/i ...
- 【转】关于HTTP中文翻译的讨论
http://www.ituring.com.cn/article/1817 讨论参与者共16位: 图灵谢工 杨博 陈睿杰 贾洪峰 李锟 丁雪丰 郭义 梁涛 吴玺喆 邓聪 胡金埔 臧秀涛 张伸 图钉派 ...
- python的中文翻译-再聊聊Python中文社区的翻译
在写<学习Python,怎能不懂点PEP呢?>的时候,我已经发现国内的Python翻译环境不容乐观.这个结论可能不对,毕竟这几年Python大热,或许有不少优秀的翻译项目,只是我还不知道而 ...
最新文章
- css中的margin和padding
- logsoftmax(dim=1)是对批量样本中的每个样本取概率,而不是针对每个特征
- C# 多线程參数传递
- 中国队刷新知识图谱“世界杯”,但点开冠军团队一看,我愣住了
- javascript权威指南学习笔记
- Linux Kernel5.10的软中断(softirq)的本质
- 分享三个非常适合新手的网站
- 揭秘高德地图如何利用MaxCompute管理海量数据
- 【车联网】车联网产业发展报告(2019)
- LeetCode:66. 加一(python、c++)
- 一个小爱好竟然改变了全世界!Linux30年都经历了什么?
- 蓝桥杯 BASIC-1 基础练习 闰年判断
- 购物车catslider简单的多商品分类滑动
- 数据分析/数据挖掘 入门级选手建议
- spring3: 表达式5.2 SpEL基础
- 加速度传感器工作原理及应用
- 上传图片时出现http 415错误
- HTML5 颜色及透明度
- OCR(图片识别)之 百度 VS 谷歌
- 对象含有与成员函数不兼容的类型限定符