语音编解码器

2024-03-15 21:08
文章标签 语音 编解码器

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

为使VoIP能够可靠的进行语音通信,必须保证在一定话音质量的前提下尽可能地降低编码速率,这主要是依赖语音编码技术。在目前VoIP中常用的语音编码算法主要有以下几类:基于波形编码的算法;基于CELP模型的混合编码算法;以及GIPS公司自己提出的4种语音编码算法。

 

2.1.1    采用波形编码的编码器

波形编解码器基本上不考虑信号是如何产生的,而直接将输入的模拟信号抽样编码,然后将量化后的样值传送到终端,在终端原始信号被重组到与原信号大致接近的程度。因此波形编码方式是能够忠实地表现波形的编码方式。由于这类编码器通常将语音信号作为一般的波形信号来处理,所以它具有适应能力强、话音质量好、抗噪抗误码的能力强等特点。它最大的缺点是同其他的编解码器相比,它要使用大量的带宽,当波形编解码器用于低带宽时,话音质量下降得非常快。

脉冲编码调制(PCM)、自适应增量调制(ADM或∆M编码)、自适应差分编码(ADPCM)、自适应预测编码(APC)、自适应子带编码(ASBC)、自适应变换编码(ATC)等都属于波形编码。

2.1.1.1  G.711协议[4]

G.711是在电路交换电话网中普遍使用的一种波形编解码算法。G.711以8kHz作为抽样频率,如果使用统一量化方式,话音中通用的信号层次的每一个样本就要12比特来表示,这就产生了96kb/s的比特速率,如果使用不统一的量化方式,表示一个样本只需要8比特。G.711通常被称为脉冲编码调制(PCM)。G.711提供了良好的语音质量,其MOS值都在4.3左右。

2.1.1.2  G.726协议[4]

G.726协议采用的是ADPCM语音编码算法,提供了64kb/sPCM码流至低速率ADPCM码流的转换。协议给出40kb/s,32kb/s,24kb/s和16kb/s四种比特率。其中,40kb/s信道主要用于在数字电路倍增设备(DCME)上传送数据调制解调器信号,特别用于4.8kb/s以上速率的调制解调器;24kb/s和16kb/s信道主要用作DEME语音传送的过载信道。G.726设计的主要用途仍然是传统的电路交换网,但是其低比特率方案也可用于VoIP。

 

2.1.2    采用CELP模型编码的编码器

由于波形编码速率过高,占用较多的带宽资源,1985年提出了码激励线性预测(CELP)。它在保留参数模型技术精华的基础上,应用波形编码准则优化激励信号,使其与输入语音波形匹配,同时还利用了矢量量化和感知加权技术,从而在较低的数码率上获得了较高的合成语音质量。基于CELP的语音编解码算法已经成为目前主流语音编码算法。较成功的语音编码方案都是基于CELP技术的,如G.723、G.728、G.729等[5]

2.1.2.1  G.723协议

G.723协议是一个双速率语音编码协议,其两种速率分别是5.3kb/s和6.3kb/s,较高比特率的输出基于ML-MLQ技术,提供某种程度上较高质量的音质;较低速率的输出基于CELP为系统设计人员提供了更大的灵活性。G.723.1协议的编解码算法中两种速率的编解码基本原理是一样的,只是激励信号的量化方法有差别。对高速率(6.3kb/s)编码器,其激励信号采用多脉冲最大似然量化(MP-MLQ)法进行量化,对低速率(5.3kb/s)编码器,其激励信号采用代数码激码线性预测(ACELP)法量化。

2.1.2.2  G.728协议

G.728协议采用的编码算法是LD-CELP,即低时延的码激励线性预测的算法。LD-CELP采用后向自适应预测器(Backward Adaptive Predictor)对短时谱和增益进行预测。LD-CELP编码器发送的只是激励矢量在码本中的地址标号,而解码端的滤波器参数和增益参数都是在解码端计算得来的。在大多数编码系统中,这类参数都是在编码端求,然后传输到解码端。

2.1.2.3  G.729协议

G.729协议是一个能在8kb/s速率上实现高质量语音编码的协议,它采用的是CS-ACELP即共轭结构算术码激励线性预测的算法。对输入的模拟语音信号用8KHz采样,16bit线性PCM量化。CS-ACELP以CELP编码模型为基础,它把语音分成帧,每帧10ms,也就是80个采样点。对于每一帧语音,编码器从中分析出CELP模型参数,其中包括线性预测系数,自适应码本和随机码本的索引值和增益,然后把这些参数编码并传送到解码端,在解码端,把收到的比特流恢复成参数编码,解码后得到各个参数,解码器利用这些参数构成激励源和合成滤波器,计算出合成语音,并用后置滤波器进一步增强音质,从而重现原始语音。

G.729A是对G.729语音编码标准的简化,具有比G.729更低的复杂度,在DSP上实现时占用较少的资源。它的编解码算法结构和G.729的编解码算法结构一样,其比特流与G.729的比特流可以相互操作。

2.1.1    GIPS公司提出编码协议

2.1.1.1  iLBC协议[6]

iLBC(internet Low Bit Codec)是GIPS(Global IP Sound)于2000年开发并被IETF标准化的的语音编解码器。iLBC是一种非常适合在IP网络上进行语音通信的编解码,主要为窄带语音通信而设计,但在实际的应用中它已突破了窄带的限制。iLBC有2种基本数据帧格式。一种是20ms的帧格式,语音数据经过编码之后的速率为15.2Kbps;另一种是30ms的帧格式,编码后的语音速率为13.3Kbit/s。由于编码独立于块,iLBC实际减小了由于丢包带来的知觉降低的传播。在高丢包率的IP包交换网络环境下,iLBC可获得非常清晰的语音效果。在窄带应用环境中,iLBC几乎没有语音延迟,断续或杂音,通话效果完全可以和传统电话媲美。由于iLBC算法具有较强的抗丢包率,因此该编解码器可以降低VoIP系统语音质量差的瓶颈,在实时通信系统如电话系统,视频会议,语音流和及时消息中有可观的应用前景。

2.1.1.2  EG.711

EG.711是GIPS公司基于标准G.711编码/解码器的改进型产品,具有极好的抗包丢失强健性。这种改进型编码/解码器,使严重超载的网络也能保持良好音质。

 

2.1.1.3  iPCM-wb

iPCM-wb是优质、低复杂度宽带编码/解码器,对于语音包丢失具有极好的恢复性,使通话质量明显优于PSTN。在端-端IP通信中使用时,iPCM-wb编码/解码器能够确保高端电话应用具有卓越的音质。

 

2.1.1.4  iSAC

iSAC是为在高速率和低速率下传送宽带语音质量的一种自适应的语音编码器,它能自动在低速率传输的情况下,在比特率和语音质量之间寻找最佳平衡。具有超强的抗丢包强健性。

2.1.1    VoIP语音编码器的比较

语音压缩编码研究的基本问题就是在一定的编码速率下,如何用较低的复杂度和较小的时延获得尽量好的重建语音,因此重建语音质量、编码速率、算法复杂度、算法延迟是衡量编解码器性能的四个主要因素。表2-1是上述VoIP常用语音编码器的指标的对比[1][4][5][6] 。

 

纵观集中编解码器,iLBC有很多技术优势,主要表现在:

(1)   占用带宽少

        在20ms帧时,iLBC所占总的带宽为27.73Kbit/s,而G.729A为29.6Kbit/s,G.723.1为19.7Kbit/s,GSM为34.8Kbit/s。

(2)   语音质量高

在20ms帧时,iLBC的MOS(平均主观得分)为3.981,而G.729为3.92,G.723.1为3.9,GSM为3.782。

(3)   支持多帧

支持20ms和30ms帧,对于不同的应用或VoIP设备更为灵活。

(4)       低时延和丢包处理特性

iLBC的主要优势在于对丢包的处理能力。在正常情况下,iLBC会记录下当前数据的相关参数和激励信号,以便在之后的数据丢失情况下进行处理;在当前数据接收正常而之前数据包丢失的情况下,iLBC会对当前解码出的语音和之前模拟生成的语音进行平滑处理,以消除不连贯的感觉;在当前数据包丢失的情况下,iLBC会对之前记录下来的激励信号进行相关处理并与随机信号进行混合,以得到模拟的激励信号,从而得到替代丢失语音的模拟语音。总的来说,和标准的低位速率编解码相比,iLBC使用更多自然,清晰的元素,能够精确模仿出原始语音信号。

 

在实际选择语音压缩标准时,要综合考虑带宽、时延、算法复杂度等几大因素。本课题中选择的编解码器为G.729A,它采用了共轭结构代数码激励线性预测技术,是编码速率和合成语音质量综合效率最优的压缩算法之一,被广泛的用在VoIP中,其在OPNET中有现成的实现模块。

 

表2-1 VoIP语音编码器的指标的对比

编码算法

编码类型

比特率

(kb/s)

MOS

复杂性(MIPSonTIC54)

时延/ms

G.711

PCM

64

4.1

1.05

0.75

G.723.1

ACELP

6.3

3.9

43.7

30

MP-MLQ

6.3

3.8

30

G.726

ADPCM

40/32/24/16

3.85

10.8

1

G.728

LD-CELP

16

3.61

97

3~5

G.729

CSA-CELP

8

3.92

10.88(G.729AB)

10

iLBC(20ms)

参数编码

27.73

3.981

35倍G.711

20

EG.711(10,20,30,40ms)

改进型

PCM

<=G.711

=G.711

4.8

=帧长

iSAC(30~60ms)

 

10~32

=g.722.2

76倍G.711

=帧长+3ms

iPCM-wb(10,20,30,40ms)

 

平均80

>g.722.1

8.6MIPS

=帧长


这篇关于语音编解码器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

基于人工智能的智能家居语音控制系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 随着物联网(IoT)和人工智能技术的发展,智能家居语音控制系统已经成为现代家庭的一部分。通过语音控制设备,用户可以轻松实现对灯光、空调、门锁等家电的控制,提升生活的便捷性和舒适性。本文将介绍如何构建一个基于人工智能的智能家居语音控制系统,包括环境准备

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

【阅读文献】一个使用大语言模型的端到端语音概要

摘要 ssum框架(Speech Summarization)为了 从说话人的语音提出对应的文本二题出。 ssum面临的挑战: 控制长语音的输入捕捉 the intricate cross-mdoel mapping 在长语音输入和短文本之间。 ssum端到端模型框架 使用 Q-Former 作为 语音和文本的中介连接 ,并且使用LLMs去从语音特征正确地产生文本。 采取 multi-st

【语音告警】博灵智能语音报警灯JavaScript循环播报场景实例-语音报警灯|声光报警器|网络信号灯

功能说明 本文将以JavaScript代码为实例,讲解如何通过JavaScript代码调用博灵语音通知终端 A4实现声光语音告警。主要博灵语音通知终端如何实现无线循环播报或者周期播报的功能。 本代码实现HTTP接口的声光语音播报,并指定循环次数、播报内容。由于通知终端采用TTS语音合成技术,所以本次案例中无需预先录制音频。 代码实战 为了通过JavaScript调用博灵语音通知终端,实现HT

讯飞XFS5152 语音模块在RK3288 上的应用

公司产品使用XFS5152语音模块作为语音提示应用在RK3288 平台上,这里记录一下驱动调试过程。 XFS5152 支持 UART、I2C 、SPI 三种通讯方式,将收到的中文、英文文本进行语音合成。 产品中RK3288 使用I2C连接该模块,但存在一个问题该模块只支持低速率的I2C,速度最大只能到15KHz, 但RK3288 支持的标准I2C速率为100KHz,实际测试发现虽然可以设置到

java把文字转MP3语音案例

一 工具下载: https://download.csdn.net/download/jinhuding/89723540 二代码 <dependency><groupId>com.hynnet</groupId><artifactId>jacob</artifactId><version>1.18</version></dependency> import com.jacob.acti

Windows 一键定时自动化任务神器 zTasker,支持语音报时+多项定时计划执行

简介 zTasker(详情请戳 官网)是一款完全免费支持定时、热键或条件触发的方式执行多种自动化任务的小工具,支持win7-11。其支持超过100种任务类型,50+种定时/条件执行方法,而且任务列表可以随意编辑、排列、移动、更改类型,支持任务执行日志,可覆盖win自带的热键,同时支持任务列表等数据的备份及自动更新等。 简言之,比微软系统自带的任务计划要强好几倍,至少灵活性高多了,能大幅提高电脑使