分享一个脚本,可以根据 json 按照文件夹分类,音频可用 Wwise-Unpacker 提取
Erythrocyte3803 opened this issue · comments
汉语/日语/英语/韩语 都可以用这个分类
要用这个版本的Wwise-Unpacker:Wwise-Unpacker
import json
from shutil import move
import os
import tqdm as tq
import glob
# ===============路径设置===============
source = "C:/临时数据集/dest_wav" # 输入目录
dist = 'C:/临时数据集/output' # 输出目录
genshin = 'C:/临时数据集/result.json' # 配套json
# ======================================
files = glob.glob(os.path.join(source, "*.wav"))
f = open(genshin, encoding='utf8')
data = json.load(f)
for wav in tq.tqdm(files):
file = str(wav).replace(".wav", "")
file_hash = os.path.basename(file)
try:
path = data.get(file_hash).get('fileName')
except Exception as e:
pass
wav_file = path.replace(".wem", ".wav")
wav_path = dist + "/" + os.path.dirname(wav_file)
wav_path = wav_path.replace("\\", "/")
dist_file = dist + '/' + wav_file
dist_file = dist_file.replace("\\", "/")
if not os.path.exists(wav_path):
os.makedirs(wav_path)
else:
move(wav, dist_file)
大佬,你这Json中文倒是没问题;但是英文一个都对不上啊。。。
不知道是不是我用的方式有问题。。要不您也检查检查?
大佬,你这Json中文倒是没问题;但是英文一个都对不上啊。。。
不知道是不是我用的方式有问题。。要不您也检查检查?
有自行提取过英语语音吗
// 前面内容过长,就不引用了。
路径改了,我转中文语音的时候,一样的操作方法,中文是成功的。
日文我也跑了一遍,没报错,输出文件看上去应该也没问题(没仔细检查),不知道英文是怎么回事。
我又重新提取下英文语音,试了前几个文件,还是报一样的错误。
都应该在StreamingAssets下的,Persistent下的不对
的确就是这样分类的,我上传也是一样,你们就这么做好了,我懒得传
我用wwise解包出来的wav文件 我看命名都是pck的名字+一个序列数字这样的啊 而不是json里的那个key值,是还有什么操作我没做么?大佬能问下你是怎么解pck的么?
我用wwise解包出来的wav文件 我看命名都是pck的名字+一个序列数字这样的啊 而不是json里的那个key值,是还有什么操作我没做么?大佬能问下你是怎么解pck的么?
不应该啊
我用wwise解包出来的wav文件 我看命名都是pck的名字+一个序列数字这样的啊 而不是json里的那个key值,是还有什么操作我没做么?大佬能问下你是怎么解pck的么?
应该是工具不对,在Github重新下载
我用wwise解包出来的wav文件 我看命名都是pck的名字+一个序列数字这样的啊 而不是json里的那个key值,是还有什么操作我没做么?大佬能问下你是怎么解pck的么?
不应该啊
没问题了 github第一个搜到的主分支只能转ogg和MP3,那个不行,后面找到一个fork的可以直接转换出wav的就可以了
的确就是这样分类的,我上传也是一样,你们就这么做好了,我懒得传
请问大佬,现在这个版本的json是否是最新的呢?我今天提取的英语语音无法与json文件中的匹配
的确就是这样分类的,我上传也是一样,你们就这么做好了,我懒得传
请问大佬,现在这个版本的json是否是最新的呢?我今天提取的英语语音无法与json文件中的匹配
我也提不出英文的,日文中文都行
我也来分享一个脚本吧,可以把wav文件保存为按照 角色名/文本保存的形式,例如save_path/九条裟罗/为将军大人实现「永恒」,这就是我的「愿望」。.wav
from tqdm import tqdm
import json
import glob
import os
import shutil
def mkdir(path):
folder = os.path.exists(path)
if not folder: #判断是否存在文件夹如果不存在则创建为文件夹
os.makedirs(path) #makedirs 创建文件时如果路径不存在会创建这个路径
print("--- new folder... ---",path)
print( "--- OK ---")
def get_save_path(save_path,wav_name):
'''
input: wav名,例如0000f9f7ada1c623
output: 保存路径,例如save_path/九条裟罗/为将军大人实现「永恒」,这就是我的「愿望」。.wav
'''
wav_json = result[wav_name]
npcName = result[wav_name]['npcName']
text = result[wav_name]['text']
mkdir(f"{save_path}/{npcName}")
return f"{save_path}/{npcName}/{text}.wav"
save_path = './genshin_audio/'
dest_wav = r"E:\so_vits_svc\音频提取工具\Wwise-Unpacker-master\dest_wav"
json_path = './result.json'
with open(json_path ) as f:
result = f.read()
result = eval(result)
wav_list = os.listdir(dest_wav)
for wav in tqdm(wav_list):
wav_name = wav.split('.')[0]
read_ = f"{dest_wav}\{wav}"
try:
save_ = get_save_path(save_path,wav_name)
shutil.move(read_, save_)
except:
continue
import json from shutil import move import os import tqdm as tq import glob # ===============路径设置=============== source = "C:/临时数据集/dest_wav" # 输入目录 dist = 'C:/临时数据集/output' # 输出目录 genshin = 'C:/临时数据集/result.json' # 配套json # ====================================== files = glob.glob(os.path.join(source, "*.wav")) f = open(genshin, encoding='utf8') data = json.load(f) for wav in tq.tqdm(files): file = str(wav).replace(".wav", "") file_hash = os.path.basename(file) try: path = data.get(file_hash).get('fileName') except Exception as e: pass wav_file = path.replace(".wem", ".wav") wav_path = dist + "/" + os.path.dirname(wav_file) wav_path = wav_path.replace("\\", "/") dist_file = dist + '/' + wav_file dist_file = dist_file.replace("\\", "/") if not os.path.exists(wav_path): os.makedirs(wav_path) else: move(wav, dist_file)
Traceback (most recent call last):
File "c:\Wwise-Unpacker-1.3\1.0.py", line 32, in
result = eval(result)
OverflowError: line number table is too long
兄弟,运行到这步出错了,怎么整
json文件怎么获取啊,解包工具解出来没有json呢