echogarden 0.8.8 → 0.9.0
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/README.md +1 -1
- package/dist/alignment/SpeechAlignment.d.ts +1 -1
- package/dist/alignment/SpeechAlignment.js +1 -1
- package/dist/alignment/SpeechAlignment.js.map +1 -1
- package/dist/audio/AudioPlayer.js +11 -7
- package/dist/audio/AudioPlayer.js.map +1 -1
- package/dist/cli/CLI.d.ts +2 -2
- package/dist/cli/CLI.js +58 -40
- package/dist/cli/CLI.js.map +1 -1
- package/dist/cli/CLIConfigFile.js +1 -1
- package/dist/cli/CLIConfigFile.js.map +1 -1
- package/dist/codecs/FFMpegTranscoder.d.ts +0 -1
- package/dist/codecs/FFMpegTranscoder.js +4 -56
- package/dist/codecs/FFMpegTranscoder.js.map +1 -1
- package/dist/recognition/WhisperSTT.js +1 -1
- package/dist/recognition/WhisperSTT.js.map +1 -1
- package/dist/synthesis/VitsTTS.js +3 -3
- package/dist/synthesis/VitsTTS.js.map +1 -1
- package/dist/tests/Test.js +2 -2
- package/dist/tests/Test.js.map +1 -1
- package/dist/utilities/FileSystem.d.ts +2 -2
- package/dist/utilities/FileSystem.js +9 -3
- package/dist/utilities/FileSystem.js.map +1 -1
- package/dist/utilities/Timeline.d.ts +2 -3
- package/dist/utilities/Timeline.js +29 -0
- package/dist/utilities/Timeline.js.map +1 -1
- package/dist/utilities/Utilities.d.ts +3 -2
- package/dist/utilities/Utilities.js +19 -2
- package/dist/utilities/Utilities.js.map +1 -1
- package/docs/CLI.md +6 -12
- package/docs/Tasklist.md +4 -4
- package/package.json +5 -6
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ npm install echogarden -g
|
|
|
32
32
|
|
|
33
33
|
Additional tools:
|
|
34
34
|
* [`sox`](https://sourceforge.net/projects/sox/): used for the CLI's audio playback and recording (only). Auto-installed via an expansion package on Windows and Intel macOS. On Linux and ARM64 macOS, it is recommended to install it via platform package managers like `apt` and `brew`.
|
|
35
|
-
* [`ffmpeg`](https://ffmpeg.org/download.html): used for codec conversions. Auto-installed via an expansion package on Windows, Intel macOS, and x64 Linux. On ARM64 macOS, it is recommended to install it via platform package manager like `brew
|
|
35
|
+
* [`ffmpeg`](https://ffmpeg.org/download.html): used for codec conversions. Auto-installed via an expansion package on Windows, Intel macOS, and x64 Linux. On ARM64 macOS, it is recommended to install it via a platform package manager like `brew`.
|
|
36
36
|
|
|
37
37
|
(hopefully in the future all platforms would be covered using expansion packages)
|
|
38
38
|
|
|
@@ -3,7 +3,7 @@ import { Timeline, TimelineEntry } from "../utilities/Timeline.js";
|
|
|
3
3
|
import { RawAudio } from "../audio/AudioUtilities.js";
|
|
4
4
|
import { Lexicon } from "../nlp/Lexicon.js";
|
|
5
5
|
export declare function alignUsingDtw(sourceRawAudio: RawAudio, referenceRawAudio: RawAudio, referenceTimeline: Timeline, windowDuration: number): Promise<TimelineEntry[]>;
|
|
6
|
-
export declare function alignUsingDtwWithRecognition(sourceRawAudio: RawAudio, referenceRawAudio: RawAudio, referenceTimeline: Timeline, recognitionTimeline: Timeline, espeakVoice
|
|
6
|
+
export declare function alignUsingDtwWithRecognition(sourceRawAudio: RawAudio, referenceRawAudio: RawAudio, referenceTimeline: Timeline, recognitionTimeline: Timeline, espeakVoice: string | undefined, phoneAlignmentMethod: API.PhoneAlignmentMethod | undefined, windowDuration: number): Promise<Timeline>;
|
|
7
7
|
export declare function interpolatePhoneTimelines(sourceTimeline: Timeline, referenceTimeline: Timeline): Promise<Timeline>;
|
|
8
8
|
export declare function alignPhoneTimelines(sourceRawAudio: RawAudio, sourceWordTimeline: Timeline, referenceRawAudio: RawAudio, referenceTimeline: Timeline): Promise<Timeline>;
|
|
9
9
|
export declare function createAlignmentReferenceUsingEspeakPreprocessed(text: string, language: string, voice: string, lexicons?: Lexicon[], rate?: number, pitch?: number, pitchRange?: number): Promise<{
|
|
@@ -53,7 +53,7 @@ export async function alignUsingDtw(sourceRawAudio, referenceRawAudio, reference
|
|
|
53
53
|
logger.end();
|
|
54
54
|
return mappedTimeline;
|
|
55
55
|
}
|
|
56
|
-
export async function alignUsingDtwWithRecognition(sourceRawAudio, referenceRawAudio, referenceTimeline, recognitionTimeline, espeakVoice = "gmw/en-US", phoneAlignmentMethod = "interpolation", windowDuration
|
|
56
|
+
export async function alignUsingDtwWithRecognition(sourceRawAudio, referenceRawAudio, referenceTimeline, recognitionTimeline, espeakVoice = "gmw/en-US", phoneAlignmentMethod = "interpolation", windowDuration) {
|
|
57
57
|
const logger = new Logger();
|
|
58
58
|
if (recognitionTimeline.length == 0) {
|
|
59
59
|
const sourceDuration = getRawAudioDuration(sourceRawAudio);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpeechAlignment.js","sourceRoot":"","sources":["../../src/alignment/SpeechAlignment.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SpeechAlignment.js","sourceRoot":"","sources":["../../src/alignment/SpeechAlignment.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,11 @@ import { Timer } from "../utilities/Timer.js";
|
|
|
7
7
|
import { waitTimeout, writeToStderr } from '../utilities/Utilities.js';
|
|
8
8
|
import { encodeToAudioBuffer } from './AudioBufferConversion.js';
|
|
9
9
|
import { OpenPromise } from '../utilities/OpenPromise.js';
|
|
10
|
-
import {
|
|
10
|
+
import { addWordTextOffsetsToTimeline } from '../utilities/Timeline.js';
|
|
11
11
|
import { readAndParseJsonFile, readFile } from '../utilities/FileSystem.js';
|
|
12
12
|
import { tryResolvingSoxPath } from './SoxPath.js';
|
|
13
13
|
import { SignalChannel } from '../utilities/SignalChannel.js';
|
|
14
|
+
import { deepClone } from '../utilities/ObjectUtilities.js';
|
|
14
15
|
export async function playAudioFileWithTimelineFile(audioFilename, timelineFileName, transcriptFileName) {
|
|
15
16
|
const rawAudio = await FFMpegTranscoder.decodeToChannels(audioFilename, 48000, 1);
|
|
16
17
|
const timeline = await readAndParseJsonFile(timelineFileName);
|
|
@@ -21,7 +22,10 @@ export async function playAudioFileWithTimelineFile(audioFilename, timelineFileN
|
|
|
21
22
|
await playAudioWithWordTimeline(rawAudio, timeline, transcript);
|
|
22
23
|
}
|
|
23
24
|
export async function playAudioWithWordTimeline(rawAudio, timeline, transcript) {
|
|
24
|
-
|
|
25
|
+
if (transcript) {
|
|
26
|
+
timeline = deepClone(timeline);
|
|
27
|
+
addWordTextOffsetsToTimeline(timeline, transcript);
|
|
28
|
+
}
|
|
25
29
|
let timelineEntryIndex = 0;
|
|
26
30
|
let transcriptOffset = 0;
|
|
27
31
|
function onTimePosition(timePosition) {
|
|
@@ -34,18 +38,18 @@ export async function playAudioWithWordTimeline(rawAudio, timeline, transcript)
|
|
|
34
38
|
writeToStderr(`${entry.text} `);
|
|
35
39
|
return;
|
|
36
40
|
}
|
|
37
|
-
const wordStartOffset =
|
|
38
|
-
|
|
41
|
+
const wordStartOffset = entry.textStartOffset;
|
|
42
|
+
let wordEndOffset = entry.textEndOffset;
|
|
43
|
+
if (wordStartOffset == null || wordEndOffset == null) {
|
|
44
|
+
//writeToStderr(` [No offset availble for '${entry.text}'] `)
|
|
39
45
|
continue;
|
|
40
|
-
//throw new Error(`Couldn't find substring "${entry.text}" in remaining text.`)
|
|
41
46
|
}
|
|
42
|
-
let wordEndOffset = wordStartOffset + entry.text.length;
|
|
43
47
|
while (wordEndOffset < transcript.length &&
|
|
44
48
|
charactersToWriteAhead.includes(transcript[wordEndOffset]) &&
|
|
45
49
|
transcript[wordEndOffset] != timeline[timelineEntryIndex + 2]?.text) {
|
|
46
50
|
wordEndOffset += 1;
|
|
47
51
|
}
|
|
48
|
-
writeToStderr(
|
|
52
|
+
writeToStderr(transcript.substring(transcriptOffset, wordEndOffset));
|
|
49
53
|
transcriptOffset = wordEndOffset;
|
|
50
54
|
}
|
|
51
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioPlayer.js","sourceRoot":"","sources":["../../src/audio/AudioPlayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EAAY,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACxG,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA;AACnE,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAA;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"AudioPlayer.js","sourceRoot":"","sources":["../../src/audio/AudioPlayer.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/CLI.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { RawAudio } from "../audio/AudioUtilities.js";
|
|
|
2
2
|
import { Timeline } from "../utilities/Timeline.js";
|
|
3
3
|
export declare function start(processArgs: string[]): Promise<void>;
|
|
4
4
|
export declare function getOptionsSchema(): Promise<any>;
|
|
5
|
-
export declare function checkOutputFilenames(outputFilenames: string[], acceptMediaOutputs: boolean, acceptMetadataOutputs: boolean, acceptSubtitleOutputs: boolean
|
|
5
|
+
export declare function checkOutputFilenames(outputFilenames: string[], acceptMediaOutputs: boolean, acceptMetadataOutputs: boolean, acceptSubtitleOutputs: boolean): Promise<{
|
|
6
6
|
includesPartPattern: boolean;
|
|
7
7
|
}>;
|
|
8
|
-
export declare function writeOutputFilesForSegment(outputFilenames: string[], index: number, total: number, audio: RawAudio, timeline: Timeline, text: string, language: string): Promise<void>;
|
|
8
|
+
export declare function writeOutputFilesForSegment(outputFilenames: string[], index: number, total: number, audio: RawAudio, timeline: Timeline, text: string, language: string, allowOverwrite: boolean): Promise<void>;
|
package/dist/cli/CLI.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as API from '../api/API.js';
|
|
2
2
|
import { parseCLIArguments } from './CLIParser.js';
|
|
3
|
-
import { convertHtmlToText, formatIntegerWithLeadingZeros, formatListWithQuotedElements, getWithDefault, logToStderr, setupUnhandledExceptionListeners, stringifyAndFormatJson } from "../utilities/Utilities.js";
|
|
3
|
+
import { convertHtmlToText, formatIntegerWithLeadingZeros, formatListWithQuotedElements, getWithDefault, logToStderr, setupUnhandledExceptionListeners, splitFilenameOnExtendedExtension, stringifyAndFormatJson } from "../utilities/Utilities.js";
|
|
4
4
|
import { getOptionTypeFromSchema } from "./CLIOptionsSchema.js";
|
|
5
5
|
import { parseConfigFile, parseJSONConfigFile } from "./CLIConfigFile.js";
|
|
6
6
|
import chalk from 'chalk';
|
|
@@ -9,12 +9,12 @@ import { subtitlesToText, subtitlesToTimeline, timelineToSubtitles } from "../su
|
|
|
9
9
|
import { Logger } from "../utilities/Logger.js";
|
|
10
10
|
import { isMainThread, parentPort } from 'node:worker_threads';
|
|
11
11
|
import { encodeFromChannels } from "../codecs/FFMpegTranscoder.js";
|
|
12
|
-
import { parse as parsePath } from "node:path";
|
|
12
|
+
import path, { parse as parsePath } from "node:path";
|
|
13
13
|
import { splitToParagraphs, splitToWords, wordCharacterPattern } from "../nlp/Segmentation.js";
|
|
14
14
|
import { playAudioSamples, playAudioWithWordTimeline } from "../audio/AudioPlayer.js";
|
|
15
15
|
import { extendDeep } from "../utilities/ObjectUtilities.js";
|
|
16
|
-
import { addTimeOffsetToTimeline, roundTimelineProperties, wordTimelineToSegmentSentenceTimeline } from "../utilities/Timeline.js";
|
|
17
|
-
import { ensureDir, existsSync,
|
|
16
|
+
import { addTimeOffsetToTimeline, addWordTextOffsetsToTimeline, roundTimelineProperties, wordTimelineToSegmentSentenceTimeline } from "../utilities/Timeline.js";
|
|
17
|
+
import { ensureDir, existsSync, getLowercaseFileExtension, readAndParseJsonFile, readFile, readdir, resolveToModuleRootDir, writeFileSafe } from '../utilities/FileSystem.js';
|
|
18
18
|
import { formatLanguageCodeWithName, getShortLanguageCode } from '../utilities/Locale.js';
|
|
19
19
|
import { ensureAndGetPackagesDir, getVersionTagFromPackageName, loadPackage, resolveVersionTagForUnversionedPackageName } from '../utilities/PackageManager.js';
|
|
20
20
|
import { removePackage } from '../utilities/PackageManager.js';
|
|
@@ -247,7 +247,8 @@ async function speak(command, commandArgs, cliOptions) {
|
|
|
247
247
|
}
|
|
248
248
|
const options = await cliOptionsMapToOptionsObject(cliOptions, "SynthesisOptions", additionalOptionsSchema);
|
|
249
249
|
const allowOverwrite = getWithDefault(options.overwrite, overwriteByDefault);
|
|
250
|
-
const { includesPartPattern } = await checkOutputFilenames(outputFilenames, true, true, true
|
|
250
|
+
const { includesPartPattern } = await checkOutputFilenames(outputFilenames, true, true, true);
|
|
251
|
+
let plainText = undefined;
|
|
251
252
|
let textSegments;
|
|
252
253
|
const plainTextParagraphBreaks = options.plainText?.paragraphBreaks || API.defaultSynthesisOptions.plainText.paragraphBreaks;
|
|
253
254
|
const plainTextWhitespace = options.plainText?.whitespace || API.defaultSynthesisOptions.plainText.whitespace;
|
|
@@ -258,19 +259,21 @@ async function speak(command, commandArgs, cliOptions) {
|
|
|
258
259
|
else {
|
|
259
260
|
textSegments = splitToParagraphs(mainArg, plainTextParagraphBreaks, plainTextWhitespace);
|
|
260
261
|
}
|
|
262
|
+
plainText = mainArg;
|
|
261
263
|
}
|
|
262
264
|
else if (command == "speak-file") {
|
|
263
265
|
const sourceFile = mainArg;
|
|
264
266
|
if (!existsSync(sourceFile)) {
|
|
265
267
|
throw new Error(`The given source file '${sourceFile}' was not found.`);
|
|
266
268
|
}
|
|
267
|
-
const sourceFileExtension =
|
|
269
|
+
const sourceFileExtension = getLowercaseFileExtension(sourceFile);
|
|
268
270
|
const fileContent = await readFile(sourceFile, { encoding: 'utf-8' });
|
|
269
271
|
if (options.ssml && sourceFileExtension != "xml" && sourceFileExtension != "ssml") {
|
|
270
272
|
throw new Error(`SSML option is set, but source file doesn't have an 'xml' or 'ssml' extension.`);
|
|
271
273
|
}
|
|
272
274
|
if (sourceFileExtension == "txt") {
|
|
273
275
|
textSegments = splitToParagraphs(fileContent, plainTextParagraphBreaks, plainTextWhitespace);
|
|
276
|
+
plainText = fileContent;
|
|
274
277
|
}
|
|
275
278
|
else if (sourceFileExtension == "html" || sourceFileExtension == "htm") {
|
|
276
279
|
const textContent = await convertHtmlToText(fileContent);
|
|
@@ -317,7 +320,7 @@ async function speak(command, commandArgs, cliOptions) {
|
|
|
317
320
|
if (includesPartPattern) {
|
|
318
321
|
progressLogger.start("Writing output files for segment");
|
|
319
322
|
}
|
|
320
|
-
await writeOutputFilesForSegment(outputFilenames, segmentData.index, segmentData.total, segmentData.audio, segmentData.timeline, segmentData.transcript, segmentData.language);
|
|
323
|
+
await writeOutputFilesForSegment(outputFilenames, segmentData.index, segmentData.total, segmentData.audio, segmentData.timeline, segmentData.transcript, segmentData.language, allowOverwrite);
|
|
321
324
|
progressLogger.end();
|
|
322
325
|
if (options.play) {
|
|
323
326
|
let gainAmount = -3 - segmentData.peakDecibelsSoFar;
|
|
@@ -328,6 +331,9 @@ async function speak(command, commandArgs, cliOptions) {
|
|
|
328
331
|
}
|
|
329
332
|
}
|
|
330
333
|
const { synthesizedAudio, timeline } = await API.synthesizeSegments(textSegments, options, onSegment, undefined);
|
|
334
|
+
if (plainText) {
|
|
335
|
+
addWordTextOffsetsToTimeline(timeline, plainText);
|
|
336
|
+
}
|
|
331
337
|
if (outputFilenames.length > 0) {
|
|
332
338
|
progressLogger.start("\nWriting output files");
|
|
333
339
|
}
|
|
@@ -336,7 +342,7 @@ async function speak(command, commandArgs, cliOptions) {
|
|
|
336
342
|
if (partPatternMatch) {
|
|
337
343
|
continue;
|
|
338
344
|
}
|
|
339
|
-
const fileSaver = getFileSaver(outputFile);
|
|
345
|
+
const fileSaver = getFileSaver(outputFile, allowOverwrite);
|
|
340
346
|
await fileSaver(synthesizedAudio, timeline, textSegments.join("\n\n"), options.subtitles);
|
|
341
347
|
}
|
|
342
348
|
progressLogger.end();
|
|
@@ -359,9 +365,10 @@ async function transcribe(commandArgs, cliOptions) {
|
|
|
359
365
|
}
|
|
360
366
|
const options = await cliOptionsMapToOptionsObject(cliOptions, "RecognitionOptions", additionalOptionsSchema);
|
|
361
367
|
const allowOverwrite = getWithDefault(options.overwrite, overwriteByDefault);
|
|
362
|
-
const { includesPartPattern } = await checkOutputFilenames(outputFilenames, true, true, true
|
|
368
|
+
const { includesPartPattern } = await checkOutputFilenames(outputFilenames, true, true, true);
|
|
363
369
|
const { transcript, timeline: wordTimeline, rawAudio, language } = await API.recognizeFile(sourceFilename, options);
|
|
364
370
|
const { segmentTimeline } = await wordTimelineToSegmentSentenceTimeline(wordTimeline, transcript, language, 'single', 'preserve');
|
|
371
|
+
addWordTextOffsetsToTimeline(segmentTimeline, transcript);
|
|
365
372
|
if (outputFilenames.length > 0) {
|
|
366
373
|
progressLogger.start("\nWriting output files");
|
|
367
374
|
}
|
|
@@ -370,7 +377,7 @@ async function transcribe(commandArgs, cliOptions) {
|
|
|
370
377
|
if (partPatternMatch) {
|
|
371
378
|
continue;
|
|
372
379
|
}
|
|
373
|
-
const fileSaver = getFileSaver(outputFile);
|
|
380
|
+
const fileSaver = getFileSaver(outputFile, allowOverwrite);
|
|
374
381
|
await fileSaver(rawAudio, segmentTimeline, transcript, options.subtitles);
|
|
375
382
|
}
|
|
376
383
|
progressLogger.end();
|
|
@@ -396,7 +403,7 @@ async function align(commandArgs, cliOptions) {
|
|
|
396
403
|
if (!existsSync(alignmentReferenceFile)) {
|
|
397
404
|
throw new Error(`The given reference file '${alignmentReferenceFile}' was not found.`);
|
|
398
405
|
}
|
|
399
|
-
const referenceFileExtension =
|
|
406
|
+
const referenceFileExtension = getLowercaseFileExtension(alignmentReferenceFile);
|
|
400
407
|
const fileContent = await readFile(alignmentReferenceFile, { encoding: 'utf-8' });
|
|
401
408
|
let text;
|
|
402
409
|
if (referenceFileExtension == "txt") {
|
|
@@ -419,9 +426,10 @@ async function align(commandArgs, cliOptions) {
|
|
|
419
426
|
}
|
|
420
427
|
const options = await cliOptionsMapToOptionsObject(cliOptions, "AlignmentOptions", additionalOptionsSchema);
|
|
421
428
|
const allowOverwrite = getWithDefault(options.overwrite, overwriteByDefault);
|
|
422
|
-
const { includesPartPattern } = await checkOutputFilenames(outputFilenames, true, true, true
|
|
429
|
+
const { includesPartPattern } = await checkOutputFilenames(outputFilenames, true, true, true);
|
|
423
430
|
const { wordTimeline, rawAudio, transcript, language } = await API.alignFile(audioFilename, text, options);
|
|
424
431
|
const { segmentTimeline } = await wordTimelineToSegmentSentenceTimeline(wordTimeline, transcript, language, options.plainText?.paragraphBreaks, options.plainText?.whitespace);
|
|
432
|
+
addWordTextOffsetsToTimeline(segmentTimeline, transcript);
|
|
425
433
|
if (outputFilenames.length > 0) {
|
|
426
434
|
progressLogger.start("\nWriting output files");
|
|
427
435
|
}
|
|
@@ -430,7 +438,7 @@ async function align(commandArgs, cliOptions) {
|
|
|
430
438
|
const segmentEntry = segmentTimeline[segmentIndex];
|
|
431
439
|
const segmentAudio = sliceRawAudioByTime(rawAudio, segmentEntry.startTime, segmentEntry.endTime);
|
|
432
440
|
const sentenceTimeline = addTimeOffsetToTimeline(segmentEntry.timeline, -segmentEntry.startTime);
|
|
433
|
-
await writeOutputFilesForSegment(outputFilenames, segmentIndex, segmentTimeline.length, segmentAudio, sentenceTimeline, segmentEntry.text, language);
|
|
441
|
+
await writeOutputFilesForSegment(outputFilenames, segmentIndex, segmentTimeline.length, segmentAudio, sentenceTimeline, segmentEntry.text, language, allowOverwrite);
|
|
434
442
|
}
|
|
435
443
|
}
|
|
436
444
|
for (const outputFile of outputFilenames) {
|
|
@@ -438,7 +446,7 @@ async function align(commandArgs, cliOptions) {
|
|
|
438
446
|
if (partPatternMatch) {
|
|
439
447
|
continue;
|
|
440
448
|
}
|
|
441
|
-
const fileSaver = getFileSaver(outputFile);
|
|
449
|
+
const fileSaver = getFileSaver(outputFile, allowOverwrite);
|
|
442
450
|
await fileSaver(rawAudio, segmentTimeline, transcript, options.subtitles);
|
|
443
451
|
}
|
|
444
452
|
progressLogger.end();
|
|
@@ -466,9 +474,10 @@ async function translateSpeech(commandArgs, cliOptions) {
|
|
|
466
474
|
}
|
|
467
475
|
const options = await cliOptionsMapToOptionsObject(cliOptions, "SpeechTranslationOptions", additionalOptionsSchema);
|
|
468
476
|
const allowOverwrite = getWithDefault(options.overwrite, overwriteByDefault);
|
|
469
|
-
await checkOutputFilenames(outputFilenames, true, true, true
|
|
477
|
+
await checkOutputFilenames(outputFilenames, true, true, true);
|
|
470
478
|
const { transcript, timeline: wordTimeline, rawAudio, targetLanguage } = await API.translateSpeechFile(inputFilename, options);
|
|
471
479
|
const { segmentTimeline } = await wordTimelineToSegmentSentenceTimeline(wordTimeline, transcript, targetLanguage, 'single', 'preserve');
|
|
480
|
+
addWordTextOffsetsToTimeline(segmentTimeline, transcript);
|
|
472
481
|
if (outputFilenames.length > 0) {
|
|
473
482
|
progressLogger.start("\nWriting output files");
|
|
474
483
|
}
|
|
@@ -477,7 +486,7 @@ async function translateSpeech(commandArgs, cliOptions) {
|
|
|
477
486
|
if (partPatternMatch) {
|
|
478
487
|
continue;
|
|
479
488
|
}
|
|
480
|
-
const fileSaver = getFileSaver(outputFile);
|
|
489
|
+
const fileSaver = getFileSaver(outputFile, allowOverwrite);
|
|
481
490
|
await fileSaver(rawAudio, segmentTimeline, transcript, options.subtitles);
|
|
482
491
|
}
|
|
483
492
|
progressLogger.end();
|
|
@@ -495,9 +504,10 @@ async function detectLanguage(commandArgs, cliOptions, mode) {
|
|
|
495
504
|
}
|
|
496
505
|
const additionalOptionsSchema = new Map();
|
|
497
506
|
additionalOptionsSchema.set('overwrite', { type: 'boolean' });
|
|
498
|
-
const inputFileExtension =
|
|
507
|
+
const inputFileExtension = getLowercaseFileExtension(inputFilePath);
|
|
499
508
|
const supportedInputTextFormats = ["txt", "srt", "vtt"];
|
|
500
509
|
let results;
|
|
510
|
+
let allowOverwrite;
|
|
501
511
|
if (mode == "text" || (mode == "auto" && supportedInputTextFormats.includes(inputFileExtension))) {
|
|
502
512
|
if (inputFilePath == undefined) {
|
|
503
513
|
throw new Error(`detect-text-language requires an argument containing the input file path.`);
|
|
@@ -506,8 +516,8 @@ async function detectLanguage(commandArgs, cliOptions, mode) {
|
|
|
506
516
|
throw new Error(`'detect-text-language' doesn't support input file extension '${inputFileExtension}'`);
|
|
507
517
|
}
|
|
508
518
|
const options = await cliOptionsMapToOptionsObject(cliOptions, "TextLanguageDetectionOptions", additionalOptionsSchema);
|
|
509
|
-
|
|
510
|
-
await checkOutputFilenames(outputFilenames, false, true, false
|
|
519
|
+
allowOverwrite = getWithDefault(options.overwrite, overwriteByDefault);
|
|
520
|
+
await checkOutputFilenames(outputFilenames, false, true, false);
|
|
511
521
|
let text = await readFile(inputFilePath, { encoding: "utf-8" });
|
|
512
522
|
if (inputFileExtension == "srt" || inputFileExtension == "vtt") {
|
|
513
523
|
text = subtitlesToText(text);
|
|
@@ -520,8 +530,8 @@ async function detectLanguage(commandArgs, cliOptions, mode) {
|
|
|
520
530
|
throw new Error(`detect-speech-language requires an argument containing the input audio file path.`);
|
|
521
531
|
}
|
|
522
532
|
const options = await cliOptionsMapToOptionsObject(cliOptions, "SpeechLanguageDetectionOptions", additionalOptionsSchema);
|
|
523
|
-
|
|
524
|
-
await checkOutputFilenames(outputFilenames, false, true, false
|
|
533
|
+
allowOverwrite = getWithDefault(options.overwrite, overwriteByDefault);
|
|
534
|
+
await checkOutputFilenames(outputFilenames, false, true, false);
|
|
525
535
|
const { detectedLanguage, detectedLanguageProbabilities } = await API.detectSpeechFileLanguage(inputFilePath, options);
|
|
526
536
|
results = detectedLanguageProbabilities;
|
|
527
537
|
}
|
|
@@ -529,7 +539,7 @@ async function detectLanguage(commandArgs, cliOptions, mode) {
|
|
|
529
539
|
progressLogger.start("\nWriting output files");
|
|
530
540
|
const resultsAsText = results.map(result => `${formatLanguageCodeWithName(result.language)}: ${result.probability.toFixed(5)}`).join("\n");
|
|
531
541
|
for (const outputFile of outputFilenames) {
|
|
532
|
-
const fileSaver = getFileSaver(outputFile);
|
|
542
|
+
const fileSaver = getFileSaver(outputFile, allowOverwrite);
|
|
533
543
|
await fileSaver(getEmptyRawAudio(0, 0), results, resultsAsText);
|
|
534
544
|
}
|
|
535
545
|
}
|
|
@@ -558,7 +568,7 @@ async function detectVoiceActivity(commandArgs, cliOptions) {
|
|
|
558
568
|
}
|
|
559
569
|
const options = await cliOptionsMapToOptionsObject(cliOptions, "VADOptions", additionalOptionsSchema);
|
|
560
570
|
const allowOverwrite = getWithDefault(options.overwrite, overwriteByDefault);
|
|
561
|
-
await checkOutputFilenames(outputFilenames, true, true, false
|
|
571
|
+
await checkOutputFilenames(outputFilenames, true, true, false);
|
|
562
572
|
const { timeline, rawAudio } = await API.detectFileVoiceActivity(audioFilename, options);
|
|
563
573
|
if (outputFilenames.length > 0) {
|
|
564
574
|
progressLogger.start("\nWriting output files");
|
|
@@ -568,7 +578,7 @@ async function detectVoiceActivity(commandArgs, cliOptions) {
|
|
|
568
578
|
if (partPatternMatch) {
|
|
569
579
|
continue;
|
|
570
580
|
}
|
|
571
|
-
const fileSaver = getFileSaver(outputFile);
|
|
581
|
+
const fileSaver = getFileSaver(outputFile, allowOverwrite);
|
|
572
582
|
await fileSaver(rawAudio, timeline, "");
|
|
573
583
|
}
|
|
574
584
|
progressLogger.end();
|
|
@@ -595,13 +605,13 @@ async function denoise(commandArgs, cliOptions) {
|
|
|
595
605
|
}
|
|
596
606
|
const options = await cliOptionsMapToOptionsObject(cliOptions, "DenoisingOptions", additionalOptionsSchema);
|
|
597
607
|
const allowOverwrite = getWithDefault(options.overwrite, overwriteByDefault);
|
|
598
|
-
await checkOutputFilenames(outputFilenames, true, false, false
|
|
608
|
+
await checkOutputFilenames(outputFilenames, true, false, false);
|
|
599
609
|
const outputAudio = await API.denoiseFile(audioFilename, options);
|
|
600
610
|
if (outputFilenames.length > 0) {
|
|
601
611
|
progressLogger.start("\nWriting output files");
|
|
602
612
|
}
|
|
603
613
|
for (const filename of outputFilenames) {
|
|
604
|
-
const fileSaver = getFileSaver(filename);
|
|
614
|
+
const fileSaver = getFileSaver(filename, allowOverwrite);
|
|
605
615
|
await fileSaver(outputAudio, [], "");
|
|
606
616
|
}
|
|
607
617
|
progressLogger.end();
|
|
@@ -694,7 +704,7 @@ async function listTTSVoices(commandArgs, cliOptions) {
|
|
|
694
704
|
cliOptions.set('engine', targetEngine);
|
|
695
705
|
const options = await cliOptionsMapToOptionsObject(cliOptions, "VoiceListRequestOptions", additionalOptionsSchema);
|
|
696
706
|
const allowOverwrite = getWithDefault(options.overwrite, overwriteByDefault);
|
|
697
|
-
await checkOutputFilenames(outputFilenames, false, true, false
|
|
707
|
+
await checkOutputFilenames(outputFilenames, false, true, false);
|
|
698
708
|
const { voiceList } = await API.requestVoiceList(options);
|
|
699
709
|
const voiceListText = voiceList.map(entry => {
|
|
700
710
|
const nameText = entry.name;
|
|
@@ -710,7 +720,7 @@ async function listTTSVoices(commandArgs, cliOptions) {
|
|
|
710
720
|
if (outputFilenames.length > 0) {
|
|
711
721
|
progressLogger.start("\nWriting output files");
|
|
712
722
|
for (const filename of outputFilenames) {
|
|
713
|
-
const fileSaver = getFileSaver(filename);
|
|
723
|
+
const fileSaver = getFileSaver(filename, allowOverwrite);
|
|
714
724
|
const { default: stripAnsi } = await import('strip-ansi');
|
|
715
725
|
const voiceListTextWithoutColors = stripAnsi(voiceListText);
|
|
716
726
|
await fileSaver(getEmptyRawAudio(0, 0), voiceList, voiceListTextWithoutColors);
|
|
@@ -857,7 +867,8 @@ async function cliOptionsMapToOptionsObject(cliOptionsMap, optionsRoot, addition
|
|
|
857
867
|
}
|
|
858
868
|
else if (optionType == 'array' || optionType == 'object') {
|
|
859
869
|
try {
|
|
860
|
-
|
|
870
|
+
const { default: JSON5 } = await import('json5');
|
|
871
|
+
parsedValue = JSON5.parse(value);
|
|
861
872
|
}
|
|
862
873
|
catch (e) {
|
|
863
874
|
parsedValue = value;
|
|
@@ -880,7 +891,7 @@ export async function getOptionsSchema() {
|
|
|
880
891
|
}
|
|
881
892
|
return cachedOptionsSchema;
|
|
882
893
|
}
|
|
883
|
-
export async function checkOutputFilenames(outputFilenames, acceptMediaOutputs, acceptMetadataOutputs, acceptSubtitleOutputs
|
|
894
|
+
export async function checkOutputFilenames(outputFilenames, acceptMediaOutputs, acceptMetadataOutputs, acceptSubtitleOutputs) {
|
|
884
895
|
const supportedFileExtensions = [];
|
|
885
896
|
if (acceptMediaOutputs) {
|
|
886
897
|
supportedFileExtensions.push(...supportedOutputMediaFileExtensions);
|
|
@@ -893,7 +904,7 @@ export async function checkOutputFilenames(outputFilenames, acceptMediaOutputs,
|
|
|
893
904
|
}
|
|
894
905
|
let includesPartPattern = false;
|
|
895
906
|
for (const outputFilename of outputFilenames) {
|
|
896
|
-
const fileExtension =
|
|
907
|
+
const fileExtension = getLowercaseFileExtension(outputFilename);
|
|
897
908
|
if (!supportedFileExtensions.includes(fileExtension)) {
|
|
898
909
|
let errorText = "";
|
|
899
910
|
errorText += `\nThe specified output path '${outputFilename}' doesn't have a supported file extension.\n`;
|
|
@@ -916,13 +927,10 @@ export async function checkOutputFilenames(outputFilenames, acceptMediaOutputs,
|
|
|
916
927
|
}
|
|
917
928
|
includesPartPattern = true;
|
|
918
929
|
}
|
|
919
|
-
if (!allowOverwrite && existsSync(outputFilename)) {
|
|
920
|
-
throw new Error(`The output file '${outputFilename}' already exists`);
|
|
921
|
-
}
|
|
922
930
|
}
|
|
923
931
|
return { includesPartPattern };
|
|
924
932
|
}
|
|
925
|
-
export async function writeOutputFilesForSegment(outputFilenames, index, total, audio, timeline, text, language) {
|
|
933
|
+
export async function writeOutputFilesForSegment(outputFilenames, index, total, audio, timeline, text, language, allowOverwrite) {
|
|
926
934
|
const digitCount = Math.max((total + 1).toString().length, 2);
|
|
927
935
|
const segmentWords = (await splitToWords(text, language)).filter(text => wordCharacterPattern.test(text));
|
|
928
936
|
const segmentJoinedWords = segmentWords.join(" ").trim();
|
|
@@ -940,13 +948,23 @@ export async function writeOutputFilesForSegment(outputFilenames, index, total,
|
|
|
940
948
|
continue;
|
|
941
949
|
}
|
|
942
950
|
const segmentFilename = outputFilename.replace(segmentFilenamePattern, `${formatIntegerWithLeadingZeros(index + 1, digitCount)} - ${initialText}.$2`);
|
|
943
|
-
const fileSaver = getFileSaver(segmentFilename);
|
|
951
|
+
const fileSaver = getFileSaver(segmentFilename, allowOverwrite);
|
|
944
952
|
await fileSaver(audio, timeline, text);
|
|
945
953
|
}
|
|
946
954
|
}
|
|
947
|
-
function getFileSaver(outputFilePath) {
|
|
948
|
-
const
|
|
949
|
-
const
|
|
955
|
+
function getFileSaver(outputFilePath, allowOverwrite) {
|
|
956
|
+
const parsedPath = parsePath(outputFilePath);
|
|
957
|
+
const fileDir = parsedPath.dir || "./";
|
|
958
|
+
if (!allowOverwrite) {
|
|
959
|
+
const filenameParts = splitFilenameOnExtendedExtension(parsedPath.base);
|
|
960
|
+
for (let i = 1; existsSync(outputFilePath); i++) {
|
|
961
|
+
outputFilePath = path.join(parsedPath.dir, `${filenameParts[0]} (${i})`);
|
|
962
|
+
if (filenameParts[1]) {
|
|
963
|
+
outputFilePath += `.${filenameParts[1]}`;
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
const fileExtension = getLowercaseFileExtension(outputFilePath);
|
|
950
968
|
let fileSaver;
|
|
951
969
|
if (fileExtension == "txt") {
|
|
952
970
|
fileSaver = async (audio, timeline, text) => {
|
|
@@ -1043,6 +1061,6 @@ const supportedMetadataFileExtensions = ['txt', 'json'];
|
|
|
1043
1061
|
const supportedSubtitleFileExtensions = ['srt', 'vtt'];
|
|
1044
1062
|
const supportedOutputMediaFileExtensions = ["wav", "mp3", "opus", "m4a", "ogg", "flac"];
|
|
1045
1063
|
const segmentFilenamePattern = /\[(.*)\]\.(.*)$/;
|
|
1046
|
-
const overwriteByDefault =
|
|
1064
|
+
const overwriteByDefault = false;
|
|
1047
1065
|
startIfInWorkerThread();
|
|
1048
1066
|
//# sourceMappingURL=CLI.js.map
|