Skype SILK codec overview

2024-03-16 00:58
文章标签 codec overview silk skype

本文主要是介绍Skype SILK codec overview,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近简单看了一下Skype SILK codec 算法, 基本原理和流程大体明白了, 以后有时间再仔细研究一下细节,今天就简单说说. SILK Codec是一个语音和音频编解码算法, 对于音频带宽、网络带宽和算法复杂度都具有很好的弹性。支持4种采样率:8KHz、12KHz、16KHz、24KHz;三种复杂度:低、中、高。编码码率在 6~40kbps(不同采样率具有不同的码率范围)以及还支持VAD、DTX、FEC等模块,感觉还是比较全面。最重要的一点是提供了定点C代码,非常有利于向ARM、DSP移植和优化。

 

顺便附上原理流程图

 

 

看过SILK Codec 代码,总觉得他是iLBC和Speex混合拼出来的,当然没有这么简单,整体采用Source-filter经典模型,即对语音产生系统建模为基础,经过两级滤波,第一级长时预测滤波器(LTP),去除浊音语音中的周期成分,当然对于清音就不需要这一步了;第二步进行短时滤波(LPC),去除近样点之间的冗余信息,这里采用伯格(Burg)算法计算得到LPC系数(一般CELP Codec都采用自相关算法计算LPC),然后采用多级矢量量化的方法(一般CELP Codec都采用分裂式矢量量化方法);经过这两级滤波就可以得到激励信号,一般CELP Codec往往采用固定码书+自适应码书分别量化的方法,它们分别近似激励信号中的近周期成分和类噪声成分(这个模型简直太经典了,所以CELP可以在8Kbps以上保持非常好的音质,在进一步对固定码书的不同量化方法又引出了不同Celp的命名和变体,不能再说了否则就成介绍CELP了),这里SILK也不同于iLBC,但是却很相似也是在子帧中找到能量最大的点,然后进行增益量化和归一化,对归一化后的信号采用距离编码(Range encode),这个距离编码是无损压缩算法,性能和原理类似算术编码,用它主要是出于避开专利的原因。另外,对于VAD、DTX、FEC以及对于噪声的抑制也很不错,变码率的编码方式与Speex比较相似。

这篇关于Skype SILK codec overview的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/813820

相关文章

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1(高级消息队列协议)是一种网络协议,它允许遵从该协议的客户端(Publisher或者Consumer)应用程序与遵从该协议的消息中间件代理(Broker,如RabbitMQ)进行通信。 AMQP 0-9-1模型的核心概念包括消息发布者(producers/publisher)、消息(messages)、交换机(exchanges)、

【python 编码问题】UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not

插入oracle 数据发生 错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 131-136: ordinal not in range(128) 先说解决办法: python2.7版本,在开头加入下面语句 import sysreload(sys)sys.setdefaultencoding

CMake Overview

Reference CMake Tutorial CMakeList.txt 对于每个project,需要在目录里有一个CMakeList.txt文件。 Command 这个文件由一系列的命令组成,每个命令的形式为: command(args...) command是命令的名字,不区分大小写;args是命令的参数,而各个参数以空格分割。——如果参数中包括空格,则用双引号括起来。

android7.0上新特性--(快捷方式) App shortcuts overview

先上官网了解一波 https://developer.android.google.cn/guide/topics/ui/shortcuts?hl=en Shortcuts是什么? Shortcuts是指在桌面长按App图标而出现的快捷方式,可以为你的App的关键功能添加更快速的入口而不用先打开App。 Shortcuts分类及使用场景: 静态快捷方式动态快捷方式固定快捷方式 今天

python2.7 的中文编码处理,解决UnicodeEncodeError: 'ascii' codec can't encode character 问题

python2.7 的中文编码处理 最近业务中需要用 Python 写一些脚本。尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息。 很快,我就遇到了异常: UnicodeEncodeError: 'ascii' codec can't encode characters in p

解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128

1.问题描述:一个在Django框架下使用Python编写的定时更新项目,在Windows系统下测试无误,在Linux系统下测试,报如下错误: ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 2.原因分析:字符问题。在Windows系统转Linux系统时,字符问题很容易出现。 3.解决办

《Python开发 - Python疑难杂症》Pyinstaller打包报错【UnicodeDecodeError: ‘utf-8‘ codec can‘t decode】分析与解决

1报错情景描述 笔者在使用PyQt5写了个程序后,使用Pyinstaller打包,出现以下错误: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 110: invalid continuation byte 2报错分析 从报错代码能够看出,编码问题导致的程序出错,解决办法就是修改编码方式。 3解决

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

问题背景 在python2中安装了labelme,可以正常运行,然后又再python3中安装了labelme。后来python2中的labelme不能运行,python3中的labelme可以运行。 具体问题 UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-3: ordinal not in ra

aiohttp遇到非法字符的处理(UnicodeDecodeError: 'utf-8' codec can't decode bytes in position......)

这个问题困扰了我将近一天时间,如果使用text()函数会一直报“UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 24461-24462: invalid continuation byte”的错误,如果使用read()函数以二进制输出在后面解析的时候中文是乱码,网上查了很多资料,主要也是自己的疏忽自己看了源码,一直纠