@storyteller-platform/align 0.1.56 → 0.1.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/align/align.cjs +38 -19
- package/dist/align/align.d.cts +12 -1
- package/dist/align/align.d.ts +12 -1
- package/dist/align/align.js +38 -19
- package/dist/align/ctc/Aligner.cjs +800 -0
- package/dist/align/ctc/Aligner.d.cts +56 -0
- package/dist/align/ctc/Aligner.d.ts +56 -0
- package/dist/align/ctc/Aligner.js +789 -0
- package/dist/align/ctc/align.cjs +189 -0
- package/dist/align/ctc/align.d.cts +14 -0
- package/dist/align/ctc/align.d.ts +14 -0
- package/dist/align/ctc/align.js +132 -0
- package/dist/{process/mime.cjs → align/ctc/emissions.cjs} +7 -20
- package/dist/align/ctc/emissions.d.cts +6 -0
- package/dist/align/ctc/emissions.d.ts +6 -0
- package/dist/align/ctc/emissions.js +7 -0
- package/dist/align/ctc/forcedAlign.cjs +273 -0
- package/dist/align/ctc/forcedAlign.d.cts +21 -0
- package/dist/align/ctc/forcedAlign.d.ts +21 -0
- package/dist/align/ctc/forcedAlign.js +248 -0
- package/dist/align/ctc/greedyDecode.cjs +61 -0
- package/dist/align/ctc/greedyDecode.d.cts +15 -0
- package/dist/align/ctc/greedyDecode.d.ts +15 -0
- package/dist/align/ctc/greedyDecode.js +37 -0
- package/dist/align/ctc/mediaOverlay.cjs +248 -0
- package/dist/align/ctc/mediaOverlay.d.cts +16 -0
- package/dist/align/ctc/mediaOverlay.d.ts +16 -0
- package/dist/align/ctc/mediaOverlay.js +224 -0
- package/dist/align/ctc/report.cjs +66 -0
- package/dist/align/ctc/report.d.cts +79 -0
- package/dist/align/ctc/report.d.ts +79 -0
- package/dist/align/ctc/report.js +42 -0
- package/dist/align/ctc/search.cjs +437 -0
- package/dist/align/ctc/search.d.cts +46 -0
- package/dist/align/ctc/search.d.ts +46 -0
- package/dist/align/ctc/search.js +412 -0
- package/dist/align/getSentenceRanges.cjs +9 -3
- package/dist/align/getSentenceRanges.d.cts +1 -0
- package/dist/align/getSentenceRanges.d.ts +1 -0
- package/dist/align/getSentenceRanges.js +9 -3
- package/dist/align/parse.cjs +17 -4
- package/dist/align/parse.d.cts +8 -4
- package/dist/align/parse.d.ts +8 -4
- package/dist/align/parse.js +19 -4
- package/dist/align/search.cjs +76 -23
- package/dist/align/search.d.cts +8 -4
- package/dist/align/search.d.ts +8 -4
- package/dist/align/search.js +76 -24
- package/dist/align/slugify.cjs +3 -2
- package/dist/align/slugify.d.cts +1 -1
- package/dist/align/slugify.d.ts +1 -1
- package/dist/align/slugify.js +3 -2
- package/dist/cli/bin.cjs +204 -114
- package/dist/cli/bin.js +194 -103
- package/dist/common/ffmpeg.cjs +10 -5
- package/dist/common/ffmpeg.js +10 -5
- package/dist/common/logging.cjs +33 -1
- package/dist/common/logging.js +33 -1
- package/dist/emit/emit.cjs +105 -0
- package/dist/emit/emit.d.cts +15 -0
- package/dist/emit/emit.d.ts +15 -0
- package/dist/emit/emit.js +86 -0
- package/dist/emit/fs.cjs +227 -0
- package/dist/emit/fs.d.cts +22 -0
- package/dist/emit/fs.d.ts +22 -0
- package/dist/emit/fs.js +162 -0
- package/dist/emit/parse.cjs +68 -0
- package/dist/emit/parse.d.cts +26 -0
- package/dist/emit/parse.d.ts +26 -0
- package/dist/emit/parse.js +58 -0
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/markup/model.cjs +0 -16
- package/dist/markup/model.d.cts +1 -1
- package/dist/markup/model.d.ts +1 -1
- package/dist/markup/model.js +0 -12
- package/dist/markup/parseDom.cjs +13 -14
- package/dist/markup/parseDom.d.cts +2 -2
- package/dist/markup/parseDom.d.ts +2 -2
- package/dist/markup/parseDom.js +13 -18
- package/dist/markup/resolvedPos.d.cts +1 -1
- package/dist/markup/resolvedPos.d.ts +1 -1
- package/dist/markup/segmentation.cjs +3 -1
- package/dist/markup/segmentation.js +3 -1
- package/dist/markup/serializeDom.cjs +1 -1
- package/dist/markup/serializeDom.d.cts +1 -1
- package/dist/markup/serializeDom.d.ts +1 -1
- package/dist/markup/serializeDom.js +1 -1
- package/dist/markup/transform.cjs +5 -2
- package/dist/markup/transform.d.cts +1 -1
- package/dist/markup/transform.d.ts +1 -1
- package/dist/markup/transform.js +5 -4
- package/dist/{model-CZ2mMHJO.d.cts → model-CeOMDDgt.d.cts} +3 -11
- package/dist/{model-CZ2mMHJO.d.ts → model-CeOMDDgt.d.ts} +3 -11
- package/dist/process/processAudiobook.cjs +12 -23
- package/dist/process/processAudiobook.js +14 -30
- package/dist/process/ranges.cjs +2 -2
- package/dist/process/ranges.js +2 -2
- package/dist/readium/guidedNavigation.cjs +8 -8
- package/dist/readium/guidedNavigation.js +8 -8
- package/dist/readium/manifest.cjs +5 -4
- package/dist/readium/manifest.js +5 -4
- package/dist/snapshot/ctc/snapshot.cjs +261 -0
- package/dist/snapshot/ctc/snapshot.d.cts +6 -0
- package/dist/snapshot/ctc/snapshot.d.ts +6 -0
- package/dist/snapshot/ctc/snapshot.js +200 -0
- package/dist/snapshot/parse.cjs +29 -16
- package/dist/snapshot/parse.d.cts +14 -10
- package/dist/snapshot/parse.d.ts +14 -10
- package/dist/snapshot/parse.js +32 -17
- package/dist/transcribe/parse.d.cts +6 -6
- package/dist/transcribe/parse.d.ts +6 -6
- package/dist/transcribe/transcribe.cjs +4 -2
- package/dist/transcribe/transcribe.js +4 -2
- package/package.json +6 -4
- package/dist/process/mime.d.cts +0 -3
- package/dist/process/mime.d.ts +0 -3
- package/dist/process/mime.js +0 -24
package/dist/cli/bin.cjs
CHANGED
|
@@ -69,27 +69,31 @@ var __callDispose = (stack, error, hasError) => {
|
|
|
69
69
|
};
|
|
70
70
|
var import_node_crypto = require("node:crypto");
|
|
71
71
|
var import_node_fs = require("node:fs");
|
|
72
|
-
var os = __toESM(require("node:os"), 1);
|
|
73
72
|
var import_node_path = require("node:path");
|
|
74
73
|
var import_core = require("@optique/core");
|
|
75
74
|
var import_run = require("@optique/run");
|
|
76
75
|
var import_valueparser = require("@optique/run/valueparser");
|
|
77
76
|
var import_cli_progress = require("cli-progress");
|
|
78
77
|
var import_epub = require("@storyteller-platform/epub");
|
|
78
|
+
var import_fs = require("@storyteller-platform/fs");
|
|
79
79
|
var import_package = __toESM(require("../../package.json"), 1);
|
|
80
80
|
var import_align = require("../align/align.cjs");
|
|
81
|
+
var import_align2 = require("../align/ctc/align.cjs");
|
|
81
82
|
var import_parse = require("../align/parse.cjs");
|
|
82
83
|
var import_logging = require("../common/logging.cjs");
|
|
83
84
|
var import_parse2 = require("../common/parse.cjs");
|
|
85
|
+
var import_emit = require("../emit/emit.cjs");
|
|
86
|
+
var import_parse3 = require("../emit/parse.cjs");
|
|
84
87
|
var import_markup = require("../markup/markup.cjs");
|
|
85
|
-
var
|
|
86
|
-
var
|
|
88
|
+
var import_parse4 = require("../markup/parse.cjs");
|
|
89
|
+
var import_parse5 = require("../process/parse.cjs");
|
|
87
90
|
var import_processAudiobook = require("../process/processAudiobook.cjs");
|
|
88
|
-
var
|
|
89
|
-
var
|
|
90
|
-
var
|
|
91
|
+
var import_snapshot = require("../snapshot/ctc/snapshot.cjs");
|
|
92
|
+
var import_parse6 = require("../snapshot/parse.cjs");
|
|
93
|
+
var import_snapshot2 = require("../snapshot/snapshot.cjs");
|
|
94
|
+
var import_parse7 = require("../transcribe/parse.cjs");
|
|
91
95
|
var import_transcribe = require("../transcribe/transcribe.cjs");
|
|
92
|
-
var
|
|
96
|
+
var import_parse8 = require("../upgradeEpub/parse.cjs");
|
|
93
97
|
var import_upgradeEpub = require("../upgradeEpub/upgradeEpub.cjs");
|
|
94
98
|
const pipelineCommand = (0, import_core.merge)(
|
|
95
99
|
(0, import_core.object)({
|
|
@@ -97,9 +101,6 @@ const pipelineCommand = (0, import_core.merge)(
|
|
|
97
101
|
processedAudio: (0, import_core.optional)(
|
|
98
102
|
(0, import_core.option)("--processed-audio", (0, import_valueparser.path)({ type: "directory" }))
|
|
99
103
|
),
|
|
100
|
-
transcriptions: (0, import_core.optional)(
|
|
101
|
-
(0, import_core.option)("--transcriptions", (0, import_valueparser.path)({ type: "directory" }))
|
|
102
|
-
),
|
|
103
104
|
markedup: (0, import_core.optional)(
|
|
104
105
|
(0, import_core.option)("--markedup", (0, import_valueparser.path)({ type: "file", extensions: [".epub"] }))
|
|
105
106
|
),
|
|
@@ -113,8 +114,26 @@ const pipelineCommand = (0, import_core.merge)(
|
|
|
113
114
|
),
|
|
114
115
|
output: (0, import_core.option)("--output", (0, import_valueparser.path)({ type: "file", extensions: [".epub"] }))
|
|
115
116
|
}),
|
|
116
|
-
|
|
117
|
-
(0, import_core.
|
|
117
|
+
import_parse5.processParser,
|
|
118
|
+
(0, import_core.or)(
|
|
119
|
+
(0, import_core.merge)(
|
|
120
|
+
(0, import_core.object)({
|
|
121
|
+
ctc: (0, import_core.flag)("--ctc", {
|
|
122
|
+
description: import_core.message`Use CTC emissions instead of transcriptions for alignment`
|
|
123
|
+
}),
|
|
124
|
+
emissions: (0, import_core.optional)((0, import_core.option)("--emissions", (0, import_valueparser.path)({ type: "directory" })))
|
|
125
|
+
}),
|
|
126
|
+
import_parse3.emitParser
|
|
127
|
+
),
|
|
128
|
+
(0, import_core.merge)(
|
|
129
|
+
(0, import_core.group)("Transcription", import_parse7.transcribeParser),
|
|
130
|
+
(0, import_core.object)({
|
|
131
|
+
transcriptions: (0, import_core.optional)(
|
|
132
|
+
(0, import_core.option)("--transcriptions", (0, import_valueparser.path)({ type: "directory" }))
|
|
133
|
+
)
|
|
134
|
+
})
|
|
135
|
+
)
|
|
136
|
+
),
|
|
118
137
|
import_parse2.autoUpgradeParser,
|
|
119
138
|
import_parse2.removeNcxParser,
|
|
120
139
|
import_parse2.granularityParser,
|
|
@@ -123,17 +142,25 @@ const pipelineCommand = (0, import_core.merge)(
|
|
|
123
142
|
import_parse2.loggingParser
|
|
124
143
|
);
|
|
125
144
|
const parser = (0, import_core.or)(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
145
|
+
import_parse5.processCommand,
|
|
146
|
+
import_parse7.transcribeCommand,
|
|
147
|
+
import_parse3.emitCommand,
|
|
148
|
+
import_parse8.upgradeEpubCommand,
|
|
149
|
+
import_parse4.markupCommand,
|
|
130
150
|
import_parse.alignCommand,
|
|
131
151
|
pipelineCommand,
|
|
132
|
-
|
|
152
|
+
import_parse6.snapshotCommand
|
|
133
153
|
);
|
|
134
154
|
async function main() {
|
|
135
155
|
var _stack2 = [];
|
|
136
156
|
try {
|
|
157
|
+
process.on("SIGINT", () => {
|
|
158
|
+
try {
|
|
159
|
+
progressBar.stop();
|
|
160
|
+
} finally {
|
|
161
|
+
process.exit(130);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
137
164
|
const parsed = (0, import_run.run)(parser, {
|
|
138
165
|
showChoices: true,
|
|
139
166
|
showDefault: true,
|
|
@@ -157,6 +184,17 @@ async function main() {
|
|
|
157
184
|
progressBar.start(100, 0);
|
|
158
185
|
}
|
|
159
186
|
}
|
|
187
|
+
function updateProgressBar(progress) {
|
|
188
|
+
if (parsed.action === "upgrade-epub") return;
|
|
189
|
+
if (parsed.noProgress || parsed.logLevel !== "silent") {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
const floored = Math.floor(progress * 100);
|
|
193
|
+
if (floored === Math.floor(progressBar.getProgress() * 100)) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
progressBar.update(floored);
|
|
197
|
+
}
|
|
160
198
|
resetProgressBar();
|
|
161
199
|
process.on("SIGINT", () => {
|
|
162
200
|
controller.abort();
|
|
@@ -178,11 +216,7 @@ async function main() {
|
|
|
178
216
|
parallelism: parsed.parallelism,
|
|
179
217
|
signal: controller.signal,
|
|
180
218
|
logger,
|
|
181
|
-
|
|
182
|
-
onProgress: (progress) => {
|
|
183
|
-
progressBar.update(Math.floor(progress * 100));
|
|
184
|
-
}
|
|
185
|
-
}
|
|
219
|
+
onProgress: updateProgressBar
|
|
186
220
|
});
|
|
187
221
|
if (parsed.time) {
|
|
188
222
|
timing.print("Process audiobook");
|
|
@@ -198,11 +232,7 @@ async function main() {
|
|
|
198
232
|
...parsed,
|
|
199
233
|
signal: controller.signal,
|
|
200
234
|
logger,
|
|
201
|
-
|
|
202
|
-
onProgress: (progress) => {
|
|
203
|
-
progressBar.update(Math.floor(progress * 100));
|
|
204
|
-
}
|
|
205
|
-
}
|
|
235
|
+
onProgress: updateProgressBar
|
|
206
236
|
}
|
|
207
237
|
);
|
|
208
238
|
if (parsed.time) {
|
|
@@ -210,6 +240,13 @@ async function main() {
|
|
|
210
240
|
}
|
|
211
241
|
break;
|
|
212
242
|
}
|
|
243
|
+
case "emit": {
|
|
244
|
+
await (0, import_emit.emit)(parsed.input, parsed.output, {
|
|
245
|
+
...parsed,
|
|
246
|
+
onProgress: updateProgressBar
|
|
247
|
+
});
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
213
250
|
case "upgrade-epub": {
|
|
214
251
|
await (0, import_upgradeEpub.upgradeEpub)(parsed.input, parsed.output, {
|
|
215
252
|
removeNcx: parsed.removeNcx
|
|
@@ -220,8 +257,7 @@ async function main() {
|
|
|
220
257
|
let input = parsed.input;
|
|
221
258
|
if (parsed.autoupgrade) {
|
|
222
259
|
logger.info("Upgrading EPUB 2 to EPUB 3");
|
|
223
|
-
input = (0,
|
|
224
|
-
os.tmpdir(),
|
|
260
|
+
input = (0, import_fs.scratchPath)(
|
|
225
261
|
`stalign-autoupgrade-${(0, import_node_crypto.randomUUID)()}`,
|
|
226
262
|
(0, import_node_path.basename)(parsed.input)
|
|
227
263
|
);
|
|
@@ -231,11 +267,7 @@ async function main() {
|
|
|
231
267
|
primaryLocale: parsed.language ?? new Intl.Locale("en-US"),
|
|
232
268
|
granularity: parsed.granularity,
|
|
233
269
|
logger,
|
|
234
|
-
|
|
235
|
-
onProgress: (progress) => {
|
|
236
|
-
progressBar.update(Math.floor(progress * 100));
|
|
237
|
-
}
|
|
238
|
-
}
|
|
270
|
+
onProgress: updateProgressBar
|
|
239
271
|
});
|
|
240
272
|
if (parsed.time) {
|
|
241
273
|
timing.print("Mark up EPUB");
|
|
@@ -246,34 +278,50 @@ async function main() {
|
|
|
246
278
|
let input = parsed.epub;
|
|
247
279
|
if (parsed.autoupgrade) {
|
|
248
280
|
logger.info("Upgrading EPUB 2 to EPUB 3");
|
|
249
|
-
input = (0,
|
|
250
|
-
os.tmpdir(),
|
|
281
|
+
input = (0, import_fs.scratchPath)(
|
|
251
282
|
`stalign-autoupgrade-${(0, import_node_crypto.randomUUID)()}`,
|
|
252
283
|
(0, import_node_path.basename)(parsed.epub)
|
|
253
284
|
);
|
|
254
285
|
await (0, import_upgradeEpub.upgradeEpub)(parsed.epub, input, { removeNcx: parsed.removeNcx });
|
|
255
286
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
onProgress:
|
|
270
|
-
progressBar.update(Math.floor(progress * 100));
|
|
271
|
-
}
|
|
287
|
+
if ("ctc" in parsed) {
|
|
288
|
+
const timing = await (0, import_align2.ctcAlign)(
|
|
289
|
+
input,
|
|
290
|
+
parsed.output,
|
|
291
|
+
parsed.emissions,
|
|
292
|
+
parsed.audiobook,
|
|
293
|
+
{
|
|
294
|
+
granularity: parsed.granularity,
|
|
295
|
+
textRef: parsed.textRef,
|
|
296
|
+
outFormat: parsed.outFormat,
|
|
297
|
+
primaryLocale: parsed.language,
|
|
298
|
+
reportsPath: parsed.reports,
|
|
299
|
+
logger,
|
|
300
|
+
onProgress: updateProgressBar
|
|
272
301
|
}
|
|
302
|
+
);
|
|
303
|
+
if (parsed.time) {
|
|
304
|
+
timing.print("Align EPUB and audiobook");
|
|
305
|
+
}
|
|
306
|
+
} else {
|
|
307
|
+
const timing = await (0, import_align.align)(
|
|
308
|
+
input,
|
|
309
|
+
parsed.output,
|
|
310
|
+
parsed.transcriptions,
|
|
311
|
+
parsed.audiobook,
|
|
312
|
+
{
|
|
313
|
+
granularity: parsed.granularity,
|
|
314
|
+
textRef: parsed.textRef,
|
|
315
|
+
outFormat: parsed.outFormat,
|
|
316
|
+
primaryLocale: parsed.language,
|
|
317
|
+
reportsPath: parsed.reports,
|
|
318
|
+
logger,
|
|
319
|
+
onProgress: updateProgressBar
|
|
320
|
+
}
|
|
321
|
+
);
|
|
322
|
+
if (parsed.time) {
|
|
323
|
+
timing.print("Align EPUB and audiobook");
|
|
273
324
|
}
|
|
274
|
-
);
|
|
275
|
-
if (parsed.time) {
|
|
276
|
-
timing.print("Align EPUB and audiobook");
|
|
277
325
|
}
|
|
278
326
|
break;
|
|
279
327
|
}
|
|
@@ -283,8 +331,7 @@ async function main() {
|
|
|
283
331
|
let input = parsed.epub;
|
|
284
332
|
if (parsed.autoupgrade) {
|
|
285
333
|
logger.info("Upgrading EPUB 2 to EPUB 3");
|
|
286
|
-
input = (0,
|
|
287
|
-
os.tmpdir(),
|
|
334
|
+
input = (0, import_fs.scratchPath)(
|
|
288
335
|
`stalign-autoupgrade-${(0, import_node_crypto.randomUUID)()}`,
|
|
289
336
|
(0, import_node_path.basename)(parsed.epub)
|
|
290
337
|
);
|
|
@@ -293,7 +340,7 @@ async function main() {
|
|
|
293
340
|
const epub = __using(_stack, await import_epub.Epub.from(input));
|
|
294
341
|
const primaryLocale = parsed.language ?? await epub.getLanguage() ?? new Intl.Locale("en-US");
|
|
295
342
|
epub.discardAndClose();
|
|
296
|
-
const processedAudio = parsed.processedAudio ?? (0,
|
|
343
|
+
const processedAudio = parsed.processedAudio ?? (0, import_fs.scratchPath)(`stalign-processed-${(0, import_node_crypto.randomUUID)()}`);
|
|
297
344
|
if (!parsed.processedAudio) {
|
|
298
345
|
stack.defer(() => {
|
|
299
346
|
(0, import_node_fs.rmSync)(processedAudio, { recursive: true, force: true });
|
|
@@ -310,11 +357,7 @@ async function main() {
|
|
|
310
357
|
maxLength: parsed.maxLength / 60,
|
|
311
358
|
parallelism: parsed.parallelTranscodes,
|
|
312
359
|
signal: controller.signal,
|
|
313
|
-
|
|
314
|
-
onProgress: (progress) => {
|
|
315
|
-
progressBar.update(Math.floor(progress * 100));
|
|
316
|
-
}
|
|
317
|
-
}
|
|
360
|
+
onProgress: updateProgressBar
|
|
318
361
|
}
|
|
319
362
|
);
|
|
320
363
|
resetProgressBar();
|
|
@@ -326,36 +369,56 @@ async function main() {
|
|
|
326
369
|
}
|
|
327
370
|
logger.info("Transcribing...");
|
|
328
371
|
startProgressBar();
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
{
|
|
372
|
+
let emissions;
|
|
373
|
+
let transcriptions;
|
|
374
|
+
if ("ctc" in parsed) {
|
|
375
|
+
emissions = parsed.emissions ?? (0, import_fs.scratchPath)(`stalign-emissions-${(0, import_node_crypto.randomUUID)()}`);
|
|
376
|
+
if (!parsed.emissions) {
|
|
377
|
+
stack.defer(() => {
|
|
378
|
+
(0, import_node_fs.rmSync)(emissions, { recursive: true, force: true });
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
const transcribeTiming = await (0, import_emit.emit)(processedAudio, emissions, {
|
|
340
382
|
...parsed,
|
|
341
|
-
parallelism: parsed.parallelTranscribes,
|
|
342
383
|
signal: controller.signal,
|
|
343
384
|
logger,
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
385
|
+
onProgress: updateProgressBar
|
|
386
|
+
});
|
|
387
|
+
resetProgressBar();
|
|
388
|
+
logger.info(
|
|
389
|
+
`Generating emissions for audiobook complete, emissions saved to ${emissions}.`
|
|
390
|
+
);
|
|
391
|
+
if (parsed.time) {
|
|
392
|
+
transcribeTiming.print();
|
|
393
|
+
}
|
|
394
|
+
} else {
|
|
395
|
+
transcriptions = parsed.transcriptions ?? (0, import_fs.scratchPath)(`stalign-transcriptions-${(0, import_node_crypto.randomUUID)()}`);
|
|
396
|
+
if (!parsed.transcriptions) {
|
|
397
|
+
stack.defer(() => {
|
|
398
|
+
(0, import_node_fs.rmSync)(transcriptions, { recursive: true, force: true });
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
const transcribeTiming = await (0, import_transcribe.transcribe)(
|
|
402
|
+
processedAudio,
|
|
403
|
+
transcriptions,
|
|
404
|
+
primaryLocale,
|
|
405
|
+
{
|
|
406
|
+
...parsed,
|
|
407
|
+
parallelism: parsed.parallelTranscribes,
|
|
408
|
+
signal: controller.signal,
|
|
409
|
+
logger,
|
|
410
|
+
onProgress: updateProgressBar
|
|
348
411
|
}
|
|
412
|
+
);
|
|
413
|
+
resetProgressBar();
|
|
414
|
+
logger.info(
|
|
415
|
+
`Transcribing audiobook complete, transcriptions saved to ${transcriptions}.`
|
|
416
|
+
);
|
|
417
|
+
if (parsed.time) {
|
|
418
|
+
transcribeTiming.print();
|
|
349
419
|
}
|
|
350
|
-
);
|
|
351
|
-
resetProgressBar();
|
|
352
|
-
logger.info(
|
|
353
|
-
`Transcribing audiobook complete, transcriptions saved to ${transcriptions}.`
|
|
354
|
-
);
|
|
355
|
-
if (parsed.time) {
|
|
356
|
-
transcribeTiming.print();
|
|
357
420
|
}
|
|
358
|
-
const markedup = parsed.textRef === "id-fragment" ? parsed.markedup ?? (0,
|
|
421
|
+
const markedup = parsed.textRef === "id-fragment" ? parsed.markedup ?? (0, import_fs.scratchPath)(`stalign-markedup-${(0, import_node_crypto.randomUUID)()}.epub`) : parsed.epub;
|
|
359
422
|
if (parsed.textRef === "id-fragment") {
|
|
360
423
|
logger.info("Marking up EPUB...");
|
|
361
424
|
startProgressBar();
|
|
@@ -368,11 +431,7 @@ async function main() {
|
|
|
368
431
|
granularity: parsed.granularity,
|
|
369
432
|
primaryLocale,
|
|
370
433
|
logger,
|
|
371
|
-
|
|
372
|
-
onProgress: (progress) => {
|
|
373
|
-
progressBar.update(Math.floor(progress * 100));
|
|
374
|
-
}
|
|
375
|
-
}
|
|
434
|
+
onProgress: updateProgressBar
|
|
376
435
|
});
|
|
377
436
|
resetProgressBar();
|
|
378
437
|
logger.info(`Markup complete, marked up EPUB saved to ${markedup}.`);
|
|
@@ -384,29 +443,52 @@ async function main() {
|
|
|
384
443
|
}
|
|
385
444
|
logger.info("Aligning EPUB with audiobook...");
|
|
386
445
|
startProgressBar();
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
onProgress:
|
|
401
|
-
progressBar.update(Math.floor(progress * 100));
|
|
402
|
-
}
|
|
446
|
+
if ("ctc" in parsed) {
|
|
447
|
+
const timing = await (0, import_align2.ctcAlign)(
|
|
448
|
+
markedup,
|
|
449
|
+
parsed.output,
|
|
450
|
+
emissions,
|
|
451
|
+
processedAudio,
|
|
452
|
+
{
|
|
453
|
+
granularity: parsed.granularity,
|
|
454
|
+
textRef: parsed.textRef,
|
|
455
|
+
outFormat: parsed.outFormat,
|
|
456
|
+
primaryLocale: parsed.language,
|
|
457
|
+
reportsPath: parsed.reports,
|
|
458
|
+
logger,
|
|
459
|
+
onProgress: updateProgressBar
|
|
403
460
|
}
|
|
461
|
+
);
|
|
462
|
+
resetProgressBar();
|
|
463
|
+
logger.info(
|
|
464
|
+
`Alignment complete, aligned EPUB saved to ${parsed.output}`
|
|
465
|
+
);
|
|
466
|
+
if (parsed.time) {
|
|
467
|
+
timing.print("Align EPUB and audiobook");
|
|
468
|
+
}
|
|
469
|
+
} else {
|
|
470
|
+
const alignTiming = await (0, import_align.align)(
|
|
471
|
+
markedup,
|
|
472
|
+
parsed.output,
|
|
473
|
+
transcriptions,
|
|
474
|
+
processedAudio,
|
|
475
|
+
{
|
|
476
|
+
granularity: parsed.granularity,
|
|
477
|
+
textRef: parsed.textRef,
|
|
478
|
+
outFormat: parsed.outFormat,
|
|
479
|
+
primaryLocale,
|
|
480
|
+
reportsPath: parsed.reports,
|
|
481
|
+
logger,
|
|
482
|
+
onProgress: updateProgressBar
|
|
483
|
+
}
|
|
484
|
+
);
|
|
485
|
+
resetProgressBar();
|
|
486
|
+
logger.info(
|
|
487
|
+
`Alignment complete, aligned EPUB saved to ${parsed.output}`
|
|
488
|
+
);
|
|
489
|
+
if (parsed.time) {
|
|
490
|
+
alignTiming.print();
|
|
404
491
|
}
|
|
405
|
-
);
|
|
406
|
-
resetProgressBar();
|
|
407
|
-
logger.info(`Alignment complete, aligned EPUB saved to ${parsed.output}`);
|
|
408
|
-
if (parsed.time) {
|
|
409
|
-
alignTiming.print();
|
|
410
492
|
}
|
|
411
493
|
break;
|
|
412
494
|
} catch (_) {
|
|
@@ -416,7 +498,15 @@ async function main() {
|
|
|
416
498
|
}
|
|
417
499
|
}
|
|
418
500
|
case "snapshot": {
|
|
419
|
-
|
|
501
|
+
if ("ctc" in parsed) {
|
|
502
|
+
await (0, import_snapshot.snapshotCtcAlignment)(parsed.epub, parsed.emissions, parsed.output);
|
|
503
|
+
} else {
|
|
504
|
+
await (0, import_snapshot2.snapshotAlignment)(
|
|
505
|
+
parsed.epub,
|
|
506
|
+
parsed.transcriptions,
|
|
507
|
+
parsed.output
|
|
508
|
+
);
|
|
509
|
+
}
|
|
420
510
|
}
|
|
421
511
|
}
|
|
422
512
|
} catch (_2) {
|