@speech-sdk/core 0.25.0 → 0.25.1
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/pronunciations/inverse-align.d.ts.map +1 -1
- package/dist/pronunciations/inverse-align.js +55 -16
- package/dist/pronunciations/inverse-align.js.map +1 -1
- package/dist/timestamp-finalization.d.ts +6 -0
- package/dist/timestamp-finalization.d.ts.map +1 -1
- package/dist/timestamp-finalization.js +2 -2
- package/dist/timestamp-finalization.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inverse-align.d.ts","sourceRoot":"","sources":["../../src/pronunciations/inverse-align.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inverse-align.d.ts","sourceRoot":"","sources":["../../src/pronunciations/inverse-align.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAqFvC,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,UAAU,EAAE,SAAS,CAAC,EAAE,EACxB,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,SAAS,IAAI,EAAE,GACrB,CAAC,EAAE,CA4EL"}
|
|
@@ -1,13 +1,45 @@
|
|
|
1
|
+
import { tokenizeTimestampSource } from "../timestamp-finalization.js";
|
|
1
2
|
const LEXICAL_CHARACTER = /[\p{L}\p{N}]/u;
|
|
2
|
-
function
|
|
3
|
-
return edits.find((
|
|
3
|
+
function findOverlappingEdit(start, end, edits) {
|
|
4
|
+
return edits.find((edit) => start < edit.replacementRange[1] && end > edit.replacementRange[0]);
|
|
4
5
|
}
|
|
5
6
|
function findTokenStart(haystack, searchFrom, token) {
|
|
6
7
|
return haystack.indexOf(token.toLowerCase(), searchFrom);
|
|
7
8
|
}
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
function findContainedEdits(start, end, edits) {
|
|
10
|
+
return edits.filter((edit) => edit.replacementRange[0] >= start && edit.replacementRange[1] <= end);
|
|
11
|
+
}
|
|
12
|
+
function projectTextThroughEdits(substitutedText, start, end, edits) {
|
|
13
|
+
const parts = [];
|
|
14
|
+
let cursor = start;
|
|
15
|
+
for (const edit of edits) {
|
|
16
|
+
parts.push(substitutedText.slice(cursor, edit.replacementRange[0]), edit.originalWord);
|
|
17
|
+
cursor = edit.replacementRange[1];
|
|
18
|
+
}
|
|
19
|
+
parts.push(substitutedText.slice(cursor, end));
|
|
20
|
+
return parts.join("");
|
|
21
|
+
}
|
|
22
|
+
function projectOriginalTokens(edit, alignedTimestamps, substitutedText, start, end) {
|
|
23
|
+
const originalText = projectTextThroughEdits(substitutedText, start, end, [
|
|
24
|
+
edit,
|
|
25
|
+
]);
|
|
26
|
+
const sourceTokens = tokenizeTimestampSource(originalText);
|
|
27
|
+
const firstTimestamp = alignedTimestamps[0];
|
|
28
|
+
const lastTimestamp = alignedTimestamps.at(-1) ?? firstTimestamp;
|
|
29
|
+
if (sourceTokens.length !== alignedTimestamps.length) {
|
|
30
|
+
return [
|
|
31
|
+
{
|
|
32
|
+
...firstTimestamp,
|
|
33
|
+
text: originalText,
|
|
34
|
+
start: firstTimestamp.start,
|
|
35
|
+
end: lastTimestamp.end,
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
return sourceTokens.map(({ text }, index) => ({
|
|
40
|
+
...alignedTimestamps[index],
|
|
41
|
+
text,
|
|
42
|
+
}));
|
|
11
43
|
}
|
|
12
44
|
export function inverseAlign(timestamps, substitutedText, edits) {
|
|
13
45
|
if (edits.length === 0) {
|
|
@@ -21,13 +53,7 @@ export function inverseAlign(timestamps, substitutedText, edits) {
|
|
|
21
53
|
if (!pendingGroup) {
|
|
22
54
|
return;
|
|
23
55
|
}
|
|
24
|
-
|
|
25
|
-
...pendingGroup.first,
|
|
26
|
-
text: pendingGroup.edit.originalWord,
|
|
27
|
-
start: pendingGroup.first.start,
|
|
28
|
-
end: pendingGroup.last.end,
|
|
29
|
-
};
|
|
30
|
-
out.push(merged);
|
|
56
|
+
out.push(...projectOriginalTokens(pendingGroup.edit, pendingGroup.timestamps, substitutedText, pendingGroup.start, pendingGroup.end));
|
|
31
57
|
pendingGroup = null;
|
|
32
58
|
};
|
|
33
59
|
for (const ts of timestamps) {
|
|
@@ -37,15 +63,28 @@ export function inverseAlign(timestamps, substitutedText, edits) {
|
|
|
37
63
|
out.push(ts);
|
|
38
64
|
continue;
|
|
39
65
|
}
|
|
40
|
-
|
|
41
|
-
|
|
66
|
+
const end = pos + ts.text.length;
|
|
67
|
+
cursor = end;
|
|
68
|
+
const containedEdits = findContainedEdits(pos, end, edits);
|
|
69
|
+
if (containedEdits.length > 0) {
|
|
70
|
+
flushPending();
|
|
71
|
+
out.push({
|
|
72
|
+
...ts,
|
|
73
|
+
text: projectTextThroughEdits(substitutedText, pos, end, containedEdits),
|
|
74
|
+
});
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const lexicalOffset = ts.text.search(LEXICAL_CHARACTER);
|
|
78
|
+
const lexicalStart = lexicalOffset === -1 ? pos : pos + lexicalOffset;
|
|
79
|
+
const edit = findOverlappingEdit(lexicalStart, end, edits);
|
|
42
80
|
if (edit) {
|
|
43
81
|
if (pendingGroup && pendingGroup.edit === edit) {
|
|
44
|
-
pendingGroup.
|
|
82
|
+
pendingGroup.timestamps.push(ts);
|
|
83
|
+
pendingGroup.end = end;
|
|
45
84
|
}
|
|
46
85
|
else {
|
|
47
86
|
flushPending();
|
|
48
|
-
pendingGroup = { edit,
|
|
87
|
+
pendingGroup = { edit, end, start: pos, timestamps: [ts] };
|
|
49
88
|
}
|
|
50
89
|
}
|
|
51
90
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inverse-align.js","sourceRoot":"","sources":["../../src/pronunciations/inverse-align.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inverse-align.js","sourceRoot":"","sources":["../../src/pronunciations/inverse-align.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { WordTimestamp } from "./timestamps.js";
|
|
2
|
+
interface SourceToken {
|
|
3
|
+
readonly canonical: string;
|
|
4
|
+
readonly text: string;
|
|
5
|
+
}
|
|
2
6
|
export type TimestampFinalizationResult = {
|
|
3
7
|
readonly ok: true;
|
|
4
8
|
readonly timestamps: readonly WordTimestamp[];
|
|
@@ -7,9 +11,11 @@ export type TimestampFinalizationResult = {
|
|
|
7
11
|
readonly reason: TimestampRejectionReason;
|
|
8
12
|
};
|
|
9
13
|
export type TimestampRejectionReason = "empty" | "invalid_timing" | "transcript_mismatch";
|
|
14
|
+
export declare function tokenizeTimestampSource(text: string): readonly SourceToken[];
|
|
10
15
|
export declare function finalizeTimestamps(args: {
|
|
11
16
|
readonly audioDurationMs?: number;
|
|
12
17
|
readonly text: string;
|
|
13
18
|
readonly timestamps: readonly WordTimestamp[];
|
|
14
19
|
}): TimestampFinalizationResult;
|
|
20
|
+
export {};
|
|
15
21
|
//# sourceMappingURL=timestamp-finalization.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timestamp-finalization.d.ts","sourceRoot":"","sources":["../src/timestamp-finalization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"timestamp-finalization.d.ts","sourceRoot":"","sources":["../src/timestamp-finalization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOrD,UAAU,WAAW;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,2BAA2B,GACnC;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;CAC/C,GACD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;CAC3C,CAAC;AAEN,MAAM,MAAM,wBAAwB,GAChC,OAAO,GACP,gBAAgB,GAChB,qBAAqB,CAAC;AAQ1B,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE,CA2B5E;AAkCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;CAC/C,GAAG,2BAA2B,CA6D9B"}
|
|
@@ -5,7 +5,7 @@ const TIMING_EPSILON_SECONDS = 1e-6;
|
|
|
5
5
|
function canonicalize(text) {
|
|
6
6
|
return (text.normalize("NFC").toLowerCase().match(CANONICAL_CHARACTERS) ?? []).join("");
|
|
7
7
|
}
|
|
8
|
-
function
|
|
8
|
+
export function tokenizeTimestampSource(text) {
|
|
9
9
|
const ranges = [];
|
|
10
10
|
let leadingPunctuationStart;
|
|
11
11
|
for (const match of text.matchAll(NON_WHITESPACE_RUN)) {
|
|
@@ -54,7 +54,7 @@ function hasInvalidTiming(timestamps, audioDurationMs) {
|
|
|
54
54
|
return false;
|
|
55
55
|
}
|
|
56
56
|
export function finalizeTimestamps(args) {
|
|
57
|
-
const sourceTokens =
|
|
57
|
+
const sourceTokens = tokenizeTimestampSource(args.text);
|
|
58
58
|
if (sourceTokens.length === 0) {
|
|
59
59
|
return args.timestamps.length === 0
|
|
60
60
|
? { ok: true, timestamps: [] }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timestamp-finalization.js","sourceRoot":"","sources":["../src/timestamp-finalization.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AACnD,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAC1C,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAsBpC,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,CACtE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"timestamp-finalization.js","sourceRoot":"","sources":["../src/timestamp-finalization.ts"],"names":[],"mappings":"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"}
|