关于游戏音效解决方案的调研分析

背景

偶然机会看到一篇关于介绍腾讯多媒体实验室与知名游戏音效工程公司Audiokinetic Wwise联合推出游戏音效解决方案的文章,于是想了解一下关于游戏音效相关的技术,于是整理了这篇文章供以后参考学习。文章名字【腾讯多媒体实验室于Audiokinetic Wwise展示游戏语音方案】。

引子

腾讯多媒体实验室受邀参加Audiokinetic Wwise全球巡演会,展示游戏语音和音频解决方案:游戏多媒体引擎(GME)。该解决方案由腾讯云GME团队、腾讯多媒体实验室和Audiokinetic联合打造,面向游戏开发者提供游戏内语音通信服务,提供端到端、低延迟、高质量、高稳定、可弹性扩容、性价比高的游戏语音通信服务,接入门槛低,可帮助游戏开发者在多种游戏场景下快速搭建实时语音服务,助力游戏社交化。

据说腾讯在巡演会上展示了GME 的demo 后,各大知名游戏工作室如Tango gameworks、XFLAG、Super Trick Games、Noisycroak等在体验后均表示了合作兴趣。

Tango Gameworks 是一家日本游戏开发公司,创始人三上真司。Tango gameworks公司开发制作过一款生存恐怖类游戏,并于2014年10月14日正式发行,《恶灵附身》原作名(psycho break,the evil within)也叫邪恶深处,邪灵入侵。
XFLAG:北京超旗网络信息技术有限公司,是移动游戏发行与运营服务商,公司聚焦在移动端游戏娱乐平台,向用户提供基于面对面社交为基础的移动游戏。
Super Trick Games, 没有查到。
Noisycroak是东京的一名游戏声音设计公司为代表的电子游戏音乐作曲家Hideki坂本。著名的作品包括预计日本工作室Echochrome配乐和世嘉娱乐视野的山口组2乐谱。

GME引擎解决方案介绍

支持3D 音效

GME SDK 文档中提到采用了 HRTF 及 3D 空间处理技术以及针对距离的 EQ 补偿技术,建立人耳获取声音模型,将无方位感的声音处理成
带有声源方位感的声音,从而虚拟出空间中任意位置的声源对人耳造成的感觉。

HRTF是Head Related Transfer Function的缩写,HRTF英文全名为Head Related Transfer Function,这是一种声音定位的处理技术,其原理非常复杂,由于声音会从耳廓、或肩膀反射到人耳内部,于是当我们用两个音箱模拟声音定位时,可以利用HD ITD的运算方式,来计算不同方向或位置声音所产生的大小和音调等,进而制造出立体空间声音定位的效果。 可以理解为头相关变换函数,是一种音效定位算法,对应时域的HRIR,头相关冲击响应。说起HRTF就要说到binaural recording技术。
人有两个耳朵,却能定位来自三维空间的声音,这得力于人耳对声音信号的分析系统。HRTF可以分解为三部分,Interaural Time Difference,Interaural Level Difference及Spectral Cues。从空间任意一点传到人耳(鼓膜前)的信号都可以用一个滤波系统来描述,音源+滤波器得到的就是两耳鼓膜前的声音信号。这个传输系统是一个黑盒子,我们不必关心声音是如何传递到双耳的,而只需关心音源和双耳信号的差别。如果我们得到这组描述空间信息的滤波器(传递函数),即HRTF,就能还原来自空间这个方位的声音信号(如通过双声道耳机)。如果我们有空间所有方位到双耳的滤波器组,就能得到一个滤波矩阵,从而还原来自整个空间方位的声音信号。但是一个严峻的问题是,HRTF是高度个人化的,在实验室测得每个人的函数组是不现实的。因此,HRTF技术就致力于研究如何方便的真实还原个人化的空间函数。这也是virtual reality(虚拟现实技术)希望达到的目标。
简单说这就是个头部反应传送函数(Head-Response Transfer Function)。要具体点呢,可以分成几个主要的步骤来描述其功用。 第一步:制作一个头部模型并安装一支麦克风到耳膜的位置; 第二步:从固定的位置发出一些声音; 第三步:分析从麦克风中得到声音并得出被模型所改变的具体数据; 第四步:设计一个音频过滤器来模仿那个效果; 第五步:当你需要模仿某个位置所发出的声音的时候就使用上述过滤器来模仿即可。 过滤器的回应就被认为是一个HRTF,你需要为每个可能存在声源的地方来设置一个HRTF。其实我们并不需要无限多个HRTF。这里的原因也很简单,我们的大脑并不能如此精确。对于从我们的头部为原点的半球形表面上大约分布1000个这样的函数就足够了,而另一半应该是对称的。至于距离感应该由回响、响度等数据变化来实现。
另外HRTF除了使用HD ITD两种技术之外,还利用制作假人头拾音的技术,以推算出立体声音环绕模型,于是可以取得比HD ITD更好的声音效果。

GME支持Unreal 引擎 和 Cocos 引擎

  • 虚幻引擎(英語:Unreal Engine)是一款由Epic Games开发的遊戲引擎。该引擎主要是为了开发第一人称射击游戏而设计,但现在已经被成功地应用于开发潜行类游戏、格斗游戏、角色扮演游戏等多种不同类型的游戏。
  • Cocos是由触控科技推出的游戏开发一站式解决方案!游戏从创意、开发、测试、上线都有一个完整的流程,触控科技从产品设计角度直接用清晰的脉络把上面提到的这些工具、服务进行了整合,形成最短、最清晰的工作流。这个整合后的产品就是现在的cocos。原本cocos引擎家族所有独立产品,如Cocos2d-x引擎框架,Cocos Studio界面编辑器、Cocos Code IDE代码调试打包工具等,如今都统一在cocos里,里面包含了从新建立项、游戏制作、到打包上线的全套流程。Cocos覆盖整个手游制作的完整流程,重新定义了无缝的工作流,让游戏开发铁三角策划-美术-程序能够在这套cocos工具上更好地协同工作。最大程度提高开发者的工作效率。开发者可以通过cocos快速编辑资源和动作、编写和调试代码、集成商业服务的SDK、打包输出,最终导出适合于各个平台、各渠道发布的游戏安装包。

Moba 场景下语音延迟,小队语音延迟更低

MOBA(Multiplayer Online Battle Arena)中文译为多人在线战术竞技游戏。Multiplayer online battle arena(MOBA),也被称为Action real-time strategy(Action RTS,ARTS)。

语音消息及转文本服务

开源语音识别项目

DeepSpeech 项目

该项目由 Firefox 浏览器的开发组织 Mozilla 团队开发。它是 100% 的自由开源软件,其名字暗示使用了 TensorFlow 机器学习框架实现去功能。换句话说,你可以用它训练自己的模型获得更好的效果,甚至可以用它来转换其它的语言。你也可以轻松的将它集成到自己的 Tensorflow 机器学习项目中。可惜的是项目当前默认仅支持英语。它也支持许多编程语言,例如 Python(3.6)。可以让你在数秒之内完成工作。

项目地址:https://github.com/mozilla/DeepSpeech

Kaldi

Kaldi is a toolkit for speech recognition written in C++ and licensed under the Apache License v2.0。
Kaldi is intended for use by speech recognition researchers.
Kaldi 是一个用 C++ 编写的开源语音识别软件,并且在 Apache 公共许可证下发布。它可以运行在 Windows、macOS 和 Linux 上。它的开发始于 2009。
Kaldi 超过其他语音识别软件的主要特点是可扩展和模块化。社区提供了大量的可以用来完成你的任务的第三方模块。Kaldi 也支持深度神经网络,并且在它的网站上提供了 出色的文档 。
虽然代码主要由 C++ 完成,但它通过 Bash 和 Python 脚本进行了封装。因此,如果你仅仅想使用基本的语音到文字转换功能,你就会发现通过 Python 或 Bash 能够轻易的实现。

项目地址:http://kaldi-asr.org/

Julius

Julius 的主要特点包括了执行实时 STT 的能力,低内存占用(20000 单词少于 64 MB),能够输出 最优词(N-best word)和 词图(Word-graph),能够作为服务器单元运行等等。这款软件主要为学术和研究所设计。由 C 语言写成,并且可以运行在 Linux、Windows、macOS 甚至 Android(在智能手机上)。它当前仅支持英语和日语。软件应该能够从 Linux 发行版的仓库中轻松安装。只要在软件包管理器中搜索 julius 即可。

项目地址:https://github.com/julius-speech/julius

Wav2Letter++

如果你在寻找一个更加时髦的,那么这款一定适合。Wav2Letter++ 是一款由 Facebook 的 AI 研究团队于 2 个月之前发布的开源语言识别软件。代码在 BSD 许可证下发布。Facebook 描述它的库是“最快、 最先进(state-of-the-art)的语音识别系统”。构建它时的理念使其默认针对性能进行了优化。Facebook 最新的机器学习库 FlashLight 也被用作 Wav2Letter++ 的底层核心。
Wav2Letter++ 需要你先为所描述的语言建立一个模型来训练算法。没有任何一种语言(包括英语)的预训练模型,它仅仅是个机器学习驱动的文本语音转换工具,它用 C++ 写成,因此被命名为 Wav2Letter++。

项目地址:https://github.com/facebookresearch/wav2letter

DeepSpeech2

中国软件巨头百度的研究人员也在开发他们自己的语音文字转换引擎,叫做“DeepSpeech2”。它是一个端对端的开源引擎,使用“PaddlePaddle”深度学习框架进行英语或汉语的文字转换。代码在 BSD 许可证下发布。该引擎可以在你想用的任何模型和任何语言上训练。模型并未随代码一同发布。你要像其他软件那样自己建立模型。DeepSpeech2 的源代码由 Python 写成,如果你使用过就会非常容易上手。

项目地址:https://github.com/PaddlePaddle/DeepSpeech

百度语音识别库

解决方案:
调用第三方百度的语音识别api进行语音识别

步骤:
1)安装百度提供的Python库:pip install baidu-aip
2)运行以下代码:

from aip import AipSpeech
APP_ID = '160'
API_KEY = 'f6XVtm'
SECRET_KEY = 'zbvyYC'
# 百度AI库获取的参数
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

# 构造读取语音文件函数
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()

# 识别本地文件  主函数
result = client.asr(get_file_content(r'F:\PythonFiles\PycharmFile\16k.pcm'), 'pcm', 16000, { 'lan': 'zh',})
#此处地址处必须要加r,使其成为绝对地址,要么容易字符转义出现错误
print(result)

1)百度AI云平台地址:https://ai.baidu.com/
2)进入后添加应用,获取相应的接口ID和密钥(上文提到的三个参数)
3)该接口只支持pcm、wav和amr格式音频

科大讯飞语音识别示例

科大讯飞语音识别技术,支持英文,中文,方言等。识别效率十分迅速,而且准确率官网能够达到97%以上。在使用过程中,也确实发现,可以商用,或者利用其API进行开发。使用场景,包含英语学习,单词朗读,语音评测等。
具体参考:https://blog.csdn.net/Xoxo_x/article/details/56528665


文章作者: YUV420.COM
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 YUV420.COM !
评论
 上一篇
QT中如何打开网络链接 QT中如何打开网络链接
背景自己的QT程序中想加入网络链接,当用户点击链接跳转到浏览器打开。 调研QtWebEngineQtWebEngine模块提供了一个Web浏览器引擎,可以方便地在没有本地Web引擎的平台上将来自万维网的内容嵌入到Qt应用程序中。QtWebE
2020-01-13
下一篇 
关于OpenGL ES移植相关问题汇总 关于OpenGL ES移植相关问题汇总
背景OpenGL ES 构建的Android版本程序移植到PC端QT架构。 问题汇总shader版本问题shader的版本需要在shader代码中显式设置。 添加: “#version 100\n”或者 “#version 33
2020-01-09
  目录