echogarden 1.4.4 → 1.6.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/data/schemas/options.json +310 -25
- package/dist/alignment/DTWMfccSequenceAlignment.d.ts +1 -1
- package/dist/alignment/DTWMfccSequenceAlignment.js +5 -5
- package/dist/alignment/DTWSequenceAlignmentWindowed.js +1 -3
- package/dist/alignment/DTWSequenceAlignmentWindowed.js.map +1 -1
- package/dist/alignment/{TextAlignment.d.ts → SemanticTextAlignment.d.ts} +4 -2
- package/dist/alignment/SemanticTextAlignment.js +336 -0
- package/dist/alignment/SemanticTextAlignment.js.map +1 -0
- package/dist/alignment/SpeechAlignment.d.ts +4 -3
- package/dist/alignment/SpeechAlignment.js +130 -39
- package/dist/alignment/SpeechAlignment.js.map +1 -1
- package/dist/api/API.d.ts +7 -3
- package/dist/api/API.js +7 -2
- package/dist/api/API.js.map +1 -1
- package/dist/api/APIOptions.d.ts +4 -1
- package/dist/api/Alignment.d.ts +1 -1
- package/dist/api/Alignment.js +13 -5
- package/dist/api/Alignment.js.map +1 -1
- package/dist/api/LanguageDetectionCommon.d.ts +6 -0
- package/dist/api/LanguageDetectionCommon.js +2 -0
- package/dist/api/LanguageDetectionCommon.js.map +1 -0
- package/dist/api/Recognition.js.map +1 -1
- package/dist/api/{LanguageDetection.d.ts → SpeechLanguageDetection.d.ts} +1 -25
- package/dist/api/{LanguageDetection.js → SpeechLanguageDetection.js} +1 -68
- package/dist/api/SpeechLanguageDetection.js.map +1 -0
- package/dist/api/{Translation.js → SpeechTranslation.js} +3 -3
- package/dist/api/SpeechTranslation.js.map +1 -0
- package/dist/api/Synthesis.d.ts +0 -1
- package/dist/api/Synthesis.js +4 -4
- package/dist/api/TextLanguageDetection.d.ts +21 -0
- package/dist/api/TextLanguageDetection.js +67 -0
- package/dist/api/TextLanguageDetection.js.map +1 -0
- package/dist/api/TextTranslation.d.ts +25 -0
- package/dist/api/TextTranslation.js +101 -0
- package/dist/api/TextTranslation.js.map +1 -0
- package/dist/api/TimelineTranslationAlignment.d.ts +23 -0
- package/dist/api/TimelineTranslationAlignment.js +92 -0
- package/dist/api/TimelineTranslationAlignment.js.map +1 -0
- package/dist/api/TranscriptAndTranslationAlignment.d.ts +35 -0
- package/dist/api/TranscriptAndTranslationAlignment.js +78 -0
- package/dist/api/TranscriptAndTranslationAlignment.js.map +1 -0
- package/dist/api/TranslationAlignment.d.ts +4 -3
- package/dist/api/TranslationAlignment.js +9 -8
- package/dist/api/TranslationAlignment.js.map +1 -1
- package/dist/api/VoiceActivityDetection.js +16 -1
- package/dist/api/VoiceActivityDetection.js.map +1 -1
- package/dist/audio/AudioBufferConversion.d.ts +0 -1
- package/dist/audio/AudioPlayer.d.ts +0 -1
- package/dist/audio/AudioPlayer.js +62 -41
- package/dist/audio/AudioPlayer.js.map +1 -1
- package/dist/audio/AudioUtilities.d.ts +0 -1
- package/dist/cli/CLI.d.ts +28 -7
- package/dist/cli/CLI.js +265 -37
- package/dist/cli/CLI.js.map +1 -1
- package/dist/codecs/FFMpegTranscoder.d.ts +0 -1
- package/dist/codecs/FFMpegTranscoder.js +7 -0
- package/dist/codecs/FFMpegTranscoder.js.map +1 -1
- package/dist/codecs/TIMITCodec.d.ts +0 -1
- package/dist/codecs/WaveCodec.d.ts +0 -1
- package/dist/dsp/FFT.d.ts +1 -1
- package/dist/dsp/FFT.js +6 -0
- package/dist/dsp/FFT.js.map +1 -1
- package/dist/dsp/KWeightingFilter.js +1 -1
- package/dist/dsp/KWeightingFilter.js.map +1 -1
- package/dist/dsp/MelSpectogram.d.ts +3 -2
- package/dist/dsp/MelSpectogram.js +14 -8
- package/dist/dsp/MelSpectogram.js.map +1 -1
- package/dist/math/VectorMath.d.ts +9 -9
- package/dist/math/VectorMath.js +10 -10
- package/dist/math/VectorMath.js.map +1 -1
- package/dist/nlp/ChineseSegmentation.js +4 -4
- package/dist/nlp/ChineseSegmentation.js.map +1 -1
- package/dist/nlp/Segmentation.d.ts +2 -2
- package/dist/nlp/Segmentation.js +20 -13
- package/dist/nlp/Segmentation.js.map +1 -1
- package/dist/recognition/OpenAICloudSTT.d.ts +2 -1
- package/dist/recognition/OpenAICloudSTT.js +30 -19
- package/dist/recognition/OpenAICloudSTT.js.map +1 -1
- package/dist/recognition/SileroSTT.d.ts +0 -1
- package/dist/recognition/WhisperCppSTT.d.ts +3 -3
- package/dist/recognition/WhisperCppSTT.js +21 -9
- package/dist/recognition/WhisperCppSTT.js.map +1 -1
- package/dist/recognition/WhisperSTT.d.ts +9 -6
- package/dist/recognition/WhisperSTT.js +227 -46
- package/dist/recognition/WhisperSTT.js.map +1 -1
- package/dist/server/Client.d.ts +3 -4
- package/dist/server/Client.js.map +1 -1
- package/dist/server/Worker.d.ts +3 -3
- package/dist/server/Worker.js +3 -2
- package/dist/server/Worker.js.map +1 -1
- package/dist/source-separation/MDXNetSourceSeparation.d.ts +0 -1
- package/dist/source-separation/MDXNetSourceSeparation.js +1 -1
- package/dist/source-separation/MDXNetSourceSeparation.js.map +1 -1
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.d.ts +12 -0
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js +68 -0
- package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js.map +1 -0
- package/dist/speech-language-detection/SileroLanguageDetection.d.ts +1 -2
- package/dist/speech-language-detection/SileroLanguageDetection.js +1 -1
- package/dist/speech-language-detection/SileroLanguageDetection.js.map +1 -1
- package/dist/subtitles/Subtitles.js +2 -2
- package/dist/subtitles/Subtitles.js.map +1 -1
- package/dist/synthesis/GoogleCloudTTS.d.ts +0 -1
- package/dist/synthesis/GoogleTranslateTTS.d.ts +0 -1
- package/dist/synthesis/GoogleTranslateTTS.js +6 -21
- package/dist/synthesis/GoogleTranslateTTS.js.map +1 -1
- package/dist/synthesis/StreamlabsPollyTTS.d.ts +0 -1
- package/dist/synthesis/VitsTTS.d.ts +0 -1
- package/dist/synthesis/VitsTTS.js +30 -0
- package/dist/synthesis/VitsTTS.js.map +1 -1
- package/dist/tests/Test.js +0 -31
- package/dist/tests/Test.js.map +1 -1
- package/dist/text-language-detection/FastTextLanguageDetection.d.ts +1 -1
- package/dist/text-language-detection/FastTextLanguageDetection.js.map +1 -1
- package/dist/text-language-detection/TinyLDLanguageDetection.d.ts +1 -1
- package/dist/text-language-detection/TinyLDLanguageDetection.js.map +1 -1
- package/dist/text-translation/DeepLTextTranslation.d.ts +2 -0
- package/dist/text-translation/DeepLTextTranslation.js +67 -0
- package/dist/text-translation/DeepLTextTranslation.js.map +1 -0
- package/dist/text-translation/GoogleTranslateTextTranslation.d.ts +10 -0
- package/dist/text-translation/GoogleTranslateTextTranslation.js +554 -0
- package/dist/text-translation/GoogleTranslateTextTranslation.js.map +1 -0
- package/dist/text-translation/NLLBTextTranslation.d.ts +2 -1
- package/dist/text-translation/NLLBTextTranslation.js +249 -19
- package/dist/text-translation/NLLBTextTranslation.js.map +1 -1
- package/dist/utilities/BinaryArrayConversion.d.ts +0 -1
- package/dist/utilities/BrowserRequestHeaders.d.ts +6 -0
- package/dist/utilities/BrowserRequestHeaders.js +52 -0
- package/dist/utilities/BrowserRequestHeaders.js.map +1 -0
- package/dist/utilities/BufferFileReadStream.d.ts +20 -0
- package/dist/utilities/BufferFileReadStream.js +81 -0
- package/dist/utilities/BufferFileReadStream.js.map +1 -0
- package/dist/utilities/DynamicUint8Array.d.ts +9 -0
- package/dist/utilities/DynamicUint8Array.js +31 -0
- package/dist/utilities/DynamicUint8Array.js.map +1 -0
- package/dist/utilities/FileSystem.d.ts +0 -2
- package/dist/utilities/Hashing.d.ts +3 -10
- package/dist/utilities/Hashing.js +10 -127
- package/dist/utilities/Hashing.js.map +1 -1
- package/dist/utilities/LEB128.d.ts +15 -5
- package/dist/utilities/LEB128.js +199 -119
- package/dist/utilities/LEB128.js.map +1 -1
- package/dist/utilities/LPVarInt.d.ts +11 -0
- package/dist/utilities/LPVarInt.js +187 -0
- package/dist/utilities/LPVarInt.js.map +1 -0
- package/dist/utilities/Locale.d.ts +1 -1
- package/dist/utilities/Locale.js +1 -1
- package/dist/utilities/OnnxUtilities.d.ts +1 -2
- package/dist/utilities/PVarInt.d.ts +4 -0
- package/dist/utilities/PVarInt.js +166 -0
- package/dist/utilities/PVarInt.js.map +1 -0
- package/dist/utilities/PackageManager.js +48 -25
- package/dist/utilities/PackageManager.js.map +1 -1
- package/dist/utilities/RandomGenerator.d.ts +3 -17
- package/dist/utilities/RandomGenerator.js +12 -81
- package/dist/utilities/RandomGenerator.js.map +1 -1
- package/dist/utilities/Timeline.d.ts +2 -0
- package/dist/utilities/Timeline.js +129 -20
- package/dist/utilities/Timeline.js.map +1 -1
- package/dist/utilities/Utilities.d.ts +1 -3
- package/dist/utilities/Utilities.js +30 -3
- package/dist/utilities/Utilities.js.map +1 -1
- package/dist/utilities/VarInt.d.ts +4 -0
- package/dist/utilities/VarInt.js +166 -0
- package/dist/utilities/VarInt.js.map +1 -0
- package/dist/utilities/VirtualFileReadStream.d.ts +20 -0
- package/dist/utilities/VirtualFileReadStream.js +79 -0
- package/dist/utilities/VirtualFileReadStream.js.map +1 -0
- package/dist/utilities/WebReader.js +7 -23
- package/dist/utilities/WebReader.js.map +1 -1
- package/dist/voice-activity-detection/SileroVAD.d.ts +0 -1
- package/docs/API.md +105 -3
- package/docs/CLI.md +51 -1
- package/docs/Engines.md +32 -3
- package/docs/Options.md +53 -12
- package/docs/Tasklist.md +1 -13
- package/package.json +20 -24
- package/src/alignment/DTWMfccSequenceAlignment.ts +5 -5
- package/src/alignment/DTWSequenceAlignmentWindowed.ts +1 -3
- package/src/alignment/SemanticTextAlignment.ts +467 -0
- package/src/alignment/SpeechAlignment.ts +214 -56
- package/src/api/API.ts +18 -2
- package/src/api/APIOptions.ts +14 -1
- package/src/api/Alignment.ts +31 -9
- package/src/api/LanguageDetectionCommon.ts +7 -0
- package/src/api/Recognition.ts +2 -0
- package/src/api/{LanguageDetection.ts → SpeechLanguageDetection.ts} +1 -119
- package/src/api/{Translation.ts → SpeechTranslation.ts} +2 -2
- package/src/api/Synthesis.ts +4 -4
- package/src/api/TextLanguageDetection.ts +116 -0
- package/src/api/TextTranslation.ts +177 -0
- package/src/api/TimelineTranslationAlignment.ts +162 -0
- package/src/api/TranscriptAndTranslationAlignment.ts +164 -0
- package/src/api/TranslationAlignment.ts +12 -10
- package/src/api/VoiceActivityDetection.ts +24 -3
- package/src/audio/AudioPlayer.ts +2 -0
- package/src/cli/CLI.ts +376 -40
- package/src/codecs/FFMpegTranscoder.ts +6 -0
- package/src/dsp/FFT.ts +8 -2
- package/src/dsp/KWeightingFilter.ts +1 -1
- package/src/dsp/MelSpectogram.ts +17 -8
- package/src/math/VectorMath.ts +15 -15
- package/src/nlp/ChineseSegmentation.ts +6 -4
- package/src/nlp/Segmentation.ts +18 -13
- package/src/recognition/OpenAICloudSTT.ts +47 -29
- package/src/recognition/WhisperCppSTT.ts +26 -11
- package/src/recognition/WhisperSTT.ts +364 -49
- package/src/server/Client.ts +3 -2
- package/src/server/Worker.ts +3 -2
- package/src/source-separation/MDXNetSourceSeparation.ts +1 -1
- package/src/speech-embeddings/WavToVec2BertFeatureEmbeddings.ts +107 -0
- package/src/speech-language-detection/SileroLanguageDetection.ts +2 -1
- package/src/subtitles/Subtitles.ts +2 -2
- package/src/synthesis/GoogleTranslateTTS.ts +7 -21
- package/src/synthesis/VitsTTS.ts +31 -3
- package/src/tests/Test.ts +1 -38
- package/src/text-language-detection/FastTextLanguageDetection.ts +1 -1
- package/src/text-language-detection/TinyLDLanguageDetection.ts +1 -1
- package/src/text-translation/DeepLTextTranslation.ts +88 -0
- package/src/text-translation/GoogleTranslateTextTranslation.ts +667 -0
- package/src/text-translation/NLLBTextTranslation.ts +261 -21
- package/src/typings/Fillers.d.ts +25 -2
- package/src/utilities/BrowserRequestHeaders.ts +59 -0
- package/src/utilities/DynamicUint8Array.ts +39 -0
- package/src/utilities/Hashing.ts +14 -167
- package/src/utilities/LEB128.ts +273 -148
- package/src/utilities/LPVarInt.ts +292 -0
- package/src/utilities/Locale.ts +1 -1
- package/src/utilities/OnnxUtilities.ts +1 -1
- package/src/utilities/PackageManager.ts +51 -30
- package/src/utilities/RandomGenerator.ts +12 -113
- package/src/utilities/Timeline.ts +162 -23
- package/src/utilities/Utilities.ts +40 -3
- package/src/utilities/VirtualFileReadStream.ts +109 -0
- package/src/utilities/WebReader.ts +9 -23
- package/dist/alignment/TextAlignment.js +0 -156
- package/dist/alignment/TextAlignment.js.map +0 -1
- package/dist/api/LanguageDetection.js.map +0 -1
- package/dist/api/Translation.js.map +0 -1
- package/src/alignment/TextAlignment.ts +0 -234
- /package/dist/api/{Translation.d.ts → SpeechTranslation.d.ts} +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { extendDeep } from '../utilities/ObjectUtilities.js';
|
|
2
|
+
import { Logger } from '../utilities/Logger.js';
|
|
3
|
+
import { logToStderr } from '../utilities/Utilities.js';
|
|
4
|
+
import { languageCodeToName } from '../utilities/Locale.js';
|
|
5
|
+
const log = logToStderr;
|
|
6
|
+
export async function detectTextLanguage(input, options) {
|
|
7
|
+
const logger = new Logger();
|
|
8
|
+
options = extendDeep(defaultTextLanguageDetectionOptions, options);
|
|
9
|
+
const defaultLanguage = options.defaultLanguage;
|
|
10
|
+
const fallbackThresholdProbability = options.fallbackThresholdProbability;
|
|
11
|
+
let detectedLanguageProbabilities;
|
|
12
|
+
logger.start(`Initialize ${options.engine} module`);
|
|
13
|
+
switch (options.engine) {
|
|
14
|
+
case 'tinyld': {
|
|
15
|
+
const { detectLanguage } = await import('../text-language-detection/TinyLDLanguageDetection.js');
|
|
16
|
+
logger.start('Detect text language using tinyld');
|
|
17
|
+
detectedLanguageProbabilities = await detectLanguage(input);
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
case 'fasttext': {
|
|
21
|
+
const { detectLanguage } = await import('../text-language-detection/FastTextLanguageDetection.js');
|
|
22
|
+
logger.start('Detect text language using FastText');
|
|
23
|
+
detectedLanguageProbabilities = await detectLanguage(input);
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
default: {
|
|
27
|
+
throw new Error(`Engine '${options.engine}' is not supported`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
let detectedLanguage;
|
|
31
|
+
if (detectedLanguageProbabilities.length == 0 ||
|
|
32
|
+
detectedLanguageProbabilities[0].probability < fallbackThresholdProbability) {
|
|
33
|
+
detectedLanguage = defaultLanguage;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
detectedLanguage = detectedLanguageProbabilities[0].language;
|
|
37
|
+
}
|
|
38
|
+
logger.end();
|
|
39
|
+
return {
|
|
40
|
+
detectedLanguage,
|
|
41
|
+
detectedLanguageName: languageCodeToName(detectedLanguage),
|
|
42
|
+
detectedLanguageProbabilities
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
46
|
+
// Constants
|
|
47
|
+
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
48
|
+
export const defaultTextLanguageDetectionOptions = {
|
|
49
|
+
engine: 'tinyld',
|
|
50
|
+
defaultLanguage: 'en',
|
|
51
|
+
fallbackThresholdProbability: 0.05,
|
|
52
|
+
};
|
|
53
|
+
export const textLanguageDetectionEngines = [
|
|
54
|
+
{
|
|
55
|
+
id: 'tinyld',
|
|
56
|
+
name: 'TinyLD',
|
|
57
|
+
description: 'A simple language detection library.',
|
|
58
|
+
type: 'local'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: 'fasttext',
|
|
62
|
+
name: 'FastText',
|
|
63
|
+
description: 'A library for word representations and sentence classification by Facebook research.',
|
|
64
|
+
type: 'local'
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
//# sourceMappingURL=TextLanguageDetection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextLanguageDetection.js","sourceRoot":"","sources":["../../src/api/TextLanguageDetection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAG3D,MAAM,GAAG,GAAG,WAAW,CAAA;AAEvB,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAa,EAAE,OAAqC;IAC5F,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;IAE3B,OAAO,GAAG,UAAU,CAAC,mCAAmC,EAAE,OAAO,CAAC,CAAA;IAElE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAgB,CAAA;IAChD,MAAM,4BAA4B,GAAG,OAAO,CAAC,4BAA6B,CAAA;IAE1E,IAAI,6BAAuD,CAAA;IAE3D,MAAM,CAAC,KAAK,CAAC,cAAc,OAAO,CAAC,MAAM,SAAS,CAAC,CAAA;IAEnD,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uDAAuD,CAAC,CAAA;YAEhG,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;YAEjD,6BAA6B,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAA;YAE3D,MAAK;QACN,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,yDAAyD,CAAC,CAAA;YAElG,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;YAEnD,6BAA6B,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAA;YAE3D,MAAK;QACN,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAC,MAAM,oBAAoB,CAAC,CAAA;QAC/D,CAAC;IACF,CAAC;IAED,IAAI,gBAAwB,CAAA;IAE5B,IAAI,6BAA6B,CAAC,MAAM,IAAI,CAAC;QAC5C,6BAA6B,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,4BAA4B,EAAE,CAAC;QAE9E,gBAAgB,GAAG,eAAe,CAAA;IACnC,CAAC;SAAM,CAAC;QACP,gBAAgB,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC7D,CAAC;IAED,MAAM,CAAC,GAAG,EAAE,CAAA;IAEZ,OAAO;QACN,gBAAgB;QAChB,oBAAoB,EAAE,kBAAkB,CAAC,gBAAgB,CAAC;QAC1D,6BAA6B;KAC7B,CAAA;AACF,CAAC;AA0BD,6FAA6F;AAC7F,YAAY;AACZ,6FAA6F;AAE7F,MAAM,CAAC,MAAM,mCAAmC,GAAiC;IAChF,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,IAAI;IACrB,4BAA4B,EAAE,IAAI;CAClC,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAyB;IACjE;QACC,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,OAAO;KACb;IACD;QACC,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,sFAAsF;QACnG,IAAI,EAAE,OAAO;KACb;CACD,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as API from './API.js';
|
|
2
|
+
export declare function translateText(inputText: string, options: TextTranslationOptions): Promise<TextTranslationResult>;
|
|
3
|
+
export interface TextTranslationOptions {
|
|
4
|
+
engine?: TextTranslationEngine;
|
|
5
|
+
sourceLanguage?: string;
|
|
6
|
+
targetLanguage?: string;
|
|
7
|
+
languageDetection?: API.TextLanguageDetectionOptions;
|
|
8
|
+
nllb?: {};
|
|
9
|
+
googleTranslate?: {};
|
|
10
|
+
deepl?: {};
|
|
11
|
+
}
|
|
12
|
+
export interface TextTranslationResult {
|
|
13
|
+
text: string;
|
|
14
|
+
translatedText: string;
|
|
15
|
+
translationPairs: TranslationPair[];
|
|
16
|
+
sourceLanguage: string;
|
|
17
|
+
targetLanguage: string;
|
|
18
|
+
}
|
|
19
|
+
export type TextTranslationEngine = 'nllb' | 'google-translate' | 'deepl';
|
|
20
|
+
export interface TranslationPair {
|
|
21
|
+
sourceText: string;
|
|
22
|
+
translatedText: string;
|
|
23
|
+
}
|
|
24
|
+
export declare const defaultTextTranslationOptions: TextTranslationOptions;
|
|
25
|
+
export declare const textTranslationEngines: API.EngineMetadata[];
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { formatLanguageCodeWithName, normalizeIdentifierToLanguageCode, parseLangIdentifier } from '../utilities/Locale.js';
|
|
3
|
+
import { Logger } from '../utilities/Logger.js';
|
|
4
|
+
import { extendDeep } from '../utilities/ObjectUtilities.js';
|
|
5
|
+
import * as API from './API.js';
|
|
6
|
+
export async function translateText(inputText, options) {
|
|
7
|
+
const logger = new Logger();
|
|
8
|
+
const startTimestamp = logger.getTimestamp();
|
|
9
|
+
options = extendDeep(defaultTextTranslationOptions, options);
|
|
10
|
+
if (options.sourceLanguage) {
|
|
11
|
+
const languageData = await parseLangIdentifier(options.sourceLanguage);
|
|
12
|
+
options.sourceLanguage = languageData.Name;
|
|
13
|
+
logger.end();
|
|
14
|
+
logger.logTitledMessage('Source language specified', formatLanguageCodeWithName(options.sourceLanguage));
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
logger.start('No source language specified. Detect text language');
|
|
18
|
+
const { detectedLanguage } = await API.detectTextLanguage(inputText, options.languageDetection || {});
|
|
19
|
+
options.sourceLanguage = detectedLanguage;
|
|
20
|
+
logger.end();
|
|
21
|
+
logger.logTitledMessage('Source language detected', formatLanguageCodeWithName(detectedLanguage));
|
|
22
|
+
}
|
|
23
|
+
options.targetLanguage = await normalizeIdentifierToLanguageCode(options.targetLanguage);
|
|
24
|
+
logger.logTitledMessage('Target language', formatLanguageCodeWithName(options.targetLanguage));
|
|
25
|
+
logger.start(`Load ${options.engine} module`);
|
|
26
|
+
let translationPairs;
|
|
27
|
+
switch (options.engine) {
|
|
28
|
+
case 'nllb': {
|
|
29
|
+
const NLLBTextTranslation = await import('../text-translation/NLLBTextTranslation.js');
|
|
30
|
+
logger.end();
|
|
31
|
+
logger.logTitledMessage(`Warning`, `The nllb engine is currently an early prototype implementation and doesn't work correctly.`, chalk.yellow, 'warning');
|
|
32
|
+
translationPairs = await NLLBTextTranslation.translateText(inputText, options.sourceLanguage, options.targetLanguage);
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
case 'google-translate': {
|
|
36
|
+
const GoogleTranslateTextTranslation = await import('../text-translation/GoogleTranslateTextTranslation.js');
|
|
37
|
+
logger.end();
|
|
38
|
+
translationPairs = await GoogleTranslateTextTranslation.translateText(inputText, options.sourceLanguage, options.targetLanguage);
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
case 'deepl': {
|
|
42
|
+
const DeepLTextTranslation = await import('../text-translation/DeepLTextTranslation.js');
|
|
43
|
+
logger.end();
|
|
44
|
+
logger.logTitledMessage(`Warning`, `The deepl engine is currently an early prototype implementation and doesn't work correctly.`, chalk.yellow, 'warning');
|
|
45
|
+
translationPairs = await DeepLTextTranslation.translateText(inputText, options.sourceLanguage, options.targetLanguage);
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
default: {
|
|
49
|
+
throw new Error(`'${options.engine}' is not a supported text translation engine.`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const translatedText = translationPairs.map(pair => {
|
|
53
|
+
const translated = pair.translatedText;
|
|
54
|
+
if (translated.endsWith(' ') || translated.endsWith('\n')) {
|
|
55
|
+
return pair.translatedText;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
return pair.translatedText + ' ';
|
|
59
|
+
}
|
|
60
|
+
}).join('').trim();
|
|
61
|
+
logger.end();
|
|
62
|
+
logger.log('');
|
|
63
|
+
logger.logDuration(`Total text translation time`, startTimestamp, chalk.magentaBright);
|
|
64
|
+
return {
|
|
65
|
+
text: inputText,
|
|
66
|
+
translatedText,
|
|
67
|
+
translationPairs,
|
|
68
|
+
sourceLanguage: options.sourceLanguage,
|
|
69
|
+
targetLanguage: options.targetLanguage,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export const defaultTextTranslationOptions = {
|
|
73
|
+
engine: 'google-translate',
|
|
74
|
+
sourceLanguage: undefined,
|
|
75
|
+
targetLanguage: 'en',
|
|
76
|
+
languageDetection: undefined,
|
|
77
|
+
nllb: {},
|
|
78
|
+
googleTranslate: {},
|
|
79
|
+
deepl: {},
|
|
80
|
+
};
|
|
81
|
+
export const textTranslationEngines = [
|
|
82
|
+
{
|
|
83
|
+
id: 'nllb',
|
|
84
|
+
name: 'NLLB',
|
|
85
|
+
description: 'No Language Left Behind (NLLB) is a deep learning machine translation model by Facebook Research (early prototype implementation).',
|
|
86
|
+
type: 'local'
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: 'google-translate',
|
|
90
|
+
name: 'Google Translate',
|
|
91
|
+
description: 'Unoffical text translation API used by the Google Translate web interface.',
|
|
92
|
+
type: 'cloud'
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: 'deepl',
|
|
96
|
+
name: 'DeepL',
|
|
97
|
+
description: 'Unoffical text translation API used by the DeepL web interface (early prototype implementation).',
|
|
98
|
+
type: 'cloud'
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
//# sourceMappingURL=TextTranslation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextTranslation.js","sourceRoot":"","sources":["../../src/api/TextTranslation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AudioSourceParam, RawAudio } from '../audio/AudioUtilities.js';
|
|
2
|
+
import { SubtitlesConfig } from '../subtitles/Subtitles.js';
|
|
3
|
+
import { Timeline } from '../utilities/Timeline.js';
|
|
4
|
+
import * as API from './API.js';
|
|
5
|
+
export declare function alignTimelineTranslation(inputTimeline: Timeline, translatedTranscript: string, options: TimelineTranslationAlignmentOptions): Promise<TimelineTranslationAlignmentResult>;
|
|
6
|
+
export interface TimelineTranslationAlignmentResult {
|
|
7
|
+
timeline: Timeline;
|
|
8
|
+
wordTimeline: Timeline;
|
|
9
|
+
sourceLanguage?: string;
|
|
10
|
+
targetLanguage: string;
|
|
11
|
+
rawAudio?: RawAudio;
|
|
12
|
+
}
|
|
13
|
+
export interface TimelineTranslationAlignmentOptions {
|
|
14
|
+
engine?: 'e5';
|
|
15
|
+
sourceLanguage?: string;
|
|
16
|
+
targetLanguage?: string;
|
|
17
|
+
audio?: AudioSourceParam;
|
|
18
|
+
languageDetection?: API.TextLanguageDetectionOptions;
|
|
19
|
+
subtitles?: SubtitlesConfig;
|
|
20
|
+
e5?: {
|
|
21
|
+
model: 'small-fp16';
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { ensureRawAudio } from '../audio/AudioUtilities.js';
|
|
3
|
+
import { formatLanguageCodeWithName, getShortLanguageCode, parseLangIdentifier } from '../utilities/Locale.js';
|
|
4
|
+
import { Logger } from '../utilities/Logger.js';
|
|
5
|
+
import { extendDeep } from '../utilities/ObjectUtilities.js';
|
|
6
|
+
import { addWordTextOffsetsToTimeline, wordTimelineToSegmentSentenceTimeline } from '../utilities/Timeline.js';
|
|
7
|
+
import * as API from './API.js';
|
|
8
|
+
export async function alignTimelineTranslation(inputTimeline, translatedTranscript, options) {
|
|
9
|
+
const logger = new Logger();
|
|
10
|
+
const startTimestamp = logger.getTimestamp();
|
|
11
|
+
options = extendDeep(defaultTimelineTranslationAlignmentOptions, options);
|
|
12
|
+
let rawAudio;
|
|
13
|
+
if (options.audio) {
|
|
14
|
+
rawAudio = await ensureRawAudio(options.audio);
|
|
15
|
+
}
|
|
16
|
+
let sourceLanguage = options.sourceLanguage;
|
|
17
|
+
if (options.sourceLanguage) {
|
|
18
|
+
const languageData = await parseLangIdentifier(options.sourceLanguage);
|
|
19
|
+
sourceLanguage = languageData.Name;
|
|
20
|
+
logger.end();
|
|
21
|
+
logger.logTitledMessage('Source language specified', formatLanguageCodeWithName(sourceLanguage));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
logger.start('No source language specified. Detect source language');
|
|
25
|
+
const timelineText = inputTimeline.map(entry => entry.text).join(' ');
|
|
26
|
+
const { detectedLanguage } = await API.detectTextLanguage(timelineText, options.languageDetection || {});
|
|
27
|
+
sourceLanguage = detectedLanguage;
|
|
28
|
+
logger.end();
|
|
29
|
+
logger.logTitledMessage('Source language detected', formatLanguageCodeWithName(detectedLanguage));
|
|
30
|
+
}
|
|
31
|
+
let targetLanguage;
|
|
32
|
+
if (options.targetLanguage) {
|
|
33
|
+
const languageData = await parseLangIdentifier(options.targetLanguage);
|
|
34
|
+
targetLanguage = languageData.Name;
|
|
35
|
+
logger.end();
|
|
36
|
+
logger.logTitledMessage('Target language specified', formatLanguageCodeWithName(targetLanguage));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
logger.start('No target language specified. Detect target language');
|
|
40
|
+
const { detectedLanguage } = await API.detectTextLanguage(translatedTranscript, options.languageDetection || {});
|
|
41
|
+
targetLanguage = detectedLanguage;
|
|
42
|
+
logger.end();
|
|
43
|
+
logger.logTitledMessage('Target language detected', formatLanguageCodeWithName(detectedLanguage));
|
|
44
|
+
}
|
|
45
|
+
logger.start(`Load ${options.engine} module`);
|
|
46
|
+
let mappedWordTimeline;
|
|
47
|
+
switch (options.engine) {
|
|
48
|
+
case 'e5': {
|
|
49
|
+
const { alignTimelineToTextSemantically, e5SupportedLanguages } = await import('../alignment/SemanticTextAlignment.js');
|
|
50
|
+
const shortSourceLanguageCode = getShortLanguageCode(sourceLanguage);
|
|
51
|
+
if (!e5SupportedLanguages.includes(shortSourceLanguageCode)) {
|
|
52
|
+
throw new Error(`Source language ${formatLanguageCodeWithName(sourceLanguage)} is not supported by the E5 embedding model.`);
|
|
53
|
+
}
|
|
54
|
+
const shortTargetLanguageCode = getShortLanguageCode(targetLanguage);
|
|
55
|
+
if (!e5SupportedLanguages.includes(shortTargetLanguageCode)) {
|
|
56
|
+
throw new Error(`Target language ${formatLanguageCodeWithName(targetLanguage)} is not supported by the E5 embedding model.`);
|
|
57
|
+
}
|
|
58
|
+
logger.end();
|
|
59
|
+
mappedWordTimeline = await alignTimelineToTextSemantically(inputTimeline, translatedTranscript, targetLanguage);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
default: {
|
|
63
|
+
throw new Error(`Unsupported engine: ${options.engine}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
logger.start(`Postprocess timeline`);
|
|
67
|
+
addWordTextOffsetsToTimeline(mappedWordTimeline, translatedTranscript);
|
|
68
|
+
const { segmentTimeline: mappedTimeline } = await wordTimelineToSegmentSentenceTimeline(mappedWordTimeline, translatedTranscript, targetLanguage);
|
|
69
|
+
logger.end();
|
|
70
|
+
logger.logDuration(`Total timeline translation alignment time`, startTimestamp, chalk.magentaBright);
|
|
71
|
+
logger.end();
|
|
72
|
+
return {
|
|
73
|
+
timeline: mappedTimeline,
|
|
74
|
+
wordTimeline: mappedWordTimeline,
|
|
75
|
+
sourceLanguage,
|
|
76
|
+
targetLanguage,
|
|
77
|
+
rawAudio,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Constants
|
|
81
|
+
const defaultTimelineTranslationAlignmentOptions = {
|
|
82
|
+
engine: 'e5',
|
|
83
|
+
sourceLanguage: undefined,
|
|
84
|
+
targetLanguage: undefined,
|
|
85
|
+
audio: undefined,
|
|
86
|
+
languageDetection: undefined,
|
|
87
|
+
subtitles: undefined,
|
|
88
|
+
e5: {
|
|
89
|
+
model: 'small-fp16',
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=TimelineTranslationAlignment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimelineTranslationAlignment.js","sourceRoot":"","sources":["../../src/api/TimelineTranslationAlignment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AudioSourceParam, RawAudio } from '../audio/AudioUtilities.js';
|
|
2
|
+
import * as API from './API.js';
|
|
3
|
+
import { Timeline } from '../utilities/Timeline.js';
|
|
4
|
+
import { type SubtitlesConfig } from '../subtitles/Subtitles.js';
|
|
5
|
+
export declare function alignTranscriptAndTranslation(input: AudioSourceParam, transcript: string, translatedTranscript: string, options: TranscriptAndTranslationAlignmentOptions): Promise<TranscriptAndTranslationAlignmentResult>;
|
|
6
|
+
export interface TranscriptAndTranslationAlignmentResult {
|
|
7
|
+
timeline: Timeline;
|
|
8
|
+
wordTimeline: Timeline;
|
|
9
|
+
translatedTimeline: Timeline;
|
|
10
|
+
translatedWordTimeline: Timeline;
|
|
11
|
+
transcript: string;
|
|
12
|
+
translatedTranscript: string;
|
|
13
|
+
sourceLanguage: string;
|
|
14
|
+
targetLanguage: string;
|
|
15
|
+
inputRawAudio: RawAudio;
|
|
16
|
+
isolatedRawAudio?: RawAudio;
|
|
17
|
+
backgroundRawAudio?: RawAudio;
|
|
18
|
+
}
|
|
19
|
+
export type TranscriptAndTranslationAlignmentEngine = 'two-stage';
|
|
20
|
+
export interface TranscriptAndTranslationAlignmentOptions {
|
|
21
|
+
engine?: TranscriptAndTranslationAlignmentEngine;
|
|
22
|
+
sourceLanguage?: string;
|
|
23
|
+
targetLanguage?: string;
|
|
24
|
+
isolate?: boolean;
|
|
25
|
+
crop?: boolean;
|
|
26
|
+
alignment?: API.AlignmentOptions;
|
|
27
|
+
timelineAlignment?: API.TimelineTranslationAlignmentOptions;
|
|
28
|
+
languageDetection?: API.TextLanguageDetectionOptions;
|
|
29
|
+
vad?: API.VADOptions;
|
|
30
|
+
plainText?: API.PlainTextOptions;
|
|
31
|
+
subtitles?: SubtitlesConfig;
|
|
32
|
+
sourceSeparation?: API.SourceSeparationOptions;
|
|
33
|
+
}
|
|
34
|
+
export declare const defaultTranscriptAndTranslationAlignmentOptions: TranscriptAndTranslationAlignmentOptions;
|
|
35
|
+
export declare const TranscriptAndTranslationAlignmentEngines: API.EngineMetadata[];
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { extendDeep } from '../utilities/ObjectUtilities.js';
|
|
2
|
+
import { logToStderr } from '../utilities/Utilities.js';
|
|
3
|
+
import { Logger } from '../utilities/Logger.js';
|
|
4
|
+
import * as API from './API.js';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
const log = logToStderr;
|
|
7
|
+
export async function alignTranscriptAndTranslation(input, transcript, translatedTranscript, options) {
|
|
8
|
+
const logger = new Logger();
|
|
9
|
+
const startTimestamp = logger.getTimestamp();
|
|
10
|
+
options = extendDeep(defaultTranscriptAndTranslationAlignmentOptions, options);
|
|
11
|
+
if (options.sourceLanguage && !options.alignment?.language) {
|
|
12
|
+
options.alignment = extendDeep(options.alignment || {}, { language: options.sourceLanguage });
|
|
13
|
+
}
|
|
14
|
+
if (options.targetLanguage && !options.timelineAlignment?.targetLanguage) {
|
|
15
|
+
options.timelineAlignment = extendDeep(options.timelineAlignment || {}, { targetLanguage: options.targetLanguage });
|
|
16
|
+
}
|
|
17
|
+
let alignmentResult;
|
|
18
|
+
let timelineAlignmentResult;
|
|
19
|
+
switch (options.engine) {
|
|
20
|
+
case 'two-stage': {
|
|
21
|
+
logger.logTitledMessage(`Start stage 1`, `Align speech to transcript`, chalk.magentaBright);
|
|
22
|
+
logger.end();
|
|
23
|
+
alignmentResult = await API.align(input, transcript, options.alignment || {});
|
|
24
|
+
logger.log(``);
|
|
25
|
+
logger.logTitledMessage(`Start stage 2`, `Align timeline to translated transcript`, chalk.magentaBright);
|
|
26
|
+
logger.end();
|
|
27
|
+
timelineAlignmentResult = await API.alignTimelineTranslation(alignmentResult.timeline, translatedTranscript, options.timelineAlignment || {});
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
default: {
|
|
31
|
+
throw new Error(`Engine '${options.engine}' is not supported`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
logger.end();
|
|
35
|
+
logger.log(``);
|
|
36
|
+
logger.logDuration(`Total transcript and translation alignment time`, startTimestamp, chalk.magentaBright);
|
|
37
|
+
return {
|
|
38
|
+
timeline: alignmentResult.timeline,
|
|
39
|
+
wordTimeline: alignmentResult.wordTimeline,
|
|
40
|
+
translatedTimeline: timelineAlignmentResult.timeline,
|
|
41
|
+
translatedWordTimeline: timelineAlignmentResult.wordTimeline,
|
|
42
|
+
transcript,
|
|
43
|
+
translatedTranscript,
|
|
44
|
+
sourceLanguage: alignmentResult.language,
|
|
45
|
+
targetLanguage: timelineAlignmentResult.targetLanguage,
|
|
46
|
+
inputRawAudio: alignmentResult.inputRawAudio,
|
|
47
|
+
isolatedRawAudio: alignmentResult.isolatedRawAudio,
|
|
48
|
+
backgroundRawAudio: alignmentResult.backgroundRawAudio,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export const defaultTranscriptAndTranslationAlignmentOptions = {
|
|
52
|
+
engine: 'two-stage',
|
|
53
|
+
sourceLanguage: undefined,
|
|
54
|
+
targetLanguage: undefined,
|
|
55
|
+
isolate: false,
|
|
56
|
+
crop: true,
|
|
57
|
+
alignment: {},
|
|
58
|
+
timelineAlignment: {},
|
|
59
|
+
languageDetection: {},
|
|
60
|
+
plainText: {
|
|
61
|
+
paragraphBreaks: 'double',
|
|
62
|
+
whitespace: 'collapse'
|
|
63
|
+
},
|
|
64
|
+
subtitles: {},
|
|
65
|
+
vad: {
|
|
66
|
+
engine: 'adaptive-gate'
|
|
67
|
+
},
|
|
68
|
+
sourceSeparation: {},
|
|
69
|
+
};
|
|
70
|
+
export const TranscriptAndTranslationAlignmentEngines = [
|
|
71
|
+
{
|
|
72
|
+
id: 'two-stage',
|
|
73
|
+
name: 'Two-stage translation alignment',
|
|
74
|
+
description: 'Applies two-stage translation alignment to the spoken audio. First stage aligns the speech to the native language transcript. Second stage aligns the resulting timeline with the translated transcript.',
|
|
75
|
+
type: 'local'
|
|
76
|
+
}
|
|
77
|
+
];
|
|
78
|
+
//# sourceMappingURL=TranscriptAndTranslationAlignment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TranscriptAndTranslationAlignment.js","sourceRoot":"","sources":["../../src/api/TranscriptAndTranslationAlignment.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,13 @@ import * as API from './API.js';
|
|
|
3
3
|
import { Timeline } from '../utilities/Timeline.js';
|
|
4
4
|
import { type WhisperAlignmentOptions } from '../recognition/WhisperSTT.js';
|
|
5
5
|
import { type SubtitlesConfig } from '../subtitles/Subtitles.js';
|
|
6
|
-
export declare function alignTranslation(input: AudioSourceParam,
|
|
6
|
+
export declare function alignTranslation(input: AudioSourceParam, translatedTranscript: string, options: TranslationAlignmentOptions): Promise<TranslationAlignmentResult>;
|
|
7
7
|
export interface TranslationAlignmentResult {
|
|
8
8
|
timeline: Timeline;
|
|
9
9
|
wordTimeline: Timeline;
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
translatedTranscript: string;
|
|
11
|
+
sourceLanguage: string;
|
|
12
|
+
targetLanguage: string;
|
|
12
13
|
inputRawAudio: RawAudio;
|
|
13
14
|
isolatedRawAudio?: RawAudio;
|
|
14
15
|
backgroundRawAudio?: RawAudio;
|
|
@@ -4,10 +4,10 @@ import { ensureRawAudio, normalizeAudioLevel, trimAudioEnd } from '../audio/Audi
|
|
|
4
4
|
import { Logger } from '../utilities/Logger.js';
|
|
5
5
|
import * as API from './API.js';
|
|
6
6
|
import { addWordTextOffsetsToTimeline, wordTimelineToSegmentSentenceTimeline } from '../utilities/Timeline.js';
|
|
7
|
-
import { formatLanguageCodeWithName, getShortLanguageCode,
|
|
7
|
+
import { formatLanguageCodeWithName, getShortLanguageCode, normalizeIdentifierToLanguageCode, parseLangIdentifier } from '../utilities/Locale.js';
|
|
8
8
|
import chalk from 'chalk';
|
|
9
9
|
const log = logToStderr;
|
|
10
|
-
export async function alignTranslation(input,
|
|
10
|
+
export async function alignTranslation(input, translatedTranscript, options) {
|
|
11
11
|
const logger = new Logger();
|
|
12
12
|
const startTimestamp = logger.getTimestamp();
|
|
13
13
|
options = extendDeep(defaultTranslationAlignmentOptions, options);
|
|
@@ -52,7 +52,7 @@ export async function alignTranslation(input, transcript, options) {
|
|
|
52
52
|
logger.end();
|
|
53
53
|
logger.logTitledMessage('Source language detected', formatLanguageCodeWithName(detectedLanguage));
|
|
54
54
|
}
|
|
55
|
-
const targetLanguage = await
|
|
55
|
+
const targetLanguage = await normalizeIdentifierToLanguageCode(options.targetLanguage);
|
|
56
56
|
logger.logTitledMessage('Target language', formatLanguageCodeWithName(targetLanguage));
|
|
57
57
|
let mappedTimeline;
|
|
58
58
|
switch (options.engine) {
|
|
@@ -72,7 +72,7 @@ export async function alignTranslation(input, transcript, options) {
|
|
|
72
72
|
if (modelName.endsWith('.en')) {
|
|
73
73
|
throw new Error('Whisper translation tasks are only possible with a multilingual model');
|
|
74
74
|
}
|
|
75
|
-
mappedTimeline = await WhisperSTT.alignEnglishTranslation(sourceRawAudio,
|
|
75
|
+
mappedTimeline = await WhisperSTT.alignEnglishTranslation(sourceRawAudio, translatedTranscript, modelName, modelDir, shortSourceLanguageCode, whisperAlignmnentOptions);
|
|
76
76
|
break;
|
|
77
77
|
}
|
|
78
78
|
default: {
|
|
@@ -84,16 +84,17 @@ export async function alignTranslation(input, transcript, options) {
|
|
|
84
84
|
API.convertCroppedToUncroppedTimeline(mappedTimeline, sourceUncropTimeline);
|
|
85
85
|
}
|
|
86
86
|
// Add text offsets
|
|
87
|
-
addWordTextOffsetsToTimeline(mappedTimeline,
|
|
87
|
+
addWordTextOffsetsToTimeline(mappedTimeline, translatedTranscript);
|
|
88
88
|
// Make segment timeline
|
|
89
|
-
const { segmentTimeline } = await wordTimelineToSegmentSentenceTimeline(mappedTimeline,
|
|
89
|
+
const { segmentTimeline } = await wordTimelineToSegmentSentenceTimeline(mappedTimeline, translatedTranscript, sourceLanguage, options.plainText?.paragraphBreaks, options.plainText?.whitespace);
|
|
90
90
|
logger.end();
|
|
91
91
|
logger.logDuration(`Total translation alignment time`, startTimestamp, chalk.magentaBright);
|
|
92
92
|
return {
|
|
93
93
|
timeline: segmentTimeline,
|
|
94
94
|
wordTimeline: mappedTimeline,
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
translatedTranscript,
|
|
96
|
+
sourceLanguage,
|
|
97
|
+
targetLanguage,
|
|
97
98
|
inputRawAudio,
|
|
98
99
|
isolatedRawAudio,
|
|
99
100
|
backgroundRawAudio,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranslationAlignment.js","sourceRoot":"","sources":["../../src/api/TranslationAlignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAA8B,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC1H,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAY,4BAA4B,EAAE,qCAAqC,EAAE,MAAM,0BAA0B,CAAA;AACxH,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAEjJ,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,GAAG,GAAG,WAAW,CAAA;AAEvB,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"TranslationAlignment.js","sourceRoot":"","sources":["../../src/api/TranslationAlignment.ts"],"names":[],"mappings":"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"}
|
|
@@ -138,6 +138,12 @@ export function convertCroppedToUncroppedTimeline(timeline, uncropTimeline) {
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
function mapUsingUncropTimeline(startTimeInCroppedAudio, endTimeInCroppedAudio, uncropTimeline) {
|
|
141
|
+
if (uncropTimeline.length === 0) {
|
|
142
|
+
return {
|
|
143
|
+
mappedStartTime: 0,
|
|
144
|
+
mappedEndTime: 0,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
141
147
|
let offsetInCroppedAudio = 0;
|
|
142
148
|
if (endTimeInCroppedAudio < startTimeInCroppedAudio) {
|
|
143
149
|
endTimeInCroppedAudio = startTimeInCroppedAudio;
|
|
@@ -158,7 +164,16 @@ function mapUsingUncropTimeline(startTimeInCroppedAudio, endTimeInCroppedAudio,
|
|
|
158
164
|
offsetInCroppedAudio += uncropEntryDuration;
|
|
159
165
|
}
|
|
160
166
|
if (bestOverlapDuration === -1) {
|
|
161
|
-
|
|
167
|
+
if (startTimeInCroppedAudio >= offsetInCroppedAudio) {
|
|
168
|
+
const maxTimestamp = uncropTimeline[uncropTimeline.length - 1].endTime;
|
|
169
|
+
return {
|
|
170
|
+
mappedStartTime: maxTimestamp,
|
|
171
|
+
mappedEndTime: maxTimestamp
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
throw new Error(`Given start time ${startTimeInCroppedAudio} was smaller than audio duration but no match was found in uncrop timeline (should not occur)`);
|
|
176
|
+
}
|
|
162
177
|
}
|
|
163
178
|
return {
|
|
164
179
|
mappedStartTime,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoiceActivityDetection.js","sourceRoot":"","sources":["../../src/api/VoiceActivityDetection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAE5D,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"VoiceActivityDetection.js","sourceRoot":"","sources":["../../src/api/VoiceActivityDetection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import { BitDepth, SampleFormat } from '../codecs/WaveCodec.js';
|
|
3
2
|
export declare function encodeToAudioBuffer(audioChannels: Float32Array[], targetBitDepth?: BitDepth, targetSampleFormat?: SampleFormat): Buffer;
|
|
4
3
|
export declare function decodeToChannels(audioBuffer: Buffer, channelCount: number, sourceBitDepth: number, sourceSampleFormat: SampleFormat): Float32Array[];
|