GithubHelp home page GithubHelp logo

genshin_audio_banner's Introduction

genshin_audio_banner

这是一个原神语音定向屏蔽工具

  • 食用场景:

    针对觉得吵闹的语音屏蔽掉,不影响其他语音

    当你理解原理之后,也可以用类似方法进行语音替换

  • 食用要求

    你必须懂得计算机操作系统的基本使用,并且知道如何安装Python

前期准备

  • Windows系统

  • 已安装Python3.7及以上

  • Extractor,用于pck文件解压,已经放到depends下面了

  • vgmstream,用于wav文件转码,已经放到depends下面了

    工具及原理参考Bug 侠的文章 https://bugxia.com/2377.html

  • ffmpeg,用于音频文件重采样,已经放到depends下面了

以上工具均为绿色版打包,如果使用异常,请自行寻找你的系统上可用的版本

使用步骤

一、了解原理

  1. pck文件

    pck文件是一种游戏资源打包格式,根据Bug 侠的研究,原神人物对话语音、角色音效都在对应语言(中文、英文等)子目录下的 External0~31.pck(随着游戏更新,文件数量可能会增加),在原神资源路径下搜索External0.pck可以找到这些文件的位置。例如安卓上,中文语音资源路径在sdcard/Android/data/com.miHoYo.GenshinImpact/files/AudioAssets/Chinese

  2. pck与wav的对应关系

    原理参考b站大佬天空薄荷枪的文章 https://www.bilibili.com/read/cv14099028/

    总结就是pck文件是多个wav文件拼起来的,每个wav文件为1条角色语音,而这个wav文件不能直接播放,需要先转码

  3. 要做什么

    需要找到我们想屏蔽的那条语音是第几个pck文件里面的第几条wav,然后在pck文件的对应位置把wav的内容全设置为0,这样游戏就不能解析wav内容,从而达到静音的效果

二、获取要屏蔽的语音位置

由于个人需要,我已经搜集了流浪者的大世界语音,并且记录在了python脚本里面,如果你刚好也只想屏蔽这些,那么恭喜你本章内容不用看了。否则你需要先从pck中解析出wav音频文件,并且找到那条语音

  1. pck文件解压

    先把External0~31.pck文件都放到pck文件夹下,双击打开Extractor工具,选择pck文件(可以多选),点击开始 image

    扫描完成后,点击左下角"反"(全选),然后点击解压,解压到wav文件夹下

  2. wav文件转码

    使用python wav_process.py命令运行转码脚本,将把wav下的音频文件都转码到wavwav文件夹下

  3. 找到目标语音所在的wav

    这个步骤是最难搞的,External0~31.pck解压以后,有接近4万条语音,要想找到某一条语音十分困难,我目前想到的办法只有两种:

    第一,使用语音识别工具把音频转文字然后搜索;

    第二,用音频比对工具,先把目标语音在游戏中内录(记得关闭bgm音量),然后用它作为目标语音,对接近4万条语音进行相似度比对,当相似度达到一定阈值时,确认该条语音与目标一致.

    当然,如果你头铁的话,也可以一条一条人工去听(笑),这种方法也不是完全不可行,如果你的目标语音很短(2秒以内),或者很长(明确知道有几十秒),那么按照时长排序一下,人工去听或许也可以 image

    无论是语音识别还是音频相似度比对,要想在本地运行,对电脑的配置要求都是比较高的,低端配置甚至要跑好几天才能出结果(比如我)。如果你想本地运行,请自行寻找一些免费、开源的语音识别项目或音频相似度比对项目,理论上是可行的,祝大家成功吧 ..

    这里,我只对云端语音识别的方法进行介绍。这种方法原则上是收费的,因为要用到第三方的api,但是新人注册可以白嫖很多很多余额,至少百度跑个一轮是绰绰有余

    • 百度短语音识别:https://ai.baidu.com/tech/speech/asr

      对于部分时长较短的语音,百度识别效果极其糟糕(实测43条语音,有9条识别不出来,而且无论我用正则表达式还是谐音词方式去找,都找不到,后来发现识别的结果和原文风马牛不相及)

    • 有道:https://ai.youdao.com/product-asr.s

      效果比百度好些,而且会比较稳定,这意味着,如果某条语音没识别出来,那么用游戏内录的语音先识别一次(比如"风起"识别成"冯琪"),再去批量识别的文件中搜("冯琪"),大概率是能搜到的

    • 还有腾讯、讯飞等,都有新人赠送额度

    具体步骤就是,先去上述ai平台注册账号,领取新人福利,然后创建短语音识别应用,在应用管理界面中复制API KEY和SECRET KEY,最后复制到python脚本中,然后运行脚本即可(有道和百度的脚本我已经写好了): image
    image
    (有道效果好但是新人赠送的余额很少,我这里过滤了3秒以上的音频,用来给百度那9条漏网之鱼补刀的,但就这还透支了,有一个pck文件没识别完。富哥有钱的话不用考虑这些)

    注意,大部分api都只支持16000或8000采样率的音频,而我们wavwav路径下转码后的wav是48000采样率的,因此识别前需要进行重采样至16000,可直接运行python resample.pywavwav中的音频重采样到resample文件夹下。

    识别完毕后,通过搜索语音文本可以找到文件名称,从而获取pck序号和wav序号。不过由于语音识别不一定完全准确,除了关键词搜索外,也需要一定搜索技巧,例如谐音、正则等: image
    (切,烦心)

    image
    (罪业的报偿 这tm不用正则谁想得到..)

三、屏蔽目标语音

知道了语音在第几个pck、第几个wav之后,就可以使用脚本屏蔽了

  • 确保pck文件放在了pck文件夹下
  • 把脚本的target_dict内容替换成想要屏蔽的语音位置,如下: image
    脚本中现有的target_dict,是截至原神4.6版本安卓端的散兵大世界语音(指角色语音界面能听到的,可在大世界由各种因素触发的语音,不包括闲聊语音和普攻语音)的位置,有相同需求的小伙伴可以不用替换内容直接运行。但不保证不同版本、不同系统、不同设备的目标语音位置相同,请大家自行尝试
  • 执行python ban.py,屏蔽后的pck将会输出到pck-out文件夹下
  • pck-out下的pck,原封不动复制回游戏资源路径下,覆盖原文件

重新启动游戏,这个时候语音应该已经屏蔽成功了

genshin_audio_banner's People

Contributors

suroot66 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.