Add extract.py step to extract voices from streamwaves/streamvoice
This commit is contained in:
parent
5a534bfcfa
commit
e8a9179760
2 changed files with 29 additions and 2 deletions
|
@ -35,6 +35,7 @@ steps = {
|
||||||
"extract_modules": True,
|
"extract_modules": True,
|
||||||
"extract_dialog": True,
|
"extract_dialog": True,
|
||||||
"extract_textures": True,
|
"extract_textures": True,
|
||||||
|
"extract_voices": True,
|
||||||
"convert_to_json": False,
|
"convert_to_json": False,
|
||||||
"convert_to_tga": False,
|
"convert_to_tga": False,
|
||||||
"convert_to_ascii_pth": False,
|
"convert_to_ascii_pth": False,
|
||||||
|
@ -139,6 +140,28 @@ def extract_dialog(game_dir, extract_dir):
|
||||||
except PermissionError:
|
except PermissionError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def extract_voices(game_dir, extract_dir):
|
||||||
|
# Create destination directory if it does not exist
|
||||||
|
dest_dir = os.path.join(extract_dir, "voices")
|
||||||
|
if not os.path.exists(dest_dir):
|
||||||
|
os.mkdir(dest_dir)
|
||||||
|
|
||||||
|
# Extract audio files from streamwaves/streamvoice
|
||||||
|
voices_dir = os.path.join(game_dir, "streamwaves")
|
||||||
|
if not os.path.exists(voices_dir):
|
||||||
|
voices_dir = os.path.join(game_dir, "streamvoice")
|
||||||
|
if os.path.exists(voices_dir):
|
||||||
|
for f in glob.glob("{}/**".format(voices_dir), recursive=True):
|
||||||
|
_, extension = os.path.splitext(f)
|
||||||
|
if extension == ".wav":
|
||||||
|
unwrapped_path = os.path.join(dest_dir, os.path.basename(f))
|
||||||
|
try:
|
||||||
|
shutil.copyfile(f, unwrapped_path)
|
||||||
|
except PermissionError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def convert_to_json(extract_dir):
|
def convert_to_json(extract_dir):
|
||||||
CONVERTIBLE_EXT = [
|
CONVERTIBLE_EXT = [
|
||||||
".2da",
|
".2da",
|
||||||
|
@ -156,6 +179,7 @@ def convert_to_json(extract_dir):
|
||||||
print("Converting {} to JSON...".format(f))
|
print("Converting {} to JSON...".format(f))
|
||||||
run_subprocess(["reone-tools", "--to-json", f])
|
run_subprocess(["reone-tools", "--to-json", f])
|
||||||
|
|
||||||
|
|
||||||
def convert_to_tga(extract_dir):
|
def convert_to_tga(extract_dir):
|
||||||
for f in glob.glob("{}/**/*.tpc".format(extract_dir), recursive=True):
|
for f in glob.glob("{}/**/*.tpc".format(extract_dir), recursive=True):
|
||||||
filename, _ = os.path.splitext(f)
|
filename, _ = os.path.splitext(f)
|
||||||
|
@ -199,6 +223,9 @@ if steps["extract_textures"]:
|
||||||
if steps["extract_dialog"]:
|
if steps["extract_dialog"]:
|
||||||
extract_dialog(game_dir, extract_dir)
|
extract_dialog(game_dir, extract_dir)
|
||||||
|
|
||||||
|
if steps["extract_voices"]:
|
||||||
|
extract_voices(game_dir, extract_dir)
|
||||||
|
|
||||||
if steps["convert_to_json"]:
|
if steps["convert_to_json"]:
|
||||||
convert_to_json(extract_dir)
|
convert_to_json(extract_dir)
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ if not os.path.exists(wav_dir):
|
||||||
raise RuntimeError("WAV directory does not exist")
|
raise RuntimeError("WAV directory does not exist")
|
||||||
|
|
||||||
|
|
||||||
def is_suitable_text(text):
|
def is_trainable_text(text):
|
||||||
return not (text.startswith("[") and text.endswith("]"))
|
return not (text.startswith("[") and text.endswith("]"))
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ def get_lines_from_dlg(obj, speaker, tlk_strings):
|
||||||
textstrref = int(entry["Text|12"].split("|")[0])
|
textstrref = int(entry["Text|12"].split("|")[0])
|
||||||
if textstrref != -1:
|
if textstrref != -1:
|
||||||
text = tlk_strings[textstrref][1]
|
text = tlk_strings[textstrref][1]
|
||||||
if voresref and (not voresref in uniq_sound) and is_suitable_text(text):
|
if voresref and (not voresref in uniq_sound) and is_trainable_text(text):
|
||||||
wav_filename = os.path.join(wav_dir, voresref + ".wav")
|
wav_filename = os.path.join(wav_dir, voresref + ".wav")
|
||||||
if os.path.exists(wav_filename):
|
if os.path.exists(wav_filename):
|
||||||
lines.append("{}|{}|0\n".format(wav_filename, clear_text(text)))
|
lines.append("{}|{}|0\n".format(wav_filename, clear_text(text)))
|
||||||
|
|
Loading…
Reference in a new issue