音视频基础概念(5)——音频基础说明

现实生活中,音频(Audio)主要用在两大场景中,包括语音(Voice)和音乐(Music)。语音主要用于沟通,如打电话等。目前由于语音识别技术的发展,人机语音交互也是语音的一个应用方向,很多大厂推出智能音箱、语音助手等。音乐主要用于欣赏和陶冶情操,如播放音乐。

音频的基础概念主要包括采样、采样率、声道、音频编解码、码率等。常用的音频格式主要包括WAV、AAC、AMR、MP3、AC-3等。音频开发的主要应用包括音频播放器、录音机、语音电话、音视频监控应用、音视频直播应用、音频编辑/处理软件、蓝牙耳机/音箱等。

1 音频基础概念

音频是一个专业术语,音频一词通常用作一般性描述音频范围内和声音有关的设备及其作用。人类所能听到的所有声音都可以成为音频,包括噪声等。声音被录制下来后,风声、雨声、读书声,歌声、乐器声都可以通过数字音乐软件处理,把它们制作成CD,这时候音频是指存储在计算机中的声音。与音频相关的概念包括数字音频、音频采集、音频处理、音频应用场景、常见的音频格式、混音技术等。

1.1 声音和音频

声音和音频是两个不同的概念,声音有三要素。

1.1.1 声音的三要素

声音的三要素是频率、振幅、波形。

频率是指声波的频率,即声音的音调,人类听觉的频率(音调)范围为[20Hz,20kHz]。

振幅是指声波的响度,通俗地讲就是声音的高低,可以理解为音量.

波形是指声音的音色,在同样的频率和振幅下,钢琴和二胡的声音听起来完全不同,因为其音色不同。波形决定了其所代表声音的音色,音色不同是因为它们的介质所产生的波形不同。

综上,声音的本质就是音调、音量和音色。音调指频率,音量指振幅,音色和材质有关。

其中声音响度和强度是两个不同的概念,声音的主观属性响度表示的是一个声音听起来有多响的程度。响度主要随声音的强度而变化,但也受频率的影响。

1.1.2 音频的基础概念

音频相关概念包括比特率、采样、采样率、奈奎斯特采样定律等。

比特率表示经过编码(压缩)后的音频数据每秒需要用多少比特来表示,常用kb/s表示。

采样是把连续的模拟信号,变成离散的数字型号。

采样率是指每秒采集多少个样本。

奈奎斯特(Nyquist)采样定律规定当采样率大于或等于连续信号最高频率分量的2倍时,采样信号可以用来完美重构原始连续信号。

1.2 数字音频

数字音频是一种利用数字化手段对声音进行录制、存放、编辑、压缩或播放的技术,它是随着数字信号处理技术、计算机技术、多媒体技术的发展而形成的一种全新的声音处理手段。数字音频的主要应用领域是音乐后期制作和录音。

计算机数据的存储是以0、1的形式存储的,所以数字音频就是首先将音频文件进行转换,接着将这些电平信号转换成二进制数据保存,播放的时候把这些数据转化为模拟的电平信号再送到扬声器播出,数字声音和一般磁带、广播、电视中的声音就存储及播放方式而言有着本质的区别。相比而言,它具有存储方便、存储成本低、存储和传输的过程中没有声音的失真、编辑和处理非常方便等特点。

数字音频所设计的基础概念非常多,包括采样、量化、编码、采样率、采样数、声道数、音频帧、比特率、PCM等。

从模拟信号——>采样——>量化——>编码——>数字信号等步骤。

1.2.1 采样

采样是指再时间轴上对信号进行数字化。根据奈奎斯特定律,当按照比声音最高频率的2呗以上进行采样时,采样信号可以用来完美重构原始连续信号。如人类听觉频率范围[20Hz,20kHz],所以采样频率至少要大于40kHz。采样频率一般为44.1kHz,即1S采样44100次,这样可以保证声音达到20kHz也能被数字化。

采样率,简单来说就是每秒获取声音样本的次数。声音是一种能量波,其具有音频频率和振幅的特征。采样过程就是抽取某点的频率值。如果在1S内抽取的点越多,获取的信息也就越多,采样率越高,声音的质量就越好。但并不是说采样率越高就越好,因为人耳的听觉范围为[20Hz,20kHz]。

采样数跟采样率、采样时间、采样位数和声道数有关系,即采样数等于采样率、采样时间、采样位数和声道数的乘积。如采样率为44100Hz,采样率时间为1S,采样位数为16b,声道数为2,那么采样数等于44100 *1 *16*2=1411200。

1.2.2 量化

每个采样又该如何表示呢?这就涉及量化了。量化是指在幅度轴上对信号进行数字化。如果用16比特的二进制信号来表示一个采样,则一个采样所表示的范围为[-32768,32767]。

采样位数也叫采样大小、量化位数、量化深度、采样位深、采样位宽。采样位数表示每个采样点用多少比特表示,音频的量化深度一般为8b、16b、32b等。当量化深度为8b时,每个采样点可以表示256个不同的量化值;当量化深度为16b时,每个采样点可以表示65536个不同的量化值。量化深度的大小会影响声音的质量,位数越多,量化后的波形越接近原始波形,声音的质量越高,而需要的存储空间也越大;位数越少,声音的质量越低,需要的存储空间越小。如常见的CD音质采用的是16b的量化深度。采样精度用来指定采样数据的格式和每次采样的大小。例如数据格式为PCM,每次采样位数为16b。

1.2.3 编码

每个量化都是一个采样,将这么多采样进行存储就叫作编码。编码就是按照一定的格式记录采样和量化后的数字数据,例如顺序存储或者压缩存储等。通常所讲的音频裸数据格式就是脉冲编码调制(PCM)数据。描述一段PCM数据通常需要几个概念,包括量化格式(通常为16b)、采样率、声道数等。对于声音格式,还有一个概念用来描述它的大小,即比特率,即1S内比特数目,用来衡量音频数据单位时间内的容量大小。

其中PCM(Pulse Code Modulation),它是指在原始收录声音时,数据会保存到一串缓冲区(Buffer)中,这串缓冲区采用了PCM格式存储。通常把音频采样过程也叫做脉冲编码调制编码,即PCM编码,采样值也叫PCM值。PCM编码过程就是从模拟信号到数字信号的转化过程,包括抽样、量化和编码三个阶段。如在Windows系统中,通过WaveIn或者CoreAudio采集声音,得到的原始数据就是一串PCM格式的Buffer。

1.2.4 其他概念

从模拟信号到数字信号的转换过程包括采样、量化、编码这3个阶段,除此之外,数字音频还涉及几个基础概念。

通道数,即声音的通道数目,有单声道、双声道和立体声道等区别。记录声音时,如果每次只生成一个声波数据,成为单声道;每次生成两个声波数据,成为双声道(立体声)。

立体声存储大小是单声道文件的两倍。单声道的声音通常使用一个扬声器发声,但也可以处理成两个扬声器输出同一个声道的声音,但通过两个扬声器回放单声道信息的时候,可以明显感觉到声音是从两个音箱中间传递到耳朵的,无法判断声源的具体位置。双声道就是有两个声音通道,其原理是人们听到的声音时可以根据左耳和右耳对声音的相位差来判断声源的具体位置。声音在录制的过程中被分配到两个独立的声道中,从而达成了很好的声音定位效果。

音频跟视频不太一样,视频的每一帧就是一幅图像,但音频是流式的,本身没有一帧的概念。对于音频来讲,确实没有办法明确定义出一帧。如PCM流,采样率为44100Hz,采样位数为16b,通道数为2,那么1S音频数据的大小是固定的,共44100*16b*2/8=176400B。通常,可以规定一帧音频的概念,例如规定每20ms的音频是一帧。

比特率(码率),是指音频每秒传送的比特数,单位为b/s。比特率越大表示单位时间内采样的数据越多,传输的数据量就越大。如PCM流,采样率为44100Hz,采样大小为16b,声道数为2,那么比特率为44100*16*2=1411200b/s。

一个音频文件的总大小,可以根据采样数、采样位数、声道数、采样时间来计算,即文件大小=采样率*采样时间*采样位数*声道数/8。

1.3 音频收集

音频技术用于实现计算机对声音的处理。声音是一种由物体振动而产生的波,当物体振动时,会发出声波。音频数据的主要格式包括WAVE、MP3、AAC、AC-3、Real Audio、CD Audio等。音频数据的采集,常见方法有三种,分别是直接获取已有音频、利用音频处理软件捕获并截取声音、用话筒录制声音。

1.3.1 直接获取已有音频数据

直接获取已有音频数据的常用方法包括从网上下载、从多媒体光盘中查找。

1.3.2 利用音频处理软件捕获截取

利用音频处理软件捕获、截取CD光盘音频数据,通常成为CD抓轨(抓音轨的意思)。抓轨时多媒体术语,是抓取CD音轨并转换成MP3、WAV等音频格式的过程。

另外还可以剥离出音频文件中的声音,可以用很多方便的软件来操作(如FFmpeg),能方便直接地转换音频格式,可以实现大多数视频、音频及图像不同格式之间地相互转换,还可以实现增添数字水印等功能。

1.3.3 利用话筒录制

利用话筒录制需要先把话筒接到计算机上,然后利用录音软件直接录制声音。

1.4 音频处理

音频处理技术包括音频采集、语音编解码、文字与声音地转换、音乐合成、语音识别与理解、音频数据传输、音视频同步、音频效果与编辑等。通常实现计算机语音输出有两种方式,即录音与重放、文字声音转换。

1.4.1 噪声抑制

噪声抑制(Noise Supperession)是很常见地应用,如手机等设备采集原始声音会包含背景噪声,影响听众主观体验,还会降低音频压缩效率,就需要进行噪声抑制处理。谷歌著名地开源框架WebRTC,对其中的噪声抑制算法进行严谨测试,发现该算法可以对白噪声和有色噪声进行良好抑制,满足视频或者语音通话的要求。其他开源项目如Speex包含的噪声抑制算法,也有较好的效果,该算法适用范围较WebRTC的噪声抑制算法更为广泛,可以在任意采样率下使用。

1.4.2 回声消除

回声消除技术是数字信号处理的典型应用之一。在视频或者音频通话过程中,本地的声音传送到对端播放后,声音会被对端话筒/麦克风采集,混合着对端人声一起传输到本地播放,这样本端播放的声音包含了本端原本采集的声音,造成主观感觉听到了自己的回声。回声非常影响用户体验,回声消除(Acoustic Echo Canceller)的原理和算法非常复杂。以WebRTC为例,其中的回声抑制模块建议移动设备采用运算量较小的AECM算法。

回声消除的基本原理以扬声器信号与由它产生的多路径回声的相关性为基础,建立远端信号的语音模型,利用它对回声进行估计,并不断修改滤波器的系数,使估计值更加逼近真实的回声,然后将回声估计值从话筒的输入信号中减去,从而达到消除回声的目的。

回声消除在即时通信应用中,需要双方/多方进行,在要求较高的场合,通常采用外置音箱放音,必然会有回音。这种情感况下不对回音进行处理,将会影响通话质量和用户体验,更严重的情况还会形成震荡,产生啸叫。

传统的回声消除都采用硬件方式,在硬件电路上继承DSP处理芯片,如常用的固定电话、手机等都有专门的回音消除处理电路,而采用软件方式实现回声消除一直存在技术难点,包括QQ语音通话使用的使国外的GIPS技术。因此,回声消除已经成为即时通信中提供全双工语音的标准方法。升学回声消除使通过消除或移除本地话筒中拾取的远端音频信号来阻止远端的声音返回去的一种处理方法。这种音频的一处都是通过数字信号处理来完成的。

1.4.3 自动增益控制

手机等设备采集的音频数据往往响度时高时低,从而造成声音忽大忽小,影响听众的主观感受。自动增益控制(Auto Gain Control)算法根据预先配置的参数对声音进行正向/负向调节,使输出的声音大小适合人耳的主观感受。

1.4.4 静音检测

静音检测(Voice Activity Detection)的基本原理使计算机音频的功率谱密度,如果功率谱密度小于阈值则认为使静音,否则认为使声音。静音检测广泛应用于音频编码、AGC、AECM等。

1.4.5 舒适噪声产生

舒适噪声产生(Confortable Noise Generation)的基本原理是根据噪声的功率谱密度,人为生成噪声,广泛适用于音频编解码器。在编码端计算静音时的白噪声功率谱密度,将静音时段和功率谱密度信息编码。在解码端,根据时间信息和功率谱密度信息,重建随机白噪声。如完全静音时,为了创造舒适的通话体验,在音频后处理阶段添加随机白噪声。

1.5 音频使用场景及应用

当下,音频主要用在两大场景中,包括语音和音乐。语音主要用于沟通,如打电话、微信语音、人机语音交互(正处于封口,大厂推出的智能音箱)等。音乐主要用于欣赏,如音乐播放。

音频开发的主要应用包括音频播放器、录音机、语音电话、音视频监控应用、音视频直播应用、蓝牙耳机、音箱、音频编码与处理软件,如KTV音效和铃声转换等。

音频开发的具体内容包括音频采集与播放、音频算法处理、音频的编解码和格式转换、音频传输协议的开发等。音频算法处理主要包括去噪、VAD检测、回声消除、音效处理、增强、混音与分离等。

1.6 音频格式

音频格式是指要在计算机内播放或处理的音频文件的格式,是对声音文件进行数、模转换的过程。

目前音乐文件播放格式分为 无损压缩和有损压缩。不同格式的音乐文件,在音质上表现会有很大的差异。有损压缩就是降低音频采样频率与比特率,输出的音频文件会比原文件小。另一种音频压缩被称为无损压缩,能够将100%保存源文件的所有数据的前提下,将音频文件的体积压缩得更小,而将压缩后的音频文件还原后,能够实现与源文件相同大小、相同的码率。

1.6.1 WAV

WAV是微软公司开发的一种声音文件格式,也叫做波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持,但压缩率比较低。WAV编码是在PCM数据格式的前面加上44B的头部,分别用来描述PCM的采样率、声道数、数据格式等新消息。WAV编码的特点是音质非常好、大量软件支持。一般应用于多媒体开发的中间文件、保存音乐和音效素材等。

1.6.2 MIDI

乐器数字接口(Musical Instrument Digital Interface,MIDI)是数字音乐与电子合成乐的统一国际标准。它定义了计算机音乐程序、数字合成器及其他电子设备交换音乐信号的方式,规定了不同厂家的电子乐器与计算机连接的电缆、硬件及设备间数据传输的协议,可以模拟多种乐器的声音。MIDI文件就是MIDI格式的文件,在MIDI文件中存储的是一些指令。将这些指令发送给声卡,声卡会在按照指令将声音合成出来。

1.6.3 MP3

MP3全称是MPEG-1 Audio Layer 3,它在1992年合并至MPEG规范中。MP3能够以高音质、低采样率对数字音频文件进行压缩,应用最普遍。MP3具有不错的压缩比,使用LAME编码的中高码率的MP3文件,在听感上非常接近源WAV文件。特点是音质在128kb/s以上表现还不错,压缩比较高,兼容性好。适用于高比特率下对兼容性有要求的音乐欣赏方面。

1.6.4 MP3Pro

MP3Pro是瑞典Coding科技公司研发的,包含两大技术:一是来自Coding科技公司所特有的解码技术;二是由MP3的专利持有者法国汤姆森多媒体公司和德国Fraunhofer集成电路协会共同研究的一项译码技术。MP3Pro可在基本不改变文件大小的情况下改善原先的MP3音乐音质,能够在用较低的比特率压缩音频文件的情况下,最大程度地保持压缩前地音质。

1.6.5 WMA

WMA(Windows Media Audio)是微软公司在互联网音频、视频领域地力作。WMA格式以减少数据流量但保持音质地方法来达到更好地压缩目的,其压缩率一般可以达到1:18。WMA还可以通过DRM(Digital Rights Management)保护版权。

1.6.6 RealAudio

RealAudio是由Real Networks公司推出地一种文件格式,其最大的特点就是可以实时传输音频信息,尤其是网速较慢的情况下,仍然可以较为流畅地传送数据,因此RealAudio主要用于网络上的在线播放。现在的RealAudio文件格式主要有RA(RealAudio)、RM(RealMedia)、RMX(RealAudio Secured)这3种,这些文件的共同性在于随着网络带宽的不同而改变声音的质量,在保证大多数人听到流畅声音的前提下,令带宽较为宽敞的听众获得较好的音质。

1.6.7 Audible

Audible拥有4种不同的格式,包括Audible1、2、3、4。每种格式主要考虑音频源及所使用的收听装备。格式1、2和3采用不同级别的语音压缩,而格式4采用更低的采样率和与MP3相同的解码方式,所得到的语音吐词更清楚,而且可以更有效地从网上下载。Audible所采用地是自己的桌面播放工具,这就是Audible Manager,使用这种播放器就可以播放存放在PC或者传输到便捷式播放器上的Audible格式文件了。

1.6.8 AAC

高级音频编码(Advanced Audio Coding,AAC)是由Fraunhofer IIS-A、杜比和AT&T共同开发的一种音频格式,它是MPEG-2规范的一部分。AAC所采用的运算法则与MP3的运算法则有所不同,AAC通过结合其他的功能来提高编码效率。AAC的音频算法在压缩能力上远远超过以前的一些算法,如MP3。它还同时支持多达48个音轨、15个低频音轨、更多种采样率和比特率、多种语言的兼容能力、更高的解码效率。具体来说,AAC可以在比MP3文件缩小30%的前提下提供更好的音质。

AAC是新一代的音频有损压缩技术,它通过一些附加编码技术(如PS和SBR)衍生出LC-AAC、HE-AAC、HE-AAC V2这3中主要编码格式。在小于128kb/s码率下表现优异,且多用于视频中的音频编码。在128kb/s码率下的音频编码,多用于视频中的音频轨的编码。

1.6.9 Ogg Vorbis

Ogg Vorbis是一种新的音频压缩格式,类似于MP3等现有的音乐格式,但有一点不同的是,它完全是免费、开放和没有专利限制的。Vorbis是这种音频压缩机制的名字,而Ogg则是一个计划的名字,该计划意图设计一个完全开放性的多媒体系统。Vorbis也是有损压缩,但通过使用更加先进的升学模型减少损失。同样位速率编码的Ogg与MP3相比听起来更好些。Ogg 编码音质好、完全免费,可以用更小的码率达到更好的音质,128kb/s的Ogg比192kb/s甚至更好的MP3还要出色,但是目前在媒体软件支持上还是不够友好。在高中低码率下都有良好的表现,但兼容性不够好,流媒体特性不太支持。

1.6.10 APE

APE是一种无损压缩音频格式,在音质不降低的前提下,可以压缩到传统无损格式WAV文件的一半。APE压缩与WinZip或WinRAR这类专业数据压缩软件压缩原理类似,只是APE等无损压缩数字音乐之后的APE音频文件是直接可以被播放的。APE的压缩速率是动态的,压缩时只压缩可被要锁的部分,不能包压缩的部分被保留。

1.6.11 FLAC

FLAC(Free Lossless Audio Codec)是一套著名的自由音频无损压缩编码,其特点是无损压缩。理论上以FLAC编码压缩后不会丢失任何信息,将FLAC文件还原为WAV文件后,与压缩前的WAV文件内容相同。这种压缩与ZIP的方式类似,但FLAC的压缩率大于ZIP和RAR,因FLAC是专门针对PCM音频的特点而设计的压缩方式,而且可以使用播放器直接播放FLAC压缩的文件,就像通常播放MP3文件一样。FLAC是免费的,并且支持大多数操作系统(如Windows、Linux、BSD、Solaris、IRIX、AIX、BeOS、OS/2、Amiga等)。FLAC提供了在开发工具autotools、MSVC、Watcom C、Project Builder上的build系统。现各大网站都有FLAC音乐提供下载,发布者一般是购买CD后把.cda音轨直接抓成.flac格式文件,以保证光盘的原无损质量。

1.7 混音技术

混音就是把两路或者多路音频流混合在一起,形成一路音频流。混流则是指音频流的混合,也就是视频画面和声音的对齐。在混音之前,需要做回声消除、噪音抑制和静音检测等处理。回声消除和噪声抑制属于语音前处理的范畴。静音抑制可有可无,对于终端混音,要把采集到的主播声音和从音频文件中读到的伴奏声音混合。如果主播停顿一段时间而不发出声音,通过VAD检测到了以后,这段时间不婚姻,直接采用伴奏音乐的数据即可。

PS:静音检测与回声消除可参考1.4章节的音频处理。

另外,并不是任意两路音频流都可以直接混合,两路音频流必须符合以下条件才能混合。

(1)格式相同,要解压成PCM格式。
(2)采样率相同,要转换成相同的采样率。主流采样率包括16kHz、32kHz、44.1kHz和48kHz。
(3)帧长相同,帧长由编码格式决定,PCM没有帧长的概念,开发者可自行决定帧长。为了和主流音频编码格式的帧长保持一致,推荐采用20ms为帧长。
(4)位深(Bit-Depth)或采样格式相同,承载每个采样点数据的比特数目要相同。
(5)声道数相同,必须同样是单声道或者双声道。

1.8 音频重采样

音频重采样就是将音频进行重新采样得到的新的采样率/采样位数/声道数。在音频系统中可能存在多个音轨,而每个音轨的原始采样率可能是不一致的。

如播放音乐时,来了个提示音,此时需要把音乐和提示音混合到编解码器进行输出,音乐的原始采样率和提示音的原始采样率可能不一致。如果编解码的采样率设置为音乐的原始采样率,提示音就会失真,所以需要进行音频重采样。

最事半功倍的方法时编解码器的采样率固定一个值(44.1kHz或48kHz),所有的音轨都重采样到这个采样率,然后才送到编解码器,以保证所有音轨听起来都不失真。

2 音频编码原理

描述信源的数据时信息和数据冗余之和,即数据=信息+数据冗余。音频信号在时域和频域上具有相关性,即存在数据冗余。将音频作为一个信源,音频编码的实质时减少音频中的冗余。自然界中的声音非常复杂,波形也及其复杂,通常采用的时脉冲编码调制编码,即PCM编码。PCM通过抽样、量化、编码3个步骤将连续变化的模拟信号转化成数字编码信号。

2.1 音频压缩

原始的音频数据中存在大量的冗余信息,需要进行压缩处理。音频信号能压缩的理论依据,包括声音信号中存在大量的冗余度,以及人的听觉具有强音能抑制同时存在的弱音现象。

压缩编码,其原理是压缩冗余的信号。冗余的信号是指不能被人耳感知到的信号,包括人耳听觉范围之外的音频信号及被掩蔽掉的音频信号。

模拟音频信号转化为数字信号需要经过采样和量化。量化的过程被成为编码,根据不同的量化策略,产生了许多不同的编码方式(常见如PCM和ADPCM)。这些数据代表着无损的原始数字音频信号,添加一些文件头信息就可以存储为WAV文件了,它是由微软和IBM联合开发的用于音频数字存储的标准,可以很容易被解析和播放。

在更深一步学习音频处理和压缩之前需要明白几个概念,包括音调、响度、采样率、采样精度、声道数、音频帧长等。

PS:与音频相关的基础概念可以参考之前的文章。

音频压缩编码分为2类,包括无损压缩和有损压缩。

(1)无损压缩,主要指熵编码,包括哈夫曼编码、算术编码、行程编码等。
(2)有损压缩,包括波形编码(主要是PCM、DPCM、ADPCM、子带编码、矢量量化等)、参数编码、混合编码。

音频压缩编码有3中常用的实现方案。

(1)采用专用的音频芯片对语音信号进行采集和处理,音频编解码算法集成在硬件内部,如MP3编解码芯片、语音合成分析芯片等。使用这种方案的优点是处理速度快,设计周期短。其缺点是局限性较大,不灵活,难以进行系统升级。
(2)利用A/D采集卡加上计算机组成的硬件平台,音频编解码算法由计算机上的软件实现。使用这种方案的优点是价格便宜,开发灵活并且利于系统的升级。缺点是处理速度较慢,开发难度较大。
(3)利用高精度、高速度的A/D采集芯片来完成语音信号的采集,使用可编程的数据处理能力强的芯片实现语音信号处理的算法,然后用ARM进行控制。采用这种方案的优点是系统升级能力强,可以兼容多种音频压缩格式甚至未来的音频压缩格式,系统成本较低。缺点是开发难度较大,设计者需要将音频的解码算法移植到对应的ARM芯片中。

音频压缩编码有3种常用的标准。

(1)ITU/CCITT的G系列:G.711、G.721、G.722、G.723、G.728、G.729等。
(2)MPEG系列:MPEG-1、MPEG-2、MPEG-4中的音频编码等。
(3)Dolby实验室的AC系列:AC-1、AC-2、AC-3等。

2.2 音频编码

2.2.1 音频编码概述

音频编码目的在于降低传输所需要的信道带宽,同时保持输入语音的高质量。高频编码的目的在于设计低复杂度的编码器以尽可能低的比特率实现高品质的数据传输。

音频信号数字化是指将连续的模拟信号转换成离散的数字信号,完成采样、量化和编码3个步骤。它又成为脉冲编码调制,通常由A/D转换器实现。

音频模拟信号的数字化过程,即模拟信号——>采样——>量化——>数字信号。

音频编码有3类常用方法,包括波形编码、参数编码和混合编码。波形编码是尽量保持输入波形不变,即冲击爱你的语音信号基本上与原始语音信号的波形相同,压缩率比较低。参数编码要求重建的信号听起来与输入语音一样,但其波形可以不同,它是以语音信号所产生的数学模型为基础的一种编码方法,压缩率比较高。混合编码是综合了波形编码的高质量潜力和参数编码的高压缩效率和混合编码方法,这类方法也是目前低码率编码的方向。

2.2.2 静音阈值曲线

静音阈值曲线是指在安静环境下,人耳在各个频率所能听到的声音的阈值。

2.2.3 临界频带

由于人耳对不同频率的解析度不同,MPEG-1/Audio将22kHz内可感知的频率范围以不同的编码层,以及不同取样频率,划分为23~26个临界频带。

PS:人耳对低频的解析度较好。

2.2.4 频域上的掩蔽效应

频域上的掩蔽效应是指幅值较大的信号会掩蔽频率相近的幅值较小的信号。

2.2.5 时域上的遮蔽效应

在一个很短的时间内,若出现了两个声音,SPL(Sound Pressure Level)较大的声音会遮蔽SPL较小的声音。时域遮蔽效应分为前向遮蔽(Pre-masking)和后向遮蔽(Post-masking),其中Post-masking的时间会比较长,约是Pre-masking的10倍。时域遮蔽效应有助于消除前回音。

2.3 音频编码基本手段

音频编码的基本手段包括量化器和语音编码器。

2.3.1 量化和量化器

量化是把离散时间上的连续信号转换成离散时间上的离散信号。量化过程追求的目标是最小化量化误差,并尽量减低量化器的复杂度。由于这两者本身就是一个矛盾,所以需要折衷考虑。

常见的量化器有均匀量化器、对数量化器、非均匀量化器,各自都有优缺点。均匀量化器的实现最简单,但性能最差,仅适应于电话语音。对数量化器比均匀量化器稍微复杂,也比较容易实现,其性能比均匀量化器好。非均匀量化器根据信号的分布情况来设计量化器,信号密集的地方进行细致量化,而稀疏的地方进行粗略量化。

2.3.2 语音编码器

语音编码器通常分为3种类型,包括波形编码器、声码器和混合编码器。波形编码器以构造出背景噪音在内的模拟波形为目标,作用于所有输入信号,因此会产生高质量的样值并且耗费较高的比特率,而声码器不会再生原始波形,这种编码器会提取一组参数,这组参数被送到接收端,用来导出语音所产生的模拟波形,但声码器语音质量不够好。混合编码器融合了波形编码器和声码器的长处。

波形编码器的设计独立于信号,适用于各种信号的编码而不限于语音,主要包括时域编码和频域编码。时域编码包括PCM、DPCM、ADPCM等。

PCM是最简单的编码方式,仅仅对信号进行离散和量化,通常采用对数量化。差分脉冲编码调制(Differential Pulse Code Modulation,DPCM)只对样本间的差异进行编码。前一个或多个样本用来预测当前样本值,并且用来做预测的样本值越多,预测值越精确。真实值和预测值之间的差值叫做残差,是编码的对象、自适应差分脉冲编码调制(Adaptive Differential Pulse Code Modulation,ADPCM),在DPCM的基础上,根据信号的变化,适当调整量化器和预测器,使预测值更接近真实信号,残差更小,压缩效率更高。

频域编码是把信号分解成一系列不同频率的元素,并进行独立编码,包括子带编码和DCT编码。

子带编码(Sub-band Coding)是最简单的频域编码技术,是将原始信号由时间域转变为频率域,然后将其分割为若干子频带(简称子带),并对其分别进行数字编码的技术。它是利用带通滤波器(BPF)组把原始信号分割成若为子频带(如n个),然后通过等效于单边带调幅的调制特性,将各子带搬移到零频率附近,分别经过BPF(共n个)之后,再以规定的速率(奈奎斯特速率)对各子带输出信号进行取样,并对取样数值进行通常的数字编码,共设置n路数字编码器。将各路数字编码信号送到多路复用器,最后输出子带编码数据流。对不同的子带可以根据人耳感知模型,采用不同的量化方式,以及对子带分配不同的比特数。

离散余弦(Discrete Consine Transform,DCT)经常用于信号和图像数据的压缩。经过DCT后的数据能量非常集中,一般只有左上角的数值非零的,也就是能量都集中在离散余弦变换后的直流和低频部分,这样非常有助于数据压缩。

声码器的数码率已经降到2400或1200b/s,甚至更低。合成后语音质量有较大提高。中国于20世纪50年代末开始研制声码器,并用于数字通信。

声码器根据语音信号某种模型进行语音分析,是压缩通信频带和进行保密通信的有力工具。在传输中只利用模型参数,在编译码时利用模型参数估计采用语音合成技术的语音编译器。

声码器在发送端对语音信号进行分析,提取语音信号的特征参量加以编码和加密,已取得和信道的匹配,经信息通道传递到接收端,再根据收到的特征参量恢复原始语音波形。分析可在频域中进行,对语音信号进行频谱分析,鉴别清浊音,测定浊音基频,进而选取清浊判断、浊音基频和频谱包络做维护特征参量加以传送。分析也可在时域中进行,利用其周期性提取一些参数进行线性预测,或对语音信号进行相关分析。根据工作原理,声码器可以分成:通道式声码器、共振峰声码器、图案声码器、线性预测声码器、相关声码器、正交函数声码器,主要用于数字电话通信,特别是保密电话通道。

波形编码器试图保留被编码信号的波形,能以中等比特率(32kb/s)提供高品质语音,但无法应用在低比特率场所。声码器试图产生在听觉上与被编码信号相似的信号,能以低比特率提供可以理解的语音,但是所形成的的语音听起来不自然。混合编码器结合了二者的优点,具体包括以下几个特点。

(1)RELP(Residual Excited Linear Prediction),在线性预测的基础上,对残差进行编码。其机制只传输小部分残差,在接收端重构全部残差,把基带的残差进行复制。

(2)MPC(Multi-pulse Coding),对残差去除相关性,用于弥补声码器将声音简单分为voiced和unvoiced而没有中间状态的缺陷。

(3)MBE(Multiband Excitation),即多带激励,其目的是避免CELP的大量运算,以便获得比声码器更高的质量。

2.4 音频编码算法

常见的音频编码算法有OPUS、AAC、Vorbis、Speex、iLBC、AMR、G.711等。OPUS的性能好,质量高,但由于应用时间短,暂时还没有普及,并且不支持RTMP协议。AAC属于有损压缩算法,其目的是取缔MP3,压缩率很高、但还能接近原始的质量。MPEG-4标准出现后,加入了SBR技术和PS技术,目前常用规格有AAC LC、AAC HE V1、AAC HE V2。其中AAC LC具有低复杂度的特点,码率为128kb/s。AAC HE V2采取AAC+SBR+PS,由于声道间相同的性质很多,所以对于其他声道只需存储一些差异性的特征。AAC格式分为ADIF和ADTS。常见的AAC编码库有Libfdk_AAC、FFmpeg AAC、libfaac、libvo_aacenc等。

3 音频深度学习

深度学习领域的学术论文很多事关于计算机视觉和自然语言处理的,而音频分析(包括自动语音识别、数字信号处理、音乐分类、标签、生成)领域的运用也逐渐收到了学者们的关注。目前最流行的机器学习系统,如小布助手等,都是构建于音频信号提取模型之上的。很多研究人员也在音频分类、语音识别、语音合成等任务上不断努力,构建了许多工具分析、探索、理解音频数据。

3.1 音频深度学习的简介

音频深度学习主要从语音、音乐和环境声(Environmental Sounds)3个领域出发,分析它们之间的相似点和不同点,以及一些跨领域的通用方法描述。在音频特征表示和网络模型方面进行了详细的分析,对每个领域的技术演进及深度学习应用场景进行了大概的描述。截至目前,深度学习历经3次浪潮,第1次是1957年的感知算法的提出;第2次是1986年反向传播算法的提出;第3次2012年深度学习在图像识别领域上的成功突破,促使深度学习的发展呈现了蓬勃发展的景象,并广泛应用于其他领域。如基因组学、量子化学、自然语言处理、推荐系统等。

相比图像处理领域,声音信号处理领域是深度学习成功应用的又一个大方向,尤其是语音识别,很多大公司在研究这个方向。声音信号是一维的序列数据,尽管可以通过FFT这样的频域转换算法转换为二维频谱,但它的两个维度也有特定的含义(纵轴表示频率,横轴表示时间帧)。

一般情况下,可根据任务目标的类型划分为不同的任务类型。目标可以是一个全局的单标签,可以是每个时间帧都有一个标签,也可以是一个自由长度的序列。每个标签可以为一个单一的类别,可以为多个类别,也可以是一个数值。声音信号分析任务可以划分为两个属性,包括预测的标签数量(左)和标签的类型(右)。预测一个全局的单标签的任务成为序列分类(Sequennce Classification),这个标签可以为一个语音、说话人、音乐键或者声音场景等。当目标为多个类别的集合时,称为多标签序列分类(Multi-label Sequence Classification)。当目前是一个连续的数值时,称为序列回归(Sequence Regression)。实际上,回归任务通常是可以离散化并且可以转化为分类任务的。

在音频信号处理领域,构建适当的特征表示和分类模型通常被作为两个分离的问题。这种做法的一个缺点是人工构建的特征可以对目标任务不是最优的。深度神经网络具有自动提取特征的能力,因此可以将上述两个问题进行联合优化。如在语音识别中,Mohamed等认为深度神经网络可在底层提取一些适应说话人的特征,而在高层提取类别间的判别信息。深度学习的表征能力需要庞大的数据来支撑。

声音处理领域中,与语音相关的开源数据集有很多,尤其是英文的;与音乐相关的开源数据集也有很多,如Million Song Dataset和MusicNet;与环境声相关的数据集最大的就是AudioSet了,超过200万个音频片段,但是基本都是Weakly-label的。但实际使用中,有价值的数据还是很有限,尤其是对于环境声来讲。

语音识别指的是将语音信号转化成文字序列,它是所有基于语音交互的基础。对于语音识别而言,高斯混合模型(GMM)和隐马尔可夫模型(HMM)曾占据了几十年的发展史。

声源识别可以利用多通道信号对声源位置进行跟踪和定位。跟踪和定位的主要设备条件是话筒阵列,通常包括线性阵列、环形阵列和球形阵列等。声源分离是指的是在多声源混合的信号中提取单一的目标声源,主要应用在一些稳健声音识别的预处理及音乐编辑和重谱。声音增强通常为语音增强,指的是通过减小噪声来提高语音质量,主要技术是去噪自编码器、CNN、RNN、GAN等。

3.2 十大音频处理任务

声音深度学习非常复杂,这里列举10个常见的处理任务。

  1. 音频分类是语音处理领域的一个基本问题。需要从音频中提取特征,然后判断具体属于哪类。现在已有许多优秀的音频分类应用,如 Genre Classification、Instrument Recoginition和Artist Identification等。解决音频分类问题的常用方法是预处理音频输入以提取有用的特征,然后在其应用分类算法。

  1. 音频指纹识别的目的是从音频中提取一段特定的数字摘要,用于快速识别该段音频是否来自音频样本,或从音频库中搜索出带有相同数字摘要的音频。

  1. 自动音乐标注是音频分类的升级版。它包含多个类别,一个音频可以同时属于不同类,也就是有多个标签。自动音乐标注的潜在应用为音频创建元数据,以便日后进行搜索。

  1. 音频分割,即根据定义的一组特征将音频样本分割成段。音频分割是一个重要的预处理步骤,它可以将一个嘈杂而冗长的音频信号分割成短小、均匀的段落,再进行序列建模。目前它的应用时心音分割,即识别心脏的特定信号,帮助诊断心血管疾病。

  1. 音源分离就是从一堆混合的音频信号中分离出来自不同音源的信号,它最常见的应用之一就是识别并翻译音频中的歌词。

  1. 节拍跟踪的目标就是跟踪音频文件中每个节拍的位置,它为这项耗时耗力的任务提供了一种自动化的解决方案,因此深受视频剪辑、音乐编辑等群体的欢迎。

  1. 音乐推荐也是一种应用场景,为每个人推荐符合其口味的音乐。表面上它是一种根据用户收听历史定制个性化歌单的技术,本质上是一种信息处理技术。

  1. 音乐信息检索是音频处理中最困难的任务之一,实质上是建立一个基于音频数据的搜索引擎。

  1. 音乐转录(Music Transcription)是另一个非常有挑战性的音频处理任务,它包括注释音频和创建一个“表”,以便于之后为它生成音乐。

  1. 音符起始点检测是分析音频/建立音乐序列的第一步,对于以上提到的大多数任务而言,执行音符起始点检测是必要的。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机基础教案完整版 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN# Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN# 计算机基础教案完整版全文共151页,当前为第1页。计算机基础教案完整版 计算机基础教案完整版全文共151页,当前为第1页。 《计算机基础》 教案 计算机基础教案完整版全文共151页,当前为第2页。 《 计算机基础 》课程 计算机基础教案完整版全文共151页,当前为第2页。 教 案 首 页 教师 姓名 职称 讲师 课程 名称 计算机基础 总学时 授课 对象 授课 地点 教室实训室 企业 主题 或任务 第1章 计算机基础知识—— 计算机概述、.特点、分类和应用 学习 理念 具备基本的信息意识和素养 学习 目标 1.了解计算机的概念 2. 了解计算机的起源和发展简史 3. 了解计算机的分类 4. 培养学生分析问题、解决问题的能力,增强学生自主学习、协作学习的意识,启发学生的创造性思维。 5.在学习活中激发学生的学习兴趣,让学生体验到成功的喜悦,陶冶学生的情操。 学习 内容 1.计算机的概念 2.计算机的起源 3.计算机的发展历史 4. 计算机的分类 5. 6. 学习 活动 1. 老师提问问题 2. 学生思考 3. 老师讲解 4. 学生讨论 5. 小组互评 6. 方法 个案研究 小组讨论 练习训练 演示模拟 项目导向 角色扮演 实验实训 任务驱动 技术 手段 文本素材 图形/图像素材 音频素材 视频素材 动画素材 PPT 实物展示 网络连接 学习 程序 1.准备阶段(导入、成就) 询问学生的计算机使用经历 提出计算机基础的相关问题 通过回答引入讲授知识 2.陈述阶段(主体、成就) 讲解计算机的概念 讲解计算机的起源和发展 讲解计算机的分类 3.训练阶段(主体、成就) 小组讨论 练习作业"第1章 作业1" 小组互评 填写小组评价单 4.成就阶段(结束、成就) 总结知识点 点评作业 学习 成就 测验测试 课堂作业 学习活动 短文写作 行为表现 学习成果 系(部)名称: 教研室名称: 教研室主任签字: 年 月 日 计算机基础教案完整版全文共151页,当前为第3页。教学过程: 计算机基础教案完整版全文共151页,当前为第3页。 第1章 计算机基础知识 ——计算机概述 、.特点、分类和应用 1学时 教学活动及主要语言 学生活动 一、准备阶段 创设意境,导入新课(3分钟)(设疑法、提问法) 导入: 同学们,让我们共同来说一下计算机在日常生活中的应用以及你所掌握的计算机的一些操作。 以上可见计算机在日常生活中的用途是非常大的,但是我们对它的使用又掌握了多少呢从今天开始,由大家和我共同来学习计算机的基本知识。 二、陈述、训练阶段 新课教学(总计40分钟)(讲解法、提问法、示范法) 1)、计算机概述(5分钟) 2)、计算机的发展(5分钟) 3)、计算机的分类(5分钟)【重点】 ******练习作业"第1章 作业1"******(25分钟) 三、成就阶段 课堂小结(3分钟)(讲解法) 教师结合学生听课情况,对本节课的教学过程进行小结,指正学生应注意的学习重点和难点,提醒同学回去复习计算机硬件的组成,下一节做实验 课后作业(2分钟)(讲解法) 学生以书面形式完成作业:课后习题。 开拓思维,同时提出新的问题(2分钟)(激趣法) 教师提出预习问题,让学生产生继续探究、学习的愿望,整堂课带着下一堂课的悬念结束,为学习下一结内容做好铺垫。 学生回顾自己在日常生活中计算机的作用情况,并随着教师的讲解,引导出本节课要学习的内容。 此部分主要由老师来讲解,同时学生也配合着老师回答一些常见问题 此时学生应该注意听教师的讲解,因为此处是新知识,同时也应积极回答相应的问题,进行认真的思考 学生记录作业和预习内容 计算机基础教案完整版全文共151页,当前为第4页。 《 计算机基础 》课程 计算机基础教案完整版全文共151页,当前为第4页。 教 案 首 页 教师 姓名 职称 讲师 课程 名称 计算机基础 总学时 授课 对象 授课 地点 教室实训室 企业 主题 或任务 第1章 计算机基础知识—— 计算机概述、.特点、分类和应用 学习 理念 具备基本的信息意识和素养 学习 目标 1.了解计算机的发展趋势 2.掌握计算机的特点 3.掌握计算机的应用 4. 培养学生分析问题、解决问题的能力,增强学生自主学习、协作学习的意识,启发学生的创造性思维。 5.在学习活中激发学生的学习兴趣,让学生体验到成功的喜悦,陶冶学生的情操。 学习 内容 1.计算机的发展趋势 2.计算机的特点 3.计算机的应用 4. 5. 6. 学习 活动 1.
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Android基础教程》的源代码 对应的书籍资料见: Android基础教程(你的第一本Android书) 基本信息 原书名: Hello, Android: Introducing Google's Mobile Development Platform 原出版社: Pragmatic Bookshelf 作者: (美)Ed Burnette 译者: 张波 高朝勤 杨越 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115215369 上架时间:2009-11-6 出版日期:2009 年11月 开本:16开 页码:196 版次:1-1 编辑推荐   你的第一本Android书.    Pragmatic系列图书品质保证..    从这里,开始一个新的梦想... 内容简介   android是谷歌公司开发的全新开源手机平台。本书是一部关于 android开发的基础教程,采用由浅入深、循序渐进的方式讨论android。书中还结合数独游戏等实例更加形象生动地讲解了 android开发的基本流程,且每章最后都有一个 “快速阅读指南 ”,更加方便了读者的阅读。.    本书内容完整丰富,具有较强的通用性,读者都能通过本书快速学习 android开发,提高相关技能。... 作译者 作者: Ed Burnette Ed Burnette 资深软件技术专家,拥有20多年软件开发经验。他是SAS高级计算机实验室的联合创始人和高级研究员,也是www.planetandroid.com网站的创办人和ZDNet的专栏作家。除本书外,他还出版了Google Web Toolkit:Taking the Pain out of Ajax和Eclipse IDE Pocket Guide等著作。 目录 封面 -13 封底 202 扉页 -10 版权 -9 版权声明 -8 对本书的赞誉 -7 前言 -6 目录 -2 第一部分 Android简介 1 第1章 快速入门 3 1.1 安装工具 3 1.1.1 Java 5.0+ 3 1.1.2 Eclipse 4 1.1.3 Android 4 1.1.4 Eclipse插件 5 1.2 创建第一个程序 7 1.3 在模拟器上运行程序 8 1.4 在手机上运行程序 9 1.5 快速阅读指南 9 第2章 基本概念 11 2.1 Android的系统架构 11 2.1.1 Linux内核 11 2.1.2 本机库 12 2.1.3 Android运行时 13 2.1.4 应用程序框架 14 2.1.5 应用程序 15 2.2 它还活着 15 2.2.1 进程不等于应用程序 16 2.2.2 应用程序生命周期 17 2.3 构建块 19 2.3.1 活动 19 2.3.2 意图 19 2.3.3 服务 19 2.3.4 内容提供者 19 2.4 使用资源 20 2.5 安全性 20 2.6 快速阅读指南 21 第二部分 Android基础知识 23 第3章 设计用户界面 25 3.1 数独游戏简介 25 3.2 声明性设计 26 3.3 创建启动界面 27 3.4 使用替代资源 34 3.5 实现About对话框 37 3.6 应用主题 41 3.7 添加菜单 43 3.8 添加设置 45 3.9 开始新游戏 47 3.10 利用日志消息调试程序 48 3.11 利用调试器调试程序 50 3.12 退出游戏 50 3.13 快速阅读指南 50 第4章 绘制2D图形 53 4.1 Android图形基础 53 4.1.1 Color类 53 4.1.2 Paint类 54 4.1.3 Canvas类 55 4.1.4 Path类 55 4.1.5 Drawable类 56 4.2 在Sudoku程序中添加图形 58 4.2.1 开始游戏 58 4.2.2 定义Game类 58 4.2.3 定义PuzzleView类 60 4.2.4 绘制游戏盘面 61 4.2.5 绘制数字 63 4.3 处理输入 65 4.3.1 定义和更新选定区域 66 4.3.2 输入数字 68 4.3.3 增加提示 69 4.3.4 抖动屏幕 70 4.4 其他问题 71 4.4.1 创建软键盘 71 4.4.2 实现游戏逻辑 76 4.4.3 其他功能 78 4.5 更多改进 80 4.6 快速阅读指南 81 第5章 多媒体 83 5.1 播放音频 83 5.2 播放视频 88 5.3 为数独游戏配上音乐 92 5.4 快速阅读指南 94 第6章 存储本地数据 95 6.1 为数独游戏添加选项 95 6.2 继续玩前一个游戏 97 6.3 记住当前位置 99 6.4 访问内部文件系统 100 6.5 访问SD卡 101 6.6 快速阅读指南 103 第三部分 高级主题 105 第7章 互联的世界 107 7.1 通过意图实现浏览 108 7.2 利用视图打开网页 111 7.3 JavaScript与Java通信 115 7.4 使用Web服务 121 7.5 快速阅读指南 131 第8章 定位与环境感知 133 8.1 位置,位置,位置 133 8.1.1 我在哪里 135 8.1.2 更新位置 137 8.1.3 模拟说明 138 8.2 充分利用传感器 139 8.2.1 了解传感器 139 8.2.2 解析传感器的读数 140 8.2.3 模拟说明 140 8.3 地图功能 141 8.3.1 嵌入MapView 142 8.3.2 准备就绪 145 8.3.3 模拟说明 146 8.4 快速阅读指南 147 第9章 SQL实战 149 9.1 SQLite简介 149 9.2 SQL基础 150 9.2.1 DDL语句 151 9.2.2 修改语句 151 9.2.3 查询语句 151 9.3 你好,数据库 152 9.3.1 使用SQliteOpenHelper 153 9.3.2 定义主程序 155 9.3.3 添加一行 156 9.3.4 运行一个查询 157 9.3.5 显示查询结果 158 9.4 数据绑定 159 9.5 使用ContentProvider 162 9.5.1 更改主程序 164 9.5.2 添加一行 164 9.5.3 运行一个查询 165 9.6 实现ContentProvider 165 9.7 快速阅读指南 166 第10章 利用OpenGL实现3D图形 169 10.1 理解3D图形 169 10.2 OpenGL简介 170 10.3 构建一个OpenGL程序 171 10.4 管理线程 173 10.5 构建一个模型 178 10.6 光线、相机…… 181 10.7 动作 183 10.8 应用纹理 184 10.9 透明效果 187 10.10 快速阅读指南 189 第四部分 附录 191 附录A Java与Android语言及其API 193 附录B 参考书目 197 译者序   2007年11月5日,谷歌公司推出了自己的开源手机平台,正式命名为Android,该平台由操作系统、中间件、用户界面和应用软件组成。谷歌公司对外宣称这是首个为移动终端打造的真正开放和完整的移动平台。.   作为基于Linux的开源手机平台,Android包括一部手机工作所需的全部软件——操作系统、用户界面和应用程序,而且不存在任何以往阻碍移动产业创新的专有权障碍。谷歌公司与开放手机联盟合作开发了Android,这个联盟囊括了中国移动、摩托罗拉、高通、宏达和T-Mobile在内的30多家无线应用方面的领头羊。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,谷歌公司希望能建立一个标准化、开放式的移动电话软件平台,这样必将推进更好、更快的创新,为移动用户提供不可思议的丰富应用和服务。   Android作为谷歌公司企业发展战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。作为一款多方倾力打造的平台,Android具有许多优点:实际应用程序运行速度快;开发限制少,平台开放;程序多任务性能优秀,切换迅速等。当然,它也具有系统细节不完善、电源管理不好、软件的界面不太好、支持的软件厂商还比较少等缺点。但是凭借谷歌公司的强大实力以及与开放手机联盟的通力合作,我们相信Android会越来越好,一定会成为主流的手机操作系统平台。..   本书分为3个部分共10章,最后还有两个附录。第1~3章介绍Android的基础知识和基本概念;第4~6章介绍2D图形、多媒体和存储本地数据;第7~10章介绍高级主题,包括联网、定位与环境感知、数据库和3D图形;附录介绍了Android与Java之间的差别以及参考书目。   本书由张波、高朝勤、杨越和徐红霞等翻译,在翻译过程中得到了人民邮电出版社图灵公司编辑的热心帮助,在此一并致谢。由于译者的知识水平有限,加之时间比较仓促,文中难免会出现一些疏漏,恳请广大读者给予批评指正。...    前言   Android是一款针对手机的全新开源软件工具包,它由Google和开放手机联盟(Open Handset Alliance)共同创建。Android有望在数年内遍布于数百万部手机和其他移动设备中,从而成为应用程序开发人员的主要平台。无论你是业余爱好者还是专业程序员,无论你是自己玩玩还是为了盈利,都应该了解关于Android开发的更多信息。本书将帮助你迅速入门。.   Android的特别之处   如今,市场上已经有了许多移动平台,包括Symbian、iPhone、Windows Mobile、BlackBerry、Java Mobile Edition和Linux Mobile(LiMo)等。当我向别人说起Android时,他们的第一个疑问通常是:我们为什么还需要另一个移动标准?它有何惊人之处?   虽然Android的一些特性并非首创,但它是第一个将以下特性结合在一起的环境。   基于Linux,真正开放、开源、免费的开发平台。手持设备制造商钟情于它的原因,是它们可以使用和定制该平台而不需要支付版税。开发人员喜欢它的原因,是他们知道这个平台是独立的,不受任何一家厂商的限制。   受Internet mashup思想启发的基于组件的架构。一个应用程序的组件可以在另一个应用程序中用作其他用途。你甚至可以将Android内置的组件替换为自己改进后的版本。这将在移动领域掀起新一轮的创造风潮。   众多开箱即用的内置服务。基于位置的服务使用GPS或手机发射塔三角测量法,让你可根据所处位置来定制用户体验。凭借功能全面的SQL数据库,利用强大的本地存储,可以完成偶尔连接的计算和同步操作。浏览器和地图视图可以直接嵌入在应用程序中。所有这些内置服务有助于提高功能的标准,同时降低开发成本。   应用程序生命周期的自动化管理。多层安全措施将程序彼此分离,这将使智能电话的系统稳定性达到前所未有的水平。最终用户不再需要担心哪些应用程序是活动的,也不必在运行新程序前先关闭原有的一些程序。Android针对低能耗、低内存的设备进行了优化,这种根本性的优化是之前的平台从未尝试过的。   高质量的图形和声音。将类似于Flash的光滑、无锯齿的2D矢量图形和动画与3D加速的OpenGL图形相结合,可实现各种新式的游戏和商业应用程序。Android内置了最常用的行业标准音频和视频格式的编解码器,这些格式包括H.264 (AVC)、MP3和AAC。   当前及未来各类硬件间的可移植性。所有程序都是用Java语言编写的,并且将由Android的Dalvik虚拟机执行,所以代码在ARM、x86和其他架构之间是可以移植的。Android提供了对各种输入方法的支持,比如说键盘、触摸屏和轨迹球。用户界面可以针对任何屏幕分辨率和屏幕方向进行定制。   Android为用户与移动应用程序交互提供了全新的方式,同时也提供了实现这些交互的底层技术保障。而Android最令人心动之处,莫过于你可以为它编写软件,本书恰好可以为你提供这方面的帮助。   本书读者对象   阅读本书唯一的前提条件,是具备对Java编程或类似面向对象语言(比如说C#)的基本理解,不需要拥有为移动设备开发软件的经验。实际上,如果你确实有这方面的经验,反倒应该忘记它们。Android是如此与众不同,因此最好不要带着成见来学习它。   本书内容   本书分为三部分。大致来说,本书采用由浅入深、循序渐进的方式讨论Android。   有些章使用了一个公共的示例:Android数独游戏。通过逐渐在游戏中添加特性,你将学习Android编程的许多方面,包括用户界面、多媒体和Android生命周期。..   第一部分中将首先介绍Android,内容涉及如何安装Android模拟器,如何使用IDE(Intergrated Development Environment,集成开发环境)编写第一个程序。然后,我们将介绍一些基本的概念,比如Android中的生命周期。Android中的编程方式可能与你之前采用的方式不同,因此一定要在继续学习之前掌握这些概念。   第二部分讨论Android的用户界面、二维图形、多媒体组件以及简单的数据访问。这些特性在大多数程序中都用得到。   第三部分深入探讨Android平台。这一部分介绍外部通信、基于位置的服务、内置SQLite数据库和三维图形。   本书最后提供了一个附录,其中列出了Android与Java SE(Java Standard Edition,Java标准版)之间的不同之处。 .  在线资源   本书网站http://pragprog.com/titles/eband提供了以下资源。   本书使用的所有示例程序的完整源代码;   勘误页面,列出了本书这一版中的所有错误(希望它保持空白);   论坛,在此你可以直接与作者及其他Android开发人员交流(希望论坛用户越来越多)。   读者可以在自己的应用程序中随意使用源代码。   关于“快速阅读指南”   虽然大多数作者都希望读者阅读他们书中的每一句话,但我知道你可能不想这样做。你只希望阅读能够解决手头问题的部分,而在需要解决其他问题时,再回过头来阅读另外一些内容。因此,我在书中特意注明在哪里可以找到你所关心的内容。   本书每章最后都有一个“快速阅读指南”,告诉无序阅读本书的读者接下来应该阅读哪些内容。读者还可以在其中发现一些指向相关资源(如图书和在线文档)的链接,可以了解相关主题的更多信息。   好吧,你现在想了解点什么?第1章就将指导你完成第一个Android程序。第2章回过头来介绍Android的基本概念和原理。第3章探讨用户界面,也就是大多数Android程序中最重要的部分。   致谢   我要感谢为本书成功出版做出贡献的许多人,包括审稿人Anthony Stevens、Gabor Paller、Fred Burke、Dianne Hackborn和Laurent Pontier,他们详尽审阅了本书;感谢编辑Susannah Pfalzer在我几乎要推迟交稿时提供的好建议并为我鼓足勇气。特别要感谢我的家人,感谢他们在我写作本书期间表现出来的极大耐心。...    媒体评论   “跟本书的2005版一样,我认为Louis的这本书写得非常好,信息量极其丰富而且实践性强。阅读过程中,你会觉得是在跟作者讨论问题。我喜欢这本书,还因为它有自己的观点,而非从在线图书中照搬过来……”.   —— Amazon读者评论   这本书极其出色,不仅文笔流畅、浅显易懂,内容也妙趣横生。本书既恰到好处地讲解了Android独有的特性,同时也突出了高质量编程的原则。   ——Anthony Stevens   PocketJourney创始人兼CTO,Google Android竞赛前20强   Ed Burnette的这本书虽然篇幅不长,但内容丰富,保持了Pragmatic(实用)系列图书的一贯风格。仅凭2D和3D图形方面的内容,本书就非常得所有Android开发人员拥有。   ——Mark Murphy..   CommonsWare创始人   我还记得第一次使用Android时的情景:当时感觉它就像是一座超大型迷宫。有了这本书,入门就不会那么痛苦了。我深信,通过阅读本书,上手开发Android应用程序将是一件非常轻松愉快的事。   ——Gabor Paller   OnRelay公司高级软件架构师...
第一章 虚拟现实概论 6 第一节 什么是虚拟现实 6 第二节 网络与虚拟现实技术的发展 7 第三节 WEB3D闪亮登场 8 第二章 Lyinux基础知识 9 第一节 2D与3D 9 第二节 3D世界是如何描述的 11 一、 空间位置 11 二、 视觉效果 12 三、 运动状态 13 第三节 有关LYINUX 13 一、 Lyinux的应用: 14 二、 Lyinux的特点 14 三、 Lyinux与互联网 15 第四节 LYINUX 基本概念 15 一、 CC6浏览器中的计量单位 15 二、 LYINUX的数据类型与域 16 三、 域类型 17 四、 3d建模工具导出资源 18 五、 小结 19 第三章 创建造型 20 第一节 简单造型 20 一、 Box 20 二、 Cube 20 三、 Sphere 20 四、 Cylinder 21 五、 Cone 21 第二节 复杂造型 22 一、 文本造型 22 二、 轮廓挤出节点 25 第三节 通用造型 25 一、 PointSet点集 25 二、 IndexedLineSet线集 26 三、 IndexedFaceSet面集 29 第四章 材质外观节点 31 第一节 材质类节点 31 一、 材质节点 31 二、 色彩节点 32 第二节 纹理类节点 33 一、 固有色纹理 33 二、 视频纹理MovieTexture 36 三、 网页纹理HtmlTexture 37 四、 凹凸纹理 39 五、 纹理文件格式 39 第三节 纹理变换 40 一、 纹理变换节点 41 二、 纹理坐标类节点 44 第五章 环境设计 46 第一节 创建背景 46 第二节 摄像机 48 一、 默认摄像机 48 二、 透视摄像机 48 三、 平截体摄像机 49 四、 平行摄像机 49 五、 导航节点NavigationInfo 51 第三节 灯光节点 54 一、 点光源 54 二、 平行光源 57 三、 锥光源 61 第四节 声音节点 65 一、 声音 65 二、 音频剪辑 66 第五节 雾化节点 67 第六节 环境光雾节点 69 第六章 组节点 69 第一节 SEPARATOR 69 第二节 GROUP 70 第三节 TRANSFORM 71 第四节 TRANSFORMSEPARATOR 72 第五节 BILLBOARD 73 第六节 MULTIPLECOPY 75 第七节 GEO系列节点 78 一、 GeoCoordinate 78 二、 GeoSeparator 78 三、 GeoOrigin 78 四、 GeoLocation 78 第八节 细节层次控制 80 一、 LOD 80 二、 LevelOfDetail 84 第九节 小结 85 第七章 动画节点 85 第一节 事件和路由的基本概念 85 第二节 时间传感器 86 一、 TimeSensor 86 二、 DrawSensor 86 第三节 坐标系变换类 87 一、 PositionInterpolator 87 二、 OrientationInterpolator 89 第四节 参数变换类 91 一、 SCALARINTERPOLATOR 91 二、 COLORINTERPOLATOR 94 第五节 坐标插补器 96 第六节 法向量插补器 98 第八章 骨骼节点 99 第一节 骨骼动画介绍 99 第二节 BONE 100 第三节 BONEINSTANCE 100 第九章 传感器节点 102 第一节 TOUCHSENSOR 102 第二节 PLANESENSOR 104 第三节 CYLINDERSERSOR 105 第四节 SPHERESENSOR 110 第五节 PROXIMITYSENSOR 111 第六节 VISIBILITYSENSOR 111 第七节 高亮节点 112 第八节 输入控制节点 112 一、 响应键盘鼠标按键消息 113 二、 响应鼠标在屏幕中移动的轨迹消息 118 第九节 变换操作节点 120 一、 Dragger系列节点 120 二、 Manip操作器系列 121 三、 Controller控制器系列 127 第十章 脚本 132 第一节 SCRIPT 132 第二节 JAVASCRIPT 133 一、 变量的声明和使用 133 二、 常用运算符和类 133 三、 程序控制流 139 四、 函数 140 第三节 脚本的运用 141 第四节 扩展函数——自定义光标 144 第五节 常用全局函数介绍 147 一、 print与alert函数 147 二、 fullScreen函数 148 三、 thisNode函数 148 四、 setTimeout函数 150 五、 获得当前用户信息函数 151 第六节 SFNODE类的使用 152 第七节 VRMLMATRIX类的使用 159 第八节 JAVASCRIPT的数据类型 160 第十一章 GUI二维界面 167 第一节 3D场景中的2D元素 167 一、 Text2 167 二、 Image 167 第二节 图形用户界面GUI 167 第十二章 虚拟现实结构体系 182 第一节 内联节点 182 第二节 原型 184 一、 原型定义 184 二、 原型调用 185 第三节 原型与内联节点的区别 185 第四节 原型构成体系 185 第十三章 客户端与服务器端的通信 186 第一节 WWWANCHOR 186 第二节 FORM节点 187 第三节 UPDATE节点 195 第四节 NETSYNCER节点 195 术语表 197 参考文献 197

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值