3D游戏设计 ——音频处理-毕业论文_第1页
3D游戏设计 ——音频处理-毕业论文_第2页
3D游戏设计 ——音频处理-毕业论文_第3页
3D游戏设计 ——音频处理-毕业论文_第4页
3D游戏设计 ——音频处理-毕业论文_第5页
免费预览已结束,剩余30页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业论文(科研训练、毕业设计)题 目:3D游戏设计音频处理姓 名:学 院:软件学院系:专 业:软件工程年 级:学 号:指导教师(校内): 职称: 年 月摘要近年来,计算机技术在不断发展,也有越来越多的人加入到对计算机技术的开发中。而游戏是计算机技术的一个亮点,因而越来越多的大学为学生提供游戏开发程序。但设计一个游戏的具体方法和所需的工具,却少有介绍。而本文就是这少有的资料中的一篇。本文介绍了用游戏引擎开发一个3D游戏的过程及其辅助工具的使用,而游戏引擎无疑是重中之重。本文介绍的游戏引擎torque将很好地帮我们学习开发3D游戏。引擎提供的功能可以让艰难工作变得相对简单,如图形渲染、网络连接、3D模型的建立、3D音效的导入等等。之后我们再通过脚本将所有的功能组合到一起。声音是一个3D游戏的重要组成部分,巧妙的使用恰当的声音效果对一个优秀的3D游戏来说是非常重要的。为此,本文介绍了音频处理软件SoundEdit的使用,和通过其功能合成3D游戏中的各种音效的方法。并介绍了将声音文件导入游戏引擎,完成一个3D游戏中声音处理的过程。关键词:torque游戏引擎 图形用户界面 纹理 3D模型 3D音效AbstractComputer technique is developing incessantly this year, more and more people join in the exploitation of computer technique. And game-design is a pop computer technique, so more and more universities offer games programs for students. But few article introduced how to design a game and the tools it needed. And this paper told us something about it.This paper narrated the process of exploiting a 3D-game by game engine and how to used its assistant tools, and the stress is the game engine. The game engineTorque introduced in this paper will help us to design a 3D-game. Hard work may become easy by using the functions of this engine, for example, romancing figure, network connection, building 3D-model, guiding in 3D-audio, etc. Than we weaves all of the functions by used script.Sound is a important part of a 3D-game, used a right sound effect artful is very important for a excellent 3D-game. Therefore, this paper told us how to use a audio edited softwareSoundEdit. With its help, compose various audio profiles, and lead in game engine, complete the process of audio manage in a 3D game.Keywords: torque GUI texture 3D model 3D audio profile目录第一章 游戏引擎概述.81.1 torque功能介绍.81.1.1 基本的控制流.81.1.2 平台层.91.1.3 控制台.91.1.4 输入模型.91.1.5 仿真.91.1.6 资源管理器.101.1.7 图形.101.1.8 3D渲染.111.1.9 地形.121.1.10 内景.121.1.11 形状和动画.121.1.12 网络连接.131.2 Torque引擎包配套的软件.141.3 为什么使用torque引擎及安装过程15第二章 用Torque引擎开发我们的3D游戏162.1 游戏结构分析(文件夹).162.2 对整个游戏的分析和分工安排19第三章 游戏音频的制作及导入193.1 基本概念193.1.1 基本概念.193.1.2 声音的三要素.203.2 数字化声音203.2.1 模拟信号与数字信号.203.2.2 采样.213.3 声音文件的存储223.4 音频处理软件SoundEdit.233.4.1 简介.233.4.2 调入与保存文件.243.4.3 编辑区域.243.4.4 简单音频编辑.253.4.5 声道编辑.263.4.6 淡入淡出.263.4.7 频率均衡控制.273.4.8 混响时间.273.4.9 特殊音效.273.4.10 时间调整.283.4.11 音量控制.283.4.12 音频合成.293.5 游戏音频的导入30第四章 结论32致谢.33参考文献.34ContentsChapter 1 Conspectus of the torque engine.81.1 the instroduction of torque function.81.1.1 basal control flow.81.1.2 flat roof floor.91.1.3 console.91.1.4 import model.91.1.5 resemble verily.91.1.6 explorer.101.1.7 graph.101.1.8 3D romance.111.1.9 landform.121.1.10 indoor scene.121.1.11 form and painting.121.1.12 network connections.131.2 the assistant software of torque.141.3 why to use torque engine and how to build.15Chapter 2 Use torque to empolder our 3D-game.162.1 the analyse of configuration.162.2 the plan of the game and mans.19Chapter 3 Make and guide games audio.193.1 basic conception193.1.1 basic conception.193.1.2 the three factors of the voice.203.2 digital voice203.2.1 analog signals and digital signals.203.2.2 sampling.213.3 storage audio file.223.4 audio-managed softwar SoundEdit.233.4.1 introduction.233.4.2 fold and save file.243.4.3 area edited.243.4.4 simpleness audio-edit.253.4.5 track edit.263.4.6 fade-in and fade-out.263.4.7 frequency proportion commands.273.4.8 reverberate time.273.4.9 especially sound.273.4.10 regulate time.283.4.11 volume-control.283.4.12 audio-compose.293.5 guide in the audio of the game30Chapter 4 Summary.32Acknowledgement.33References.34第一章 游戏引擎概述1.1 Torque功能介绍我们知道,做一个大型一点的游戏实际上和做个小操作系统差不多,每做一款游戏就从底层开始重新编写代码是非常不切实际的。因此,开发者在做第一个游戏时会把很多已经做好的东西封装成类,然后留出接口,以供下一个游戏调用。这个类库其实就可以叫做游戏引擎。严格的说它是用于控制游戏功能的主程序,控制着游戏的运行,如人工智能、游戏世界的物理定律,还实现人机交互,如接受玩家控制信息的输入、选择合适的声音以合适的音量播放等。也许这样说还过于简单和抽象,本文中我们介绍了torque游戏引擎,那么,这个游戏引擎究竟能做什么呢?1.1.1 基本的控制流Torque Game Engine初始化库和游戏中的函数,然后在游戏的主循环体中循环直到游戏结束。主循环通常会调用平台库中的函数来产生平台事件,这些事件将驱动游戏的发展。Torque负责处理如下几种基本的事件处理:1)显示鼠标在GUI上的移动事件;2)处理其他与输入有关的事件;3)依据设定的时间模拟比例计算经过的时间;4)管理服务器对象的处理时间;5)检测服务器网络数据包的传输;6)增长模拟事件的时间;7)处理客户端对象的时间;8)检测客户机网络数据包的传;9)渲染当前帧;10)检测网络连接是否超时。1.1.2 平台层平台层向该引擎提供了一个跨平台体系结构接口。平台层负责处理文件、网络操作、图片初始化、用户输入以及各种事件。1.1.3 控制台控制台库为以Torque Engine为基础的游戏提供一些基本功能。控制台上同时具有编译器和解释器。所有的GUI、游戏对象、游戏中的逻辑以及接口都是通过控制台进行处理的。控制台语言被称作Torque Script,与C+语言类似,但具有一些利于游戏开发的特性。可以使用命令从控制台窗口载入控制台脚本,也可以从文件中自动载入。1.1.4 输入模型输入事件经由平台层解释然后递交到游戏。默认情况下,游戏按照一张全局动作映射表检查输入事件,这张表取代所有其他的动作处理程序。如果在表中找不到指定事件的动作,则事件将被传递给GUI系统。如果GUI没有处理输入事件,它将被传递到当前活动(但非全局)的动作映射堆栈中。各个平台的相关代码会把Win32,Xwindows或Mac系统上发生的事件翻译成统一的Torque输入事件。这些事件被发送到主应用程序事件队列中。动作映射表把平台层的输入事件翻译成控制台命令任何平台输入事件都能够被绑定到一种通用的处理方法上-所以理论上,游戏并不需要知道事件是来自键盘、鼠标、操纵杆还是其他输入设备。这使得游戏玩家可以按照自己的喜好设置操作方式。1.1.5 仿真来自平台库的事件流驱动着游戏的发展,这些事件包括:InputEvent,MouseMoveEvent,PacketReceive-Event,TimeEvent,QuitEvent,ConsoleEvent,ConnectedReceive-Event,ConnectedAcceptEvent和ConnectedNotifyEvent。通过记录平台库的事件流,游戏的仿真会话(simulation session)部分就能够根据调试的需要重复游戏的某个片断。对象的仿真基本上是由游戏的引擎部分完成的。有时间限制的对象可以根据它是服务器对象还是客户端对象添加到以下两个处理列表中的某一个上:全局服务器队列或全局客户机队列。服务器端的对象只在某些特定的时间进行仿真,但对于客户端对象,为了在帧速率很高的时候能够产生平滑的视觉效果,必须在每一个时间事件后重新仿真。有一个专用的simulator类,它管理着所有需要仿真的对象和事件。这些对象分为不同层级的simulator类,可以通过名称或对象ID引用它们。1.1.6 资源管理器Torque Engine会使用到为数众多的资源。地形文件、位图、形状、材质清单、字体以及内景都是游戏资源的例子。Torque有一个资源管理器,这个管理器用于管理各种游戏资源并提供一个加载和保存资源的通用接口。Torque的资源管理器支持每次只加载一种资源的一个实例。1.1.7 图形Torque本身没有图形生成功能;取而代之的是,它使用OpenGL的图形API。Torque有一个实用工具库,这个库用于扩展OpenGL以支持更高层次的图元和资源。Torque有一个实用函数集,该函数集能够更好地支持复杂的图元和资源,而且对较容易管理的纹理和2D图形添加了一些简单的功能。Torque有一个纹理管理器,该管理器负责游戏中纹理的加载和卸载。在一个给定的时间内只能加载某个纹理的一个实例;在加载完成后纹理由OpenGL处理。当游戏切换图形模式或视频设备时,纹理管理器会透明地重新加载或是卸载游戏的纹理。Torque支持多种位图文件类型:PNG、JPEG、GIF、BMP,以及用户自定义的BM8格式,这是一种用于最小化纹理内存开销的颜色为8位的纹理格式。GUI库管理Torque游戏的用户界面。它是专门为游戏界面开发而设计的。Canvas对象是当前GUI层级的根对象。它负责发送鼠标和键盘事件,管理更新区域和光标,并在绘制下一帧的时候调用恰当的渲染方法。Canvas会跟踪内容控制,这种控制从下到上分层地控制内容的渲染,主要用于控制在屏幕上显示任意数量的浮动窗口或对话框。Profile类负责维护一组控件之间的实例数据。字体、颜色、位图和声音数据等信息都保存在Profile类的实例中,所以并不需要对每一个控件都复制一个Profile类的实例。Control类是系统中所有GUI控件的根类。一个控件可以容纳任意数量的子控件。每个控件都以父控件的边框为坐标系在父控件内部占用一块矩形区域。Control类负责处理控件的输入、渲染,同时负责接受鼠标焦点和按坐标自动调节控件的大小。1.1.8 3D渲染Torque库有一个模块化的、可扩展的3D渲染系统。游戏子类首先定义成像方位和视觉范围,然后调用OpenGL的画图命令画出3D场景。类负责确定视口,以及模型的观察角度和投影矩阵。函数将返回当前受控对象(玩家当前正在控制的模拟对象)的成像角度,然后引擎将调用客户端场景图形对象渲染游戏环境。在客户端,场景图形库负责监控整个游戏场景,并根据当前的成像角度决定应该渲染哪些对象;而在服务器端,它负责根据玩家在游戏中的视觉角度决定应该把哪些物体发送到客户端。整个场景被分为多个区域,每个区域由多个实心部分和入口组成。场景以外是一个单独的区域;内部对象可以有多个内部区域。引擎负责找出一个给定3D点在哪个区域以及拥有该区域的对象。然后引擎就能够决定哪个或哪些区域包含一个对象实例。在渲染的时候,整个场景将从包含摄像机的区域开始,按照在它之前的区域中设置的视觉入口剪辑每个区域中的对象。引擎还负责确定网络对象的处理范围,决定一个给定对象是否需要由客户端处理。场景中的每个能够渲染的对象都是从一个基类派生出来的。在刷新场景的时候,所有可见的对象都需要准备一幅或多幅用于渲染的图像,这些图像随后将被插入到当前场景中。图像先按透明性排列,然后渲染。这种方法允许在渲染一个带有多个半透明窗口的楼房时先渲染楼房,然后渲染其他对象,接着再渲染楼房的窗口。对象可以插入多张用于渲染的图像。1.1.9 地形地形库负责处理渲染外部场景模型的对象。它包含了sky对象,这个对象渲染外围的天空和有层次感的云层,并在渲染整个场景的时候通过设置明显的和模糊的距离使环境变得错落有致。sky对象还将产生模糊的垂直层次并将其发送给SceneGraph对象,以便渲染。TerrainBlock类提供了无限多个大小为256256的区域,这些区域在一个水平面上展开。每个区域上的数据都由资源管理器负责保存和加载,这样单个地形数据文件就可以在服务器和客户机之间共享了。对地形的纹理处理是通过代码把基本的材质纹理和新的材质纹理混和到一起,然后按照矩形区域的距离远近投影到连续的矩形上。Blender类负责混和不同的地形纹理并转换成特定的版本,以便在x86体系结构的机器上运行时能够加快速度。游戏中的水按照距离的远近自动渲染,近处的水比远处的水波纹更多,颜色更深。水的覆盖范围可以按如下方法圈定,在画面上设置一个点,然后以这个点为中心形成一个湖泊,并且不会有水从边角泄漏出去。1.1.10 内景内景库负责渲染图像,管理冲突,并为内部对象,比如各种建筑物,提供磁盘文件服务。内部资源类管理与单个内部对象定义有关的数据,任何时候系统中都可能存在多个资源类实例。内景库管理用于渲染场景图像的区域,而且还可能拥有渲染镜像视图的子类。光源管理器类为当前已经加载了的对象产生光照贴图。只要有可能,实例就会共享光照贴图。内部资源通过一个内部导入实用程序构造和加亮。源文件是Quake风格的.map文件,该文件与凸面物理结构的实心“画笔”列表并无差别。这种画笔用来定义内部实心区域。某些特殊的画笔定义了区域的边界和类似于光源这样的对象。1.1.11 形状和动画这个库负责管理各种形状模型的显示和动画。库的形状资源类可以在多个形状实例之间共享。形状类管理形状的所有静态数据:网格数据,动画关键帧,素材列表,纹理信息,触发器和详细的层级。实例类管理形状实例的动画、渲染以及细节的选择。实例类使用线程类管理多个同时运行的对象的动画,这些类和对象一一对应。每个线程都能够各自及时地运行,或者在其他线程运行的时候按照另一个不同的时间比例运行。线程还可以在不同的动画顺序之间切换。动画的顺序可由节点/骨骼(node/bone)动画(例如,爆炸的各个环节)、素材动画(爆炸中的纹理动画)和网格动画(如一个形状变化的水滴;注意大多数网格动画都可以通过节点级的动画和旋转动画来完成)组成。动画还包括是否渲染图形以便图形的网格只有在动画开始之后才能看到。1.1.12 网络连接Torque设计的基础是要提供强大的客户机/服务器网络模拟支持。Torque网络设计的目标是能够在Internet上获得良好的网络性能。Torque处理了3个基本的实时网络编程问题:受限带宽,数据包丢失和延迟。如果想要获得关于Torque网络体系结构的更为详细的资料,可以参考GarageGames网站()上的文章“The Tribes II Engine Networking Model”,不过这篇文章中的内容可能稍微有些过时了。Torque游戏的实例可以在专用的服务器、客户机上安装,或者同时在服务器和客户机上安装。如果游戏有客户端和服务器端,则运行游戏时客户端将连接到服务器端,不过在同一个游戏实例中的网络代码之间有捷径相连,而且没有数据会超出网络的范围。带宽是一个棘手的问题,因为Torque支持广阔、开放的地形环境,而且要处理为数众多的客户端对象每台服务器最多可以连接128台客户机,这意味着很可能会有多个对象同时需要移动和更新。Torque使用很多策略来最大化可用带宽。1、它以比较高的频率向客户机发送对于客户机而言最为重要的更新数据,而对于其他不是最重要的更新数据,发送的频率要低一些。2、对一段数据,只发送所需的最少比特位。3、只发送已发生变化的对象的状态。4、缓存普通的字符串和数据,以便一次传送所有数据。数据包丢失也会产生问题,因为在丢失的数据包中包含的信息必须以某种方式重传,然而在大多数情况下,如果直接重传丢失的数据包,那么这些数据包中的信息在到达客户端时已经变得很陈旧了。延迟在模拟时也是一个问题,因为网络数据传输的延迟会使得客户端的视觉效果与服务器端无法同步。快速移动风格的FPS游戏需要对操作控制在瞬间之内作出响应,以便让玩家感受到游戏的风驰电掣,这也是Torque设计的初衷。另外,延迟很大的玩家无法击中高速运动的物体。为了解决这些问题,Torque采用了以下策略:1、插补(interpolation):把物体从客户端指定的地点平滑地移动到服务器指定的地点。2、推断(extrapolation):根据物体的状态和移动的规则猜测物体的移动方向3、预测(prediction):根据移动规则和客户端输入对物体的移动方向作出准确的猜测。网络体系结构分为以下几个层次:最底层是OS/平台层,上面是通知协议层,再上面是NetConnection对象和事件管理层。1.2 Torque引擎包配套的软件Torque引擎的确功能强大,但是,它的许多功能依赖于第三方软件。TorqueGameEngineSDK:这个就是Torque游戏引擎的安装程序,我们所做的工作都是围绕着它来进行的,我们就是靠着它来制作出绚丽多彩的3D游戏的。UltraEdit-32:这个软件应该很熟悉了,它可是个强大的文本编辑工具,用它来编辑Torque引擎脚本是个非常不错的选择。Paint Shop Pro:游戏中形形色色的3D物体都有漂亮的外皮,这个软件就是为3D物体建立纹理外皮的。MilkShape 3D、3Ds MAX:这些软件都是Torque所支持的可以用来建模角色的软件,其中MilkShape 3D是Torque专用的人物建模软件,而后者是当今世面上非常流行的大型建模软件,Torque引擎为后者提供了类型转换的工具,可以轻松的将用3Ds MAX制作的模型导成Torque引擎所支持的模型。我们用的人物建模软件是3DsMax7.0。UVMapper:制作了人物模型后需要为他们穿上漂亮的衣服,这个软件可以针对任何人物模型制作外皮,这里说的外皮和上面的Paint Shop Pro所说的外皮是两个概念,Paint Shop Pro制作出来的外皮又叫材质或纹理,是针对物体的,这种外皮无法穿在人物的身上。而UVMapper制作出来外皮实际上就是人物的皮肤。SoundEdit Pro:用来制作3D音效的。这样看来,要想制作出绚丽的3D游戏,需要学习使用的软件还真不少,不过这也是它的优点之一。1.3 为什么使用torque引擎及安装过程您已经看到,Torque Game Engine功能强大,功能丰富,使用灵活而且易于控制。在本书中我们将要做的事情是制作游戏开发中需要的各种素材,然后编写游戏控制脚本,把这些素材联系成一个整体。所有需要的程序代码、美术作品、声音素材以及制作和编辑这些东西所需要的工具都包含在本书合作站点上。乍一看这也许并不是什么艰难的事情。不过请记住,我们将担任不同的游戏开发角色。所以必须自行制作各种模型(角色、建筑、装饰和地形),录制各种声音特效,把这些东西安排进我们编造的虚拟世界中,然后设计游戏规则并编写脚本实现这些规则。是不是有点难?不会的。因为我们有Torque!从下载安装程序安装时有多种选择,从最简单的安装一直到完全安装。最小化安装只安装Torque Engine的执行部分和一个示例游戏的文件目录,以及相应的脚本。如果只是想安装Torque Game Engine,而不带任何其他文件、额外的实用工具和示例游戏,那么请按如下步骤安装:1)打开Torque文件夹2)找到Setup.exe文件并双击这个文件。3)单击Next按钮进入到Welcome画面。4)单击Next按钮进入Destination画面,接受默认的安装路径。5)在Select Components画面上有一个Full Installation下拉菜单。单击选中该菜单并选择CustomInstallation菜单项。然后单击Next按钮。6)从Components列表中选择Torque,然后单击Next按钮。7)在接下来的画面中都只需要接受默认设置,单击Next按钮就行了。第二章 用Torque引擎开发我们的3D游戏上面我们介绍了torque游戏引擎及相关的软件,说明我们已经做好了编译一个3D游戏的准备了。下面我们介绍3D游戏-tank的制作。2.1 游戏结构分析(文件夹)当创建游戏时,您可以灵活应用各种自己喜欢的组织结构。游戏将包含脚本程序模块、图形文件集、3D模型、音频文件以及其他大量的数据定义模块。对如何组织游戏文件夹结构的惟一限制是必须将根主模块(root main module)和Torque Engine的可执行文件存放于同一个文件夹中,并且这个文件夹将会被作为游戏根文件夹(game root folder)。在组织游戏文件夹的时候,最起码要明确地组织一个用于包含公共代码的游戏文件夹子树,这些代码对于不同的游戏类型和变体在本质上是相同的,而另一个子树则用于包含控制代码和其他适用于某个游戏、某种游戏类型或游戏变体的特殊资源。GarageGames在它的样板游戏中使用了这两个基本的子树,即公共子树和控制子树.那么,公共子树就是creator、show、common部分,属通用部分,而control部分就是控制子树。图2-1给出了一个简单的细目分类图。图2-1游戏文件夹树在我们创建的游戏中,控制子树被命名为control。Torque Script源文件的扩展名是.cs。在源文件被编译后,其扩展名变为.cs.dso。没有办法可以把一个.cs.dso文件再转变回.cs文件,所以您必须把握好您的原始源文件并且有规律地对它们进行备份。当启动torque时,它将会寻找和它位于同一个文件夹下面的main.cs模块。位于同一个游戏根文件夹中的main.cs文件可以被看作是根主模块(root main module)。这种命名方式有利于把 main.cs模块从其他的具有相同名称但不在游戏根文件夹下的模块区分出来。emaga (game root folder)commonclient editor help lighting server ui achecreatordatadebugger editor recording scripts terrain_imports uishow scripts ui game(control) data maps skies terraina shapes player trees crossbow lantens markers bridges towers client scripts ui server scripts其他的main.cs模块相当于游戏中其他包的根模块。尽管没有显式的指明,实际上根主模块的作用就相当于游戏中的根包。2.2 对整个游戏的分析和分工安排周能(组长):负责设计整个游戏框架,分工安排,游戏进程分析,及框架代码,整合游戏代码。使用工具:torque、UltraEdi。黄裴蒂:负责3D游戏建模、开始结束页面,。使用工具:3Dmax7.0、torque。韩国盛:负责地形建模、游戏页面。使用工具:torque。(我):负责游戏音效设计。使用工具:SoundEdit、torque。由于作务安排,下面我将介绍游戏音效的制作与导入。第三章 游戏音频的制作及导入3.1 基本概念3.1.1 基本概念声音是振动的波,是随时间连续变化的物理量。声音有三个重要指标: 振幅(Ampliade)-波的高低幅度,表示声音的强弱。 周期(Period)-两个相邻波之间的时间长度。 频率(Frequency)-每秒钟振动的次数,以Hz为单位。 其中声音信号的两个基本参数是频率和幅度。人们把频率小于20Hz的信号称为亚音信号,或称为次音信号(subsonic);频率范围为20Hz-20kHz的信号称为音频(Audio)信号;虽然人的发音器官发出的声音频率大约是80-3400Hz,但人说话的信号频率通常为300-3000Hz,人们把在这种频率范围的信号称为话音(speech)信号;高于20kHz的信号称为超音频信号,或称超声波(ultrasonic)信号。超音频信号具有很强的方向性,而且可以形成波束,在工业上得到广泛的使用。3.1.2 声音的三要素1)声调-代表声音的高低。音调与频率有关,频率越高,音调越高,反之亦然。2)音色-具有特色的的声音。声音分为纯音和复音两种类型。所谓纯音,是指振幅和周期均为常数的声音;复音则是具有不同频率和不同振幅的混合声音。3)音强-声音的强度,也被称为声音的响度,常说的“音量”也是指音强。音强与声波的振幅成正比,振幅越大,强度越大。3.2数字化声音3.2.1 模拟信号与数字信号1)从模拟信号过渡到数字信号回顾历史,大多数电信号的处理一直是用模拟元部件(如晶体管、变压器、电阻、电容等)对模拟信号进行处理。但是,开发一个具有相当精度、且几乎不受环境变化影响的模拟信号处理元部件是相当困难的,而且成本也很高。如果把模拟信号转变成数字信号,用数字来表示模拟量,对数字信号做计算,那么难点就发生了转移。把开发模拟运算部件的问题转变成开发数字运算部件的问题,这就出现了数字信号处理器(digital signal processor, DSP)。DSP与通用微处理器相比,除了它们的结构不同外,其基本差别是,DSP有能力响应和处理采样模拟信号得到的数据流,如做乘法和累加求和运算。在数字域而不在模拟域中做信号处理的主要优点是:首先,数字信号计算是一种精确的运算方法,它不受时间和环境变化的影响;其次,表示部件的数学运算不是物理上实现的功能部件,而是仅用数学运算去模拟,其中的数学运算也相对容易实现;此外,可以对数字运算不见进行编程,如欲改变算法或改变某些功能,还可对数字部件进行再编程。2)模拟信号与数字信号话音信号是典型的连续信号,不仅在时间上是连续的,而且在幅度上也是连续的。在时间上“连续”是指在一个指定的时间范围里声音信号的幅值有无穷多个,在幅度上“连续”是指幅度的数值有无穷多个。我们把在时间和幅度上都是连续的信号称为模拟信号。在某些特定的时刻对这种模拟信号进行测量叫做采样(sampling),由这些特定时刻采样得到的信号称为离散时间信号。采样得到的幅值是无穷多个实数值中的一个,因此幅度还是连续的。如果把信号幅度取值的数目加以限定,这种由有限个数值组成的信号就称为离散幅度信号。例如,假设输入电压的范围是0.0V-0.7V,并假设它的取值只限定在0,0.1,0.2,0.7共8个值。如果采样得到的幅度值是0.123V,它的取值就应算作0.1V,如果采样得到的幅度值是0.26V,它的取值就算作0.3,这种数值就称为离散数值。我们把时间和幅度都用离散的数字表示的信号就称为数字信号。3.2.2 采样声音采样的基本原理是:首先输入模拟声音信号,然后按照固定的时间间隔截取该信号的振幅值,每个波形周期内截取两次,以取得正、负想的振幅值。该振幅值采用若干位二进制数表示,从而将模拟声音信号变成数字音频信号。模拟声音信号是连续的,而数字音频信号是离散的。截取模拟声音信号振幅值的过程叫做“采样”,得到的振幅值叫做“采样值”,采样值用二进制书的形式表示,该表示形式叫做“量化编码”。1)采样频率采样频率的高低是根据奈奎斯特理论(Nyquist theory)和声音信号本身的最高频率决定的。奈奎斯特理论指出:采样频率不应低于声音信号最高频率的两倍,这样就能把以数字表达的声音还原为原来的声音,这叫做无损数字化(lossless digitization)。你可以这样来理解奈奎斯特理论:声音信号可以看成由许许多多正玄波组成的,一个振幅为A、频率为f的正炫波至少需要两个采样样本表示,因此,如果一个信号中的最高频率为f,采样频率最低要选择2f。例如:电话话音的信号频率约为3.4kHz,采样频率就选为8kHz。2)采样精度样本大小是用每个声音样本的位数(bit/s或b/s)表示的,它反映了度量声音波形幅度的精度。例如,每个声音本用16位(2字节)表示,测得的声音样本值是在0-65536的范围里,它的精度就是输入信号的1/65536。样本位数大小影响到声音的质量,位数越多,声音质量越高,而需要的存储空间也越多;位数越少,声音的质量越低,需要的存储空间越少。3.3 声音文件的存储如同存储文本文件一样,存储声音数据也需要有存储格式。在因特网上和各种机器上运行的声音文件格式很多(如表3-1所示),但目前比较流行的有以下面几种为扩展名的文件格式.wav(waveform),.au(audio),.aiff(audio interchangeable file format)和.snd(sound)。.wav格式主要用在PC上,.au主要用在Unix工作站上,.aiff和.snd主要用在苹果机和美国视算科技有限公司(Silicon Graphics,Inc.,SGI)的工作站上。表3-1 常见的声音文件扩展名文件的扩展名说明.auSun和NEXT公司的声音文件存储格式.aif(Audio Interchange)Apple计算机上的声音文件存储格式.cmf(Creative Music Format)声霸(SB)卡带的MIDI文件存储格式.mctMIDI文件存储格式.mff(MIDI File Format)MIDI文件存储格式.mid(MIDI)Windows的MIDI文件存储格式.mp2(MPEG Layer 2).mp3(MPEG Layer 3)MIDI文件存储格式.rm(RealMedia).ra(RealAudio)RealNetworks公司的流放式声音文件格式.rolAdilb声音卡文件存储格式.snd(sound)Apple计算机上的声音文件存储格式.seg,.sngMIDI文件存储格式.voc(Creative Voice)声霸卡存储的声音文件存储格式.wav(Waveform)Windows采用的波形声音文件存储格式.wrkCakewalk Pro软件彩的MIDI文件存储格式用.wav为扩展名的文件格式(wave file format),它在多媒体变成接口和数据规范1.0(Multimedia Programming Interface and Data Specifications 1.0)文档中有详细的描述。该文档是由IBM和微软公司于1991年8月联合开发的,它是一种为交换多媒体资源而开发的资源交换文件格式(resource interchange file format, RIFF)。波形文件格式支持存储各种采样频率和样本精度的声音数据,并支持声音数据的压缩。波形文件有许多不同类型的文件构造块组成,其中最主要的两个文件构造块是format chunk(格式块)和sound data drunk(声音数据块)。格式块包含有描述波形的重要参数,例如采样频率和样本精度等,声音数据块则包含有实际的波形声音数据。3.4 音频处理软件SoundEdit3.4.1 简介SoundEdit 是一套数位化的音乐编辑软体,由于它简单易懂的界面,和不错的音乐效果与音乐转档功能 (可转档档案包括 MP3, WMA, WAV, Ogg Vorbis 等等),因此非常适合家庭录音型态的工作室或才刚开始从事音乐编辑工作的人员使用。除此之外 ,SoundEdit 还可以直接读取音道轨迹,并且拥有剪接、贴上、移动、删除、淡入淡出、颤音、缓音、标准化、扩张、反转、消音等等编辑功能,加上可支援许多音乐格式(包括 WAV、Windows Media Audio、Ogg Vorbis、AudioTracks、Dialogic VOX、和MP3 ),方便你利用 SoundEdit 制作音乐档案加入网页音乐、PowerPoint内建音效、Flash动态音乐等等,让音乐编辑更简单。3.4.2 调入与保存文件1)调入文件在编辑器界面中,选择“File/open.”菜单,随后指定文件夹和文件名,单击“打开”按钮,音频文件被调入编辑器,显示该文件的波形图。如果该文件是双声道(立体声)的,则波形图有两个,上面是左声道,下面是右声道;若音频文件是单声道的,则波形图只有一个。编辑器状态栏显示该音频文件的采样频率、总时间长度、当前选择区域的时间长度等信息。音频文件被调入编辑器后,若该文件的时间长度较长,将只显示开头一小段声音的波形,通常单击All按钮,显示全部音频波形。这样便于在整段波形中确定某个区域,从而对该区域的波形进行编辑。2)保存文件希望将当前编辑的音频文件保存一个新文件时,选择“ FileSave As”菜单,然后指定文件夹和文件名,选择保存类型(例如.wav格式)和采样频率(在File Attributes对话框中选择),单击“保存”按钮后,编辑完

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论