如何打造北半球第二好用的语言包

洒家好久不写博客,最近从垃圾堆里翻出博客代码,修整一番。语音包是很久之前做出来的,最近没有队友不怎么打游戏,这里只是写篇娱乐文章刷一下存在感。

介绍

用到的设备和部分软件

效果展示

用另一台设备可以控制打游戏的电脑播放语音包。接收端打开接收页面,发送端打开发送页面。进入游戏,发送端点击方块发送任意语音,接收页面就会立即播放这条语音,在游戏中按语音键就可以将其发出。

可以达到以下效果:

接收端:

receiver

发送端:

sender

竞品缺点分析

这一套方案对比现有的其他语音包方案有明显的优势。现有的语音包方案有:

很明显,以上方案各有缺点:

针对以上缺点,洒家必须自己搞一个语音包。

开始搞事

收集素材

从网络上可以轻松下载各种语音包,例如李云龙、卢本伟、二次元、守望先锋等语音包。这些语音质量不完美,数量较少,因此还需要自己录一些语音。

在 bilibili 搜索录播视频,先看弹幕列表了解精彩言论的大致位置。跳过去听一听然后记录下值得保存的语音的时刻。

record

搞一个录音软件,集中录下来。此处使用 macOS 版 Audio Hijack。

record

简单的剪辑一下原始音频文件,去掉开头和结尾的空白部分。此处使用 macOS 版 QuickTime Player 内置的剪辑功能。

cut

统一音量

无论从网上下载还是自己录音,得到的音频文件的音量往往有很大差距,必须把音量标准化。

洒家用 Matlab 写程序处理了一番,规定一个标准音频文件,将其他所有音频文件音量标准化。洒家实验了很多思路,考虑过等响度曲线,用过傅里叶变换,最后采用了一种简单的思路。提取音频文件的振幅,求绝对值,排序,取最大的 formula 部分振幅的平均振幅,以此参数为标准进行标准化。经过测试,这种方法还不够完美,但是已经够用了。

matlab

写 Web 代码

使用 PHPwebsocket, docker 一顿操作搞出一个网站。上文有截图。

Sender 通过 websocket 传输要发送的语音的 URLwebsocket server 会把收到的消息转发给所有 Receiver。每一个 Receiver 在打开时会随机生成一个 Client code,并生成包含此 Client code 的二维码。Receiver 只对包含此 code 的消息做出响应。打开 Sender 时需要输入 Client code,从而只控制对应的 Receiver,同时不影响其他 Receiver。(此处不考虑消息重放)

按类别和场景,音频文件分成多个部分,方便快速定位语音。在实践上,一般把这套系统部署到局域网的 Web Server 或者电脑虚拟机中,以减少延迟。

Windows 版内录软件

洒家用的是 VB-Audio 做的内录虚拟声卡 Virtual Audio Cable 和虚拟混音器 Voicemeeter 两个软件。不同的设备的设置和需要的组件可能不同,洒家的配置如下。

为了达到效果,音频信号的流动方向应该是:

matlab

按照这个思路,配置 Voicemeeter。(洒家的电脑有 bug,配置略有不同)

matlab

在游戏中设置默认输入和输出设备。同时设置系统默认输入输出设备,作为浏览器的配置。

matlab

matlab

设置完成后打开发送端和接收端,就可以进入游戏发语音包了。

游戏中放语言包的效果和经验

一般放语言包的目的有:

卢本伟

洒家经常放卢本伟的语音。效果最好的时候,整局游戏中队友都以为自己遇到了卢本伟(笑)。被识破了之后,所有人也都在说这个语音包太牛 X 了。效果最好的语音有:当时就是那个骂人的事情嘛,我得先去反省一下 等,还有连环语音 这是这 10 年以来第二款惹我生气的游戏第一款游戏叫英雄联盟,以及超级骂人语音。每次总能遇到不一样的队友做出不一样的反应。有一次我遇到了卢本伟的资深粉丝,我发的每一句语音他都知道出自哪里。(难道是同行?)

有时候也可以放李云龙的语音指挥队友,效果最好的时候,一群队友问我 李团长,怎么打。李云龙语音包的主要问题是语音数量太少,战术指挥的时候不够用。

经验

总结

一顿操作之后,算下来打游戏的时间还没有做语音包的时间长(笑)。

学业繁忙,告辞


Comments

您可以匿名发表评论,无需登录 Disqus 账号,勾选“我更想匿名评论”后,姓名和电子邮件分别填写“匿名”和“someone@example.com”然后发表评论即可。您也可以登录 Disqus 账号后发表评论。您的评论可能需要经过我审核后才能显示。点赞投票按钮(Reactions)无需登录即可点击。Disqus 评论系统在中国大陆可能无法正常加载和使用。

License

Creative Commons License

本作品采用知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议CC BY-NC-ND 4.0)进行许可。

This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License (CC BY-NC-ND 4.0).

Top