请选择 进入手机版 | 继续访问电脑版

默认
打赏 发表评论 8
即时通讯音视频开发(六):如何开始音频编解码技术的学习

前言


即时通讯应用中的实时音视频技术,几乎是IM开发中的最后一道高墙。原因在于:实时音视频技术 = 音视频处理技术 + 网络传输技术 的横向技术应用集合体,而公共互联网不是为了实时通信设计的。有关实时音视频开发时的技术难题请参见《音视频云声网Agora:从demo到实用,中间还差1万个WebRTC》:http://www.52im.net/article-119-1.html

本文是一篇讲述新手如何学习音频编解码知识的文章。

系列文章


本文是系列文章中的第6篇,本系列文章的大纲如下:


说说音频编解码技术学习方法


总是有人问我研究音频编解码要看什么书,其实这是一个很难回答的问题,原因有很多:

  • 做工程首先一个问题就是和课本学习不同,不是看书能解决的。
  • 音频编解码技术在国内研究的人很少,包括总体的音频技术国外也研究不多。(从中国的潜艇噪声技术一直解决不好就能看出一二)。
  • 音频编解码技术是一种应用,而一般的书籍都是讲理论基础。

只看理论书籍会和应用脱离太多,没有实践会忘记。我当初看书也是从工程入手,就是在实际工作中和个人兴趣中看了大量的标准,然后对不懂的地方找论文,再找书籍补知识,这是典型的逆向学习。通常研究生是“课本->看论文->做工程”这样一个学习方法和流程。

我们可以按照什么样的思路去找书籍或论文呢?


音频编解码技术是一种比较复杂的应用,而普通的书籍是一种理论书籍,尤其是在中国。音频编解码技术和一般的音频技术不同,比如AEC,HRTF,后者分别是语音和音频的应用技术,应该说是一种具体的应用技术,相对来说查资料还是容易有的放矢。

具体来说,其实音频编解码技术也是一种具体的应用技术,但是可能系统相对复杂,目的相对基础。它是信源编解码技术的一个分支,目的就是压缩数据。

那么音频编解码技术包括哪些方面呢?既然他是一种信源编解码器技术(Source Coding Technology)那么信源编解码技术的书籍都可以看,当做是理论基础学习。

另外其实我把音频编解码技术分为5大技术,简称为:EQTPM。E-熵编码、Q-量化编码、T-变换编码、P-预测编码、M-音频建模(感知建模,BCC建模,正弦建模等)。相对的,学习时我们可以按照这些技术进行相关书籍的查阅和学习。

具体的书籍可以分成以下4类


1语音编解码书籍


因为国内讲宽带音频编解码的书籍很少,所以可以看些语音编解码的书籍,里面也有讲EQTP技术。例如:《语音处理技术》,《语音编码》,《低码率音频编码》,《数字语音编码原理》,《变速率语音编码》《低速率语音编码》《数字语音编码》《数据压缩》。

1.jpg

《JPEG2000 图像压缩基础》:我认为这本书讲的还是不错的,翻译的也不错,很多基本原理讲的比较透彻。

2理论基础书籍


《信息论与编码》,《信号与系统》,高数这类我就不但列出来了,但是也要常番。

3国外的宽音频编码书籍


例如我认为很经典的ANDREAS SPANIAS的《Audio Signal Processing and Coding 》。以及他的63页的论文,《Perceptual Coding of Digital Audio》。

其他可看的书籍包括:
  • MP3之父——K. Brandenburg的:
    《Applications of Digital Signal Processing to Audio and Acoustics》
    《A Digital Signal Processing Primer, with Applications to Digital Audio and Computer Music》
    《Auditory Perception and the MPEG Audio Standard》
    《Foundation and Evolution of Standardized Coders (Wiley,2003)(ISBN 0471373125)(578s)》
  • 汉堡联邦国防军大学Udo Zolzer教授的:
    《Digital Audio Signal Processing》
    《High-Fidelity Multichannel Audio Coding》
    《Speech Coding Algorithms》


我强烈推荐把SPANIAS的书读一下。至少把SPANIAS的那个论文仔细看一下。这样会对你理解音频编码有很大的帮助。但是里面会将很多关于耳朵的生理词语,要拿着字典慢慢翻。这个论文我是烦烂了的,使我受益匪浅。

后面的书籍我还没有系统看过,但都有PDF版本,我也是偶尔翻一下。因为这些经典书籍你不花大时间理解,会造成假象是乍看起来都讲得类似,但实际理解起来发现是对不同细节的阐述。

4其他类书籍


专项技术书籍:
  • 如《自适应信号处理》,因为音频编码也好其他音频技术也好,自适应技术是经常使用的。
    例如:无损编码的Wavpack,MPEG4 ALS,都使用了自适应技术。
  • 滤波器设计的相关书籍。
  • 《多抽样率数字信号处理理论及其应用》:讲解Transform技术。
  • HE-AAC和ATRAC3,使用的QMF,
  • MP3 使用的PQF
  • AAC,MP3使用的MDCT
  • AC3使用的TDAC(MDCT)
  • WMA和G722.1的(MLT)

都是为什么,选择这些变换工具。有什么区别。如果你能看看Vaidyananthan PP的书,会更有帮助。

一些开创性的研究论文也可以读一读


除了这些书籍,建议大家多看看论文,很多国外的大学都有专门的论文和PPT教学。

1会议论文


有的讲的很有点概况,有的有些对原理公式还是讲的比较清楚,还有一些强调系统性和介绍的。例如:伦敦学院的《A Survey of Packet Loss Recovery Techniques for Streaming Audio》 对PLC技术做了系统归纳L Daudet的《A review on techniques for the extraction of transients in musical signals》对瞬态信号提取技术做了归纳。

2毕业论文


这里我举2个例子,文章太多我就截屏解释吧。

2.png
3.png

3经典PPT


很多大学和机构开放课程会有一些经典PPT。例如:德国Fraunhofer的主页就有很多奖MPEG系列音频编码技术的PPT。非常好,非常推荐。

结语


当然除了书籍、论文以外,我们还可以看一些常用的网址,我就给一个好了,超经典的斯坦福大学 Julius Orion Smith III 教授的主页:https://ccrma.stanford.edu/~jos/,见下图哦。

QQ20160421-0.png

不说了,自己看吧,引用里面的介绍–(1GB of on-line publications, sound examples, and software )。总之,馒头要一口一口吃,耐心些,开始吧!

附录1:更多实时音视频技术文章


[1] 开源实时音视频技术WebRTC的文章:
开源实时音视频技术WebRTC的现状
简述开源实时音视频技术WebRTC的优缺点
访谈WebRTC标准之父:WebRTC的过去、现在和未来
良心分享:WebRTC 零基础开发者教程(中文)[附件下载]
WebRTC实时音视频技术的整体架构介绍
新手入门:到底什么是WebRTC服务器,以及它是如何联接通话的?
WebRTC实时音视频技术基础:基本架构和协议栈
浅谈开发实时视频直播平台的技术要点
[观点] WebRTC应该选择H.264视频编码的四大理由
基于开源WebRTC开发实时音视频靠谱吗?第3方SDK有哪些?
开源实时音视频技术WebRTC中RTP/RTCP数据传输协议的应用
简述实时音视频聊天中端到端加密(E2EE)的工作原理
实时通信RTC技术栈之:视频编解码
开源实时音视频技术WebRTC在Windows下的简明编译教程
网页端实时音视频技术WebRTC:看起来很美,但离生产应用还有多少坑要填?
>> 更多同类文章 ……

[2] 实时音视频开发的其它精华资料:
专访微信视频技术负责人:微信实时视频聊天技术的演进
实时语音聊天中的音频处理与编码压缩技术简述
网易视频云技术分享:音频处理与压缩技术快速入门
学习RFC3550:RTP/RTCP实时传输协议基础知识
基于RTMP数据传输协议的实时流媒体技术研究(论文全文)
声网架构师谈实时音视频云的实现难点(视频采访)
浅谈开发实时视频直播平台的技术要点
还在靠“喂喂喂”测试实时语音通话质量?本文教你科学的评测方法!
实现延迟低于500毫秒的1080P实时音视频直播的实践分享
移动端实时视频直播技术实践:如何做到实时秒开、流畅不卡
如何用最简单的方法测试你的实时音视频方案
技术揭秘:支持百万级粉丝互动的Facebook实时视频直播
简述实时音视频聊天中端到端加密(E2EE)的工作原理
移动端实时音视频直播技术详解(一):开篇
移动端实时音视频直播技术详解(二):采集
移动端实时音视频直播技术详解(三):处理
移动端实时音视频直播技术详解(四):编码和封装
移动端实时音视频直播技术详解(五):推流和传输
移动端实时音视频直播技术详解(六):延迟优化
理论联系实际:实现一个简单地基于HTML5的实时视频直播
IM实时音视频聊天时的回声消除技术详解
浅谈实时音视频直播中直接影响用户体验的几项关键技术指标
如何优化传输机制来实现实时音视频的超低延迟?
首次披露:快手是如何做到百万观众同场看直播仍能秒开且不卡顿的?
Android直播入门实践:动手搭建一套简单的直播系统
网易云信实时视频直播在TCP数据传输层的一些优化思路
实时音视频聊天技术分享:面向不可靠网络的抗丢包编解码器
>> 更多同类文章 ……

附录2:全站即时通讯技术资料分类


[1] 网络编程基础资料:
TCP/IP详解 - 第11章·UDP:用户数据报协议
TCP/IP详解 - 第17章·TCP:传输控制协议
TCP/IP详解 - 第18章·TCP连接的建立与终止
TCP/IP详解 - 第21章·TCP的超时与重传
理论经典:TCP协议的3次握手与4次挥手过程详解
理论联系实际:Wireshark抓包分析TCP 3次握手、4次挥手过程
计算机网络通讯协议关系图(中文珍藏版)
NAT详解:基本原理、穿越技术(P2P打洞)、端口老化等
UDP中一个包的大小最大能多大?
Java新一代网络编程模型AIO原理及Linux系统AIO介绍
NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战
NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
>> 更多同类文章 ……

[2] 有关IM/推送的通信格式、协议的选择:
为什么QQ用的是UDP协议而不是TCP协议?
移动端即时通讯协议选择:UDP还是TCP?
如何选择即时通讯应用的数据传输格式
强列建议将Protobuf作为你的即时通讯应用数据传输格式
移动端IM开发需要面对的技术问题(含通信协议选择)
简述移动端IM开发的那些坑:架构设计、通信协议和客户端
理论联系实际:一套典型的IM通信协议设计详解
58到家实时消息系统的协议设计等技术实践分享
>> 更多同类文章 ……

[3] 有关IM/推送的心跳保活处理:
Android进程保活详解:一篇文章解决你的所有疑问
Android端消息推送总结:实现原理、心跳保活、遇到的问题等
为何基于TCP协议的移动端IM仍然需要心跳保活机制?
微信团队原创分享:Android版微信后台保活实战分享(进程保活篇)
微信团队原创分享:Android版微信后台保活实战分享(网络保活篇)
移动端IM实践:实现Android版微信的智能心跳机制
移动端IM实践:WhatsApp、Line、微信的心跳策略分析
>> 更多同类文章 ……

[4] 有关WEB端即时通讯开发:
新手入门贴:史上最全Web端即时通讯技术原理详解
Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
SSE技术详解:一种全新的HTML5服务器推送事件技术
Comet技术详解:基于HTTP长连接的Web端实时通信技术
WebSocket详解(一):初步认识WebSocket技术
socket.io实现消息推送的一点实践及思路
>> 更多同类文章 ……

[5] 有关IM架构设计:
浅谈IM系统的架构设计
简述移动端IM开发的那些坑:架构设计、通信协议和客户端
一套原创分布式即时通讯(IM)系统理论架构方案
从零到卓越:京东客服即时通讯系统的技术架构演进历程
蘑菇街即时通讯/IM服务器开发之架构选择
腾讯QQ1.4亿在线用户的技术挑战和架构演进之路PPT
微信技术总监谈架构:微信之道——大道至简(演讲全文)
如何解读《微信技术总监谈架构:微信之道——大道至简》
快速裂变:见证微信强大后台架构从0到1的演进历程(一)
17年的实践:腾讯海量产品的技术方法论
>> 更多同类文章 ……

[6] 有关IM安全的文章:
即时通讯安全篇(一):正确地理解和使用Android端加密算法
即时通讯安全篇(二):探讨组合加密算法在IM中的应用
即时通讯安全篇(三):常用加解密算法与通讯安全讲解
即时通讯安全篇(四):实例分析Android中密钥硬编码的风险
传输层安全协议SSL/TLS的Java平台实现简介和Demo演示
理论联系实际:一套典型的IM通信协议设计详解(含安全层设计)
微信新一代通信安全解决方案:基于TLS1.3的MMTLS详解
来自阿里OpenIM:打造安全可靠即时通讯服务的技术实践分享
>> 更多同类文章 ……

[7] 有关实时音视频开发:
简述开源实时音视频技术WebRTC的优缺点
良心分享:WebRTC 零基础开发者教程(中文)
>> 更多同类文章 ……

[8] IM开发综合文章:
移动端IM开发需要面对的技术问题
开发IM是自己设计协议用字节流好还是字符流好?
请问有人知道语音留言聊天的主流实现方式吗?
IM系统中如何保证消息的可靠投递(即QoS机制)
谈谈移动端 IM 开发中登录请求的优化
完全自已开发的IM该如何设计“失败重试”机制?
微信对网络影响的技术试验及分析(论文全文)
即时通讯系统的原理、技术和应用(技术论文)
开源IM工程“蘑菇街TeamTalk”的现状:一场有始无终的开源秀
>> 更多同类文章 ……

[9] 开源移动端IM技术框架资料:
开源移动端IM技术框架MobileIMSDK:快速入门
开源移动端IM技术框架MobileIMSDK:常见问题解答
开源移动端IM技术框架MobileIMSDK:压力测试报告
开源移动端IM技术框架MobileIMSDK:Android版Demo使用帮助
开源移动端IM技术框架MobileIMSDK:Java版Demo使用帮助
开源移动端IM技术框架MobileIMSDK:iOS版Demo使用帮助
开源移动端IM技术框架MobileIMSDK:Android客户端开发指南
开源移动端IM技术框架MobileIMSDK:Java客户端开发指南
开源移动端IM技术框架MobileIMSDK:iOS客户端开发指南
开源移动端IM技术框架MobileIMSDK:Server端开发指南
>> 更多同类文章 ……

[10] 有关推送技术的文章:
iOS的推送服务APNs详解:设计思路、技术原理及缺陷等
Android端消息推送总结:实现原理、心跳保活、遇到的问题等
扫盲贴:认识MQTT通信协议
一个基于MQTT通信协议的完整Android推送Demo
求教android消息推送:GCM、XMPP、MQTT三种方案的优劣
移动端实时消息推送技术浅析
扫盲贴:浅谈iOS和Android后台实时消息推送的原理和区别
绝对干货:基于Netty实现海量接入的推送服务技术要点
移动端IM实践:谷歌消息推送服务(GCM)研究(来自微信)
为何微信、QQ这样的IM工具不使用GCM服务推送消息?
>> 更多同类文章 ……

[11] 更多即时通讯技术好文分类:
http://www.52im.net/forum.php?mod=collection&op=all

(原文链接:http://webrtc.org.cn/how-to-learn-audio-codec/

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

本帖已收录至以下技术专辑

推荐方案
评论 8
不得不说,要想真正理解音视频技术,并没有那么容易,好在针对即时通讯里的实时音视频,多数时候开发者只需要具备相关理论知识和概念即可,因为已经存在众多的成熟技术,能熟练使用就已经解决大部分问题了。
签名: 《新浪微博技术分享:微博实时直播答题的百万高并发架构实践》http://www.52im.net/thread-2022-1-1.html
好好研究下.
一堆废话,通篇各种讲音视频难,其实目的就是让人用你的框架。
但其实真正做应用,都是用前人已有的编解码技术来搞,有必要像你说的这么复杂?大多数人都是想要先做起来就行。又不是做算法研究。
你要推自己的框架没问题,发些什么乱七八糟的底层音视频解码,有人需要么?难道搞编解码技术的人,要来这里科普?人家来这里都是为了看下具体用了什么技术架构
引用:lovelylich 发表于 2017-08-22 14:01
一堆废话,通篇各种讲音视频难,其实目的就是让人用你的框架。
但其实真正做应用,都是用前人已有的编解码 ...

你说的很有道理,但整理这篇文章的目的也只是就事论事为不懂的普及一下知识而已。。。
签名: 《新浪微博技术分享:微博实时直播答题的百万高并发架构实践》http://www.52im.net/thread-2022-1-1.html
引用:JackJiang 发表于 2017-08-22 14:55
你说的很有道理,但整理这篇文章的目的也只是就事论事为不懂的普及一下知识而已。。。

谢谢你的以德报怨!
这方面我要向你学习
引用:lovelylich 发表于 2017-08-22 20:10
谢谢你的以德报怨!
这方面我要向你学习

没事,君子和而不同嘛
签名: 《新浪微博技术分享:微博实时直播答题的百万高并发架构实践》http://www.52im.net/thread-2022-1-1.html
谢谢分享
签名: 心情好
感谢分享
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部