fix voice extraction

This commit is contained in:
elliotcraft79 2021-03-06 01:44:31 +10:30
parent a6a408b97f
commit 49df60562a
3 changed files with 122 additions and 7 deletions

102
package-lock.json generated
View file

@ -4208,6 +4208,28 @@
"isarray": "^1.0.0"
}
},
"buffer-alloc": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
"integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
"dev": true,
"requires": {
"buffer-alloc-unsafe": "^1.1.0",
"buffer-fill": "^1.0.0"
}
},
"buffer-alloc-unsafe": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
"dev": true
},
"buffer-fill": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
"integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
"dev": true
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@ -15770,6 +15792,32 @@
}
}
},
"stream-parser": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz",
"integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=",
"dev": true,
"requires": {
"debug": "2"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
}
}
},
"stream-shift": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
@ -17098,6 +17146,60 @@
}
}
},
"wav": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wav/-/wav-1.0.2.tgz",
"integrity": "sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==",
"dev": true,
"requires": {
"buffer-alloc": "^1.1.0",
"buffer-from": "^1.0.0",
"debug": "^2.2.0",
"readable-stream": "^1.1.14",
"stream-parser": "^0.3.1"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
"dev": true
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"readable-stream": {
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
"isarray": "0.0.1",
"string_decoder": "~0.10.x"
}
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
"dev": true
}
}
},
"wbuf": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",

View file

@ -46,6 +46,7 @@
},
"homepage": ".",
"devDependencies": {
"eslint-loader": "^4.0.2"
"eslint-loader": "^4.0.2",
"wav": "^1.0.2"
}
}

View file

@ -1,6 +1,6 @@
import { FileWriter } from "wav";
import { execSync } from "child_process";
import { readFileSync, existsSync, mkdirSync } from "fs";
import { readFileSync, existsSync, mkdirSync, writeFileSync } from "fs";
import { join } from "path";
export function extract_voice(tempdir, jpsxdec_jar, disc1_index) {
@ -8,18 +8,30 @@ export function extract_voice(tempdir, jpsxdec_jar, disc1_index) {
`java -jar ${jpsxdec_jar} -x "${disc1_index}" -i VOICE.BIN -dir "${tempdir}"`,
{ stdio: "inherit" }
);
const voice_files = JSON.parse(readFileSync('voice.json'))
const voice_files = JSON.parse(readFileSync("voice.json"));
let voice_data = readFileSync(join(tempdir, "VOICE.BIN"));
let output_folder = join("..", "..", "src", "static", "voice");
if(!existsSync(output_folder)) {
if (!existsSync(output_folder)) {
mkdirSync(output_folder);
}
for (let voice_file of voice_files) {
let path = join(output_folder, voice_file.translated_name);
let wav_file = new FileWriter(path, {sampleRate: 22050, channels:1, bitDepth: 16});
wav_file.write(voice_data.slice(voice_file.offset, voice_file.offset + voice_file.size));
wav_file.end();
let data = voice_data.slice(
voice_file.offset,
voice_file.offset + voice_file.size
);
if (["BYA.WAV", "BYO.WAV", "BYU.WAV"].includes(voice_file.original_name)) {
writeFileSync(path, data);
} else {
let wav_file = new FileWriter(path, {
sampleRate: 22050,
channels: 1,
bitDepth: 16,
});
wav_file.write(data);
wav_file.end();
}
}
}