本
文
摘
要
众所周知对于一个985线歌手兼萨克斯手兼程序员来说,找不到想要的伴奏是一件很让人掉头发的事情。于是我饥渴的目光望向了全民k歌,里面好像啥伴奏都有,就是不能导出。如果到了演出的时候还用手机app放歌,等下断网分分钟让你体验清唱的乐趣。
为了导出全民k歌的伴奏,以前我常使用的方法是,在全民k歌手机app上录一首歌,把人声返听关掉,一边录屏,把录屏得到的视频的音频轨道提取出来。但是这样存在两个问题:一是得到的伴奏音质略低,只有64kbps;二是过程也稍显繁琐,还要手机电脑双线操作。
今天突然意识到全民k歌不是有windows版吗?windows版不就等于,为所欲为?!
----------------太长不看的同学可以直接跳到最下面的总结部分-------------------
首先process monitor可以监控应用程序对本地文件的所有操作,我用它监控到WeSing.exe也就是全民k歌程序,安装后它会随便找一个有空间的磁盘分区,创建一个临时文件目录,例如虽然我全民k歌装在I盘,但它在F盘创建了F:\WeSingCache。
在你点击k歌按钮后:
它去 F:\WeSingCache\WeSingDL\Res 这个路径下创建了一个文件夹,名字看起来是这样的:
一个这种文件夹就对应你要唱的歌,然后下载伴奏到里面:
其中,jpg文件是歌曲封面,note文件是曲谱(用来判断你唱的有没有走调并打分),qrc是歌词,accompany和kongsinger这两个pcm,一个用来存伴奏,一个用来存你唱的内容。
理论上,accompany.pcm就是这首歌的伴奏了,但是由于不知道采样率、编码方式、位深度、编码类型(例如小端存储)等信息,我没办法解码这个PCM文件,试了好久试不出来,只好曲线救国。
我发现,当你把一首歌唱完后,在 F:\WeSingCache\WeSingDL\Temp 目录会生成一个wav文件:
这个文件就是最终录出来的歌。那我是不是只要全程不吭声,然后把人声调到0就可以了?
我就试了一下,结果发现,我全程不吭声,这全民k歌会给我打分到0,然后逼我再唱一次……
于是我想到了刚刚的note文件,用来判断你唱的有没有走调并打分。
找到刚刚这首歌对应的文件夹,把note文件删掉,并创建一个同名文件夹,如下图所示:
这样我们就成功把曲谱替换成空文件夹,我就是唱的再垃圾全民k歌也再不能给我打分了。
关掉录制界面,重新点击k歌,全程不吭声等他放完,然后把人声音量调到0,伴奏音量调到80左右。点击输出到本地。
然后我们就可以在F:\WeSingCache\WeSingDL\Temp找到这个伴奏的wav文件了,把它拷贝出来就行。注意虽然wav是无损伴奏,但是其真实的码率依然取决于全民k歌所下载的原始伴奏文件。
----------------------------------总结一下导出过程------------------------------------
在windows上安装全民k歌,搜索你想唱的歌并点击k歌按钮。在你电脑各个分区找一下是否有WeSingCache这个文件夹找到 WeSingCache\WeSingDL\Res 目录,定位到你刚刚下载的伴奏的文件夹。(虽然名字都是乱码,但是可以通过创建时间判断。如果实在判断不了,可以删掉所有文件夹,然后在全民k歌里面重新下载伴奏。)把目录中的曲谱文件XXXXXX.note删掉,并创建一个跟它同名的文件夹。(注意此处为了显示出文件后缀名,可能需要在windows文件夹选项中开启显示所有文件的后缀名。)重新点击k歌按钮,一声不吭等他播完。把人声音量调到0,伴奏音量调到80,点击保存到本地。在WeSingCache\WeSingDL\Temp找到新创建的wav文件,这个就是伴奏了。对了!伴奏是有版权的!你们自己偷偷唱就好了不可以用在商业目的哦!