n8n-nodes-speechall 0.1.2
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/LICENSE.md +21 -0
- package/README.md +165 -0
- package/dist/credentials/SpeechallApi.credentials.d.ts +13 -0
- package/dist/credentials/SpeechallApi.credentials.js +43 -0
- package/dist/credentials/SpeechallApi.credentials.js.map +1 -0
- package/dist/nodes/Speechall/Speechall.node.d.ts +11 -0
- package/dist/nodes/Speechall/Speechall.node.js +79 -0
- package/dist/nodes/Speechall/Speechall.node.js.map +1 -0
- package/dist/nodes/Speechall/Speechall.node.json +18 -0
- package/dist/nodes/Speechall/descriptions/SpeechToText.description.d.ts +2 -0
- package/dist/nodes/Speechall/descriptions/SpeechToText.description.js +154 -0
- package/dist/nodes/Speechall/descriptions/SpeechToText.description.js.map +1 -0
- package/dist/nodes/Speechall/generated/speechall-openapi.d.ts +528 -0
- package/dist/nodes/Speechall/generated/speechall-openapi.js +3 -0
- package/dist/nodes/Speechall/generated/speechall-openapi.js.map +1 -0
- package/dist/nodes/Speechall/helpers/binary.d.ts +8 -0
- package/dist/nodes/Speechall/helpers/binary.js +29 -0
- package/dist/nodes/Speechall/helpers/binary.js.map +1 -0
- package/dist/nodes/Speechall/helpers/fields.d.ts +11 -0
- package/dist/nodes/Speechall/helpers/fields.js +344 -0
- package/dist/nodes/Speechall/helpers/fields.js.map +1 -0
- package/dist/nodes/Speechall/helpers/models.d.ts +13 -0
- package/dist/nodes/Speechall/helpers/models.js +148 -0
- package/dist/nodes/Speechall/helpers/models.js.map +1 -0
- package/dist/nodes/Speechall/helpers/normalize.d.ts +14 -0
- package/dist/nodes/Speechall/helpers/normalize.js +109 -0
- package/dist/nodes/Speechall/helpers/normalize.js.map +1 -0
- package/dist/nodes/Speechall/helpers/replacementRules.d.ts +4 -0
- package/dist/nodes/Speechall/helpers/replacementRules.js +130 -0
- package/dist/nodes/Speechall/helpers/replacementRules.js.map +1 -0
- package/dist/nodes/Speechall/helpers/types.d.ts +74 -0
- package/dist/nodes/Speechall/helpers/types.js +5 -0
- package/dist/nodes/Speechall/helpers/types.js.map +1 -0
- package/dist/nodes/Speechall/loadOptions/getSpeechToTextModels.d.ts +2 -0
- package/dist/nodes/Speechall/loadOptions/getSpeechToTextModels.js +13 -0
- package/dist/nodes/Speechall/loadOptions/getSpeechToTextModels.js.map +1 -0
- package/dist/nodes/Speechall/operations/listModels.operation.d.ts +2 -0
- package/dist/nodes/Speechall/operations/listModels.operation.js +30 -0
- package/dist/nodes/Speechall/operations/listModels.operation.js.map +1 -0
- package/dist/nodes/Speechall/operations/transcribeFile.operation.d.ts +2 -0
- package/dist/nodes/Speechall/operations/transcribeFile.operation.js +149 -0
- package/dist/nodes/Speechall/operations/transcribeFile.operation.js.map +1 -0
- package/dist/nodes/Speechall/operations/transcribeRemoteUrl.operation.d.ts +2 -0
- package/dist/nodes/Speechall/operations/transcribeRemoteUrl.operation.js +132 -0
- package/dist/nodes/Speechall/operations/transcribeRemoteUrl.operation.js.map +1 -0
- package/dist/nodes/Speechall/speechall.dark.svg +7 -0
- package/dist/nodes/Speechall/speechall.svg +7 -0
- package/dist/nodes/Speechall/transport/errors.d.ts +12 -0
- package/dist/nodes/Speechall/transport/errors.js +151 -0
- package/dist/nodes/Speechall/transport/errors.js.map +1 -0
- package/dist/nodes/Speechall/transport/speechallApiRequest.d.ts +15 -0
- package/dist/nodes/Speechall/transport/speechallApiRequest.js +81 -0
- package/dist/nodes/Speechall/transport/speechallApiRequest.js.map +1 -0
- package/dist/package.json +68 -0
- package/examples/google-drive-audio-to-transcript.json +71 -0
- package/examples/meeting-recording-to-diarized-transcript.json +59 -0
- package/examples/remote-podcast-url-to-srt.json +66 -0
- package/examples/webhook-audio-upload-to-json-transcript.json +64 -0
- package/package.json +68 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serializeCustomVocabulary = serializeCustomVocabulary;
|
|
4
|
+
exports.serializeReplacementRules = serializeReplacementRules;
|
|
5
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
6
|
+
const ALLOWED_FLAGS = ['i', 'm', 's', 'u', 'x'];
|
|
7
|
+
function serializeCustomVocabulary(parameters) {
|
|
8
|
+
const collection = parameters.customVocabulary;
|
|
9
|
+
if (!isObject(collection)) {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
const entries = collection.values;
|
|
13
|
+
if (!Array.isArray(entries)) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
return entries
|
|
17
|
+
.map((entry) => (isObject(entry) && typeof entry.term === 'string' ? entry.term.trim() : ''))
|
|
18
|
+
.filter((term) => term.length > 0);
|
|
19
|
+
}
|
|
20
|
+
function serializeReplacementRules(node, parameters) {
|
|
21
|
+
const collection = parameters.replacementRules;
|
|
22
|
+
if (!isObject(collection)) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const rules = [];
|
|
26
|
+
for (const rule of getRuleRows(collection.exactMatch)) {
|
|
27
|
+
const search = stringField(rule, 'search');
|
|
28
|
+
const replacement = stringField(rule, 'replacement');
|
|
29
|
+
if (!search || !replacement) {
|
|
30
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Exact replacement rules require search and replacement values');
|
|
31
|
+
}
|
|
32
|
+
rules.push({
|
|
33
|
+
kind: 'exact',
|
|
34
|
+
search,
|
|
35
|
+
replacement,
|
|
36
|
+
caseSensitive: rule.caseSensitive === true,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
for (const rule of getRuleRows(collection.regex)) {
|
|
40
|
+
const pattern = stringField(rule, 'pattern');
|
|
41
|
+
const replacement = stringField(rule, 'replacement');
|
|
42
|
+
if (!pattern || !replacement) {
|
|
43
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Regex replacement rules require pattern and replacement values');
|
|
44
|
+
}
|
|
45
|
+
const flags = normalizeFlags(rule.flags);
|
|
46
|
+
validateRegex(node, pattern, flags);
|
|
47
|
+
rules.push({
|
|
48
|
+
kind: 'regex',
|
|
49
|
+
pattern,
|
|
50
|
+
replacement,
|
|
51
|
+
flags,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
for (const rule of getRuleRows(collection.regexGroup)) {
|
|
55
|
+
const pattern = stringField(rule, 'pattern');
|
|
56
|
+
if (!pattern) {
|
|
57
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Regex group replacement rules require a pattern');
|
|
58
|
+
}
|
|
59
|
+
const flags = normalizeFlags(rule.flags);
|
|
60
|
+
validateRegex(node, pattern, flags);
|
|
61
|
+
const groupReplacements = serializeGroupReplacements(node, rule.groupReplacements);
|
|
62
|
+
rules.push({
|
|
63
|
+
kind: 'regex_group',
|
|
64
|
+
pattern,
|
|
65
|
+
groupReplacements,
|
|
66
|
+
flags,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return rules.length ? rules : undefined;
|
|
70
|
+
}
|
|
71
|
+
function serializeGroupReplacements(node, value) {
|
|
72
|
+
const rows = isObject(value) ? getRuleRows(value.values) : [];
|
|
73
|
+
const replacements = {};
|
|
74
|
+
for (const row of rows) {
|
|
75
|
+
const groupNumber = Number(row.groupNumber);
|
|
76
|
+
const replacement = stringField(row, 'replacement');
|
|
77
|
+
if (!Number.isInteger(groupNumber) || groupNumber <= 0) {
|
|
78
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Regex group numbers must be positive integers');
|
|
79
|
+
}
|
|
80
|
+
if (!replacement) {
|
|
81
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Regex group replacements require a replacement value');
|
|
82
|
+
}
|
|
83
|
+
if (replacements[String(groupNumber)] !== undefined) {
|
|
84
|
+
throw new n8n_workflow_1.NodeOperationError(node, `Duplicate regex group replacement for group ${groupNumber}`);
|
|
85
|
+
}
|
|
86
|
+
replacements[String(groupNumber)] = replacement;
|
|
87
|
+
}
|
|
88
|
+
if (Object.keys(replacements).length === 0) {
|
|
89
|
+
throw new n8n_workflow_1.NodeOperationError(node, 'Regex group replacement rules require at least one group replacement');
|
|
90
|
+
}
|
|
91
|
+
return replacements;
|
|
92
|
+
}
|
|
93
|
+
function normalizeFlags(value) {
|
|
94
|
+
const flags = Array.isArray(value) ? value : [];
|
|
95
|
+
const normalized = [];
|
|
96
|
+
for (const flag of flags) {
|
|
97
|
+
if (!isRegexRuleFlag(flag)) {
|
|
98
|
+
throw new Error(`Unknown regex flag: ${String(flag)}`);
|
|
99
|
+
}
|
|
100
|
+
if (!normalized.includes(flag)) {
|
|
101
|
+
normalized.push(flag);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return normalized;
|
|
105
|
+
}
|
|
106
|
+
function validateRegex(node, pattern, flags) {
|
|
107
|
+
if (flags.includes('x')) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
new RegExp(pattern, flags.join(''));
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
throw new n8n_workflow_1.NodeOperationError(node, `Invalid regex pattern: ${error.message}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function getRuleRows(value) {
|
|
118
|
+
return Array.isArray(value) ? value.filter(isObject) : [];
|
|
119
|
+
}
|
|
120
|
+
function stringField(object, key) {
|
|
121
|
+
const value = object[key];
|
|
122
|
+
return typeof value === 'string' ? value.trim() : '';
|
|
123
|
+
}
|
|
124
|
+
function isRegexRuleFlag(value) {
|
|
125
|
+
return typeof value === 'string' && ALLOWED_FLAGS.includes(value);
|
|
126
|
+
}
|
|
127
|
+
function isObject(value) {
|
|
128
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=replacementRules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replacementRules.js","sourceRoot":"","sources":["../../../../nodes/Speechall/helpers/replacementRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { IDataObject } from 'n8n-workflow';
|
|
2
|
+
export declare const SPEECHALL_API_BASE_URL = "https://api.speechall.com/v1";
|
|
3
|
+
export type TranscriptOutputFormat = 'text' | 'json_text' | 'json' | 'srt' | 'vtt';
|
|
4
|
+
export type SpeechallSource = 'binary' | 'remote_url';
|
|
5
|
+
export type RegexRuleFlag = 'i' | 'm' | 's' | 'u' | 'x';
|
|
6
|
+
export interface SpeechallModel extends IDataObject {
|
|
7
|
+
id?: string;
|
|
8
|
+
model?: string;
|
|
9
|
+
identifier?: string;
|
|
10
|
+
display_name?: string;
|
|
11
|
+
displayName?: string;
|
|
12
|
+
provider?: string;
|
|
13
|
+
description?: string | null;
|
|
14
|
+
cost_per_second_usd?: number | null;
|
|
15
|
+
is_available?: boolean;
|
|
16
|
+
supported_languages?: string[] | null;
|
|
17
|
+
supported_formats?: string[] | null;
|
|
18
|
+
punctuation?: boolean | null;
|
|
19
|
+
diarization?: boolean | null;
|
|
20
|
+
streamable?: boolean | null;
|
|
21
|
+
max_duration_seconds?: number | null;
|
|
22
|
+
max_file_size_bytes?: number | null;
|
|
23
|
+
speaker_labels?: boolean | null;
|
|
24
|
+
word_timestamps?: boolean | null;
|
|
25
|
+
language_detection?: boolean | null;
|
|
26
|
+
custom_vocabulary_support?: boolean | null;
|
|
27
|
+
supports_srt?: boolean;
|
|
28
|
+
supports_vtt?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface NormalizedModel extends IDataObject {
|
|
31
|
+
id: string;
|
|
32
|
+
displayName: string;
|
|
33
|
+
provider?: string;
|
|
34
|
+
isAvailable?: boolean;
|
|
35
|
+
supportedLanguages?: string[];
|
|
36
|
+
supportedFormats: TranscriptOutputFormat[];
|
|
37
|
+
supportsSrt: boolean;
|
|
38
|
+
supportsVtt: boolean;
|
|
39
|
+
diarization?: boolean | null;
|
|
40
|
+
punctuation?: boolean | null;
|
|
41
|
+
wordTimestamps?: boolean | null;
|
|
42
|
+
costPerSecondUsd?: number | null;
|
|
43
|
+
maxFileSizeBytes?: number | null;
|
|
44
|
+
maxDurationSeconds?: number | null;
|
|
45
|
+
raw: SpeechallModel;
|
|
46
|
+
}
|
|
47
|
+
export type ReplacementRule = {
|
|
48
|
+
kind: 'exact';
|
|
49
|
+
search: string;
|
|
50
|
+
replacement: string;
|
|
51
|
+
caseSensitive?: boolean;
|
|
52
|
+
} | {
|
|
53
|
+
kind: 'regex';
|
|
54
|
+
pattern: string;
|
|
55
|
+
replacement: string;
|
|
56
|
+
flags?: RegexRuleFlag[];
|
|
57
|
+
} | {
|
|
58
|
+
kind: 'regex_group';
|
|
59
|
+
pattern: string;
|
|
60
|
+
groupReplacements: Record<string, string>;
|
|
61
|
+
flags?: RegexRuleFlag[];
|
|
62
|
+
};
|
|
63
|
+
export interface NormalizedTranscriptionItem extends IDataObject {
|
|
64
|
+
text?: string;
|
|
65
|
+
outputFormat: TranscriptOutputFormat;
|
|
66
|
+
model: string;
|
|
67
|
+
language?: string;
|
|
68
|
+
source: SpeechallSource;
|
|
69
|
+
fileUrl?: string;
|
|
70
|
+
sourceUrlSanitized?: string;
|
|
71
|
+
id?: string;
|
|
72
|
+
segments?: unknown[];
|
|
73
|
+
words?: unknown[];
|
|
74
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../nodes/Speechall/helpers/types.ts"],"names":[],"mappings":";;;AAEa,QAAA,sBAAsB,GAAG,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSpeechToTextModels = getSpeechToTextModels;
|
|
4
|
+
const models_1 = require("../helpers/models");
|
|
5
|
+
const speechallApiRequest_1 = require("../transport/speechallApiRequest");
|
|
6
|
+
async function getSpeechToTextModels() {
|
|
7
|
+
const response = await speechallApiRequest_1.speechallApiRequest.call(this, 'GET', '/speech-to-text-models', {
|
|
8
|
+
timeoutMs: 30000,
|
|
9
|
+
json: true,
|
|
10
|
+
});
|
|
11
|
+
return (0, models_1.normalizeModelsResponse)(response.body).map(models_1.modelToOption);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=getSpeechToTextModels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSpeechToTextModels.js","sourceRoot":"","sources":["../../../../nodes/Speechall/loadOptions/getSpeechToTextModels.ts"],"names":[],"mappings":";;AAKA,sDASC;AAZD,8CAA2E;AAC3E,0EAAuE;AAEhE,KAAK,UAAU,qBAAqB;IAG1C,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,wBAAwB,EAAE;QACtF,SAAS,EAAE,KAAM;QACjB,IAAI,EAAE,IAAI;KACV,CAAC,CAAC;IAEH,OAAO,IAAA,gCAAuB,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,sBAAa,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listModelsOperation = listModelsOperation;
|
|
4
|
+
const models_1 = require("../helpers/models");
|
|
5
|
+
const speechallApiRequest_1 = require("../transport/speechallApiRequest");
|
|
6
|
+
async function listModelsOperation() {
|
|
7
|
+
const response = await speechallApiRequest_1.speechallApiRequest.call(this, 'GET', '/speech-to-text-models', {
|
|
8
|
+
timeoutMs: 30000,
|
|
9
|
+
json: true,
|
|
10
|
+
});
|
|
11
|
+
const filters = {
|
|
12
|
+
provider: this.getNodeParameter('provider', 0, ''),
|
|
13
|
+
availableOnly: this.getNodeParameter('availableOnly', 0, false),
|
|
14
|
+
supportsDiarization: this.getNodeParameter('supportsDiarization', 0, false),
|
|
15
|
+
supportsSrt: this.getNodeParameter('supportsSrt', 0, false),
|
|
16
|
+
supportsVtt: this.getNodeParameter('supportsVtt', 0, false),
|
|
17
|
+
supportsStreaming: this.getNodeParameter('supportsStreaming', 0, false),
|
|
18
|
+
};
|
|
19
|
+
const models = (0, models_1.filterModels)((0, models_1.normalizeModelsResponse)(response.body), filters);
|
|
20
|
+
const malformedModels = (0, models_1.malformedModelsFromResponse)(response.body);
|
|
21
|
+
return [
|
|
22
|
+
...models.map((model) => ({
|
|
23
|
+
json: model,
|
|
24
|
+
})),
|
|
25
|
+
...malformedModels.map((model) => ({
|
|
26
|
+
json: model,
|
|
27
|
+
})),
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=listModels.operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listModels.operation.js","sourceRoot":"","sources":["../../../../nodes/Speechall/operations/listModels.operation.ts"],"names":[],"mappings":";;AASA,kDA0BC;AAjCD,8CAI2B;AAC3B,0EAAuE;AAEhE,KAAK,UAAU,mBAAmB;IACxC,MAAM,QAAQ,GAAG,MAAM,yCAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,wBAAwB,EAAE;QACtF,SAAS,EAAE,KAAM;QACjB,IAAI,EAAE,IAAI;KACV,CAAC,CAAC;IAEH,MAAM,OAAO,GAAgB;QAC5B,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,EAAE,KAAK,CAAC;QAC/D,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,EAAE,KAAK,CAAC;QAC3E,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC;QAC3D,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC;QAC3D,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,EAAE,KAAK,CAAC;KACvE,CAAC;IAEF,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,IAAA,gCAAuB,EAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,IAAA,oCAA2B,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEnE,OAAO;QACN,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,IAAI,EAAE,KAAK;SACX,CAAC,CAAC;QACH,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClC,IAAI,EAAE,KAAK;SACX,CAAC,CAAC;KACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transcribeFileOperation = transcribeFileOperation;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const binary_1 = require("../helpers/binary");
|
|
6
|
+
const models_1 = require("../helpers/models");
|
|
7
|
+
const normalize_1 = require("../helpers/normalize");
|
|
8
|
+
const replacementRules_1 = require("../helpers/replacementRules");
|
|
9
|
+
const errors_1 = require("../transport/errors");
|
|
10
|
+
const speechallApiRequest_1 = require("../transport/speechallApiRequest");
|
|
11
|
+
async function transcribeFileOperation(item, itemIndex) {
|
|
12
|
+
var _a;
|
|
13
|
+
const parameters = getOperationParameters.call(this, itemIndex);
|
|
14
|
+
const model = (0, models_1.getSelectedModel)(parameters);
|
|
15
|
+
if (!model) {
|
|
16
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'A Speechall model ID is required', { itemIndex });
|
|
17
|
+
}
|
|
18
|
+
(0, errors_1.validateTimeout)(this, parameters.timeoutSeconds);
|
|
19
|
+
(0, errors_1.validateTemperature)(this, parameters.temperature);
|
|
20
|
+
(0, errors_1.validateSpeakersExpected)(this, parameters.speakersExpected);
|
|
21
|
+
const binaryData = (_a = item.binary) === null || _a === void 0 ? void 0 : _a[parameters.binaryPropertyName];
|
|
22
|
+
if (!binaryData) {
|
|
23
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `No binary data found in property "${parameters.binaryPropertyName}"`, { itemIndex });
|
|
24
|
+
}
|
|
25
|
+
if (parameters.modelSelectionMode === 'list') {
|
|
26
|
+
await validateBinarySizeIfKnown.call(this, model, binaryData.fileSize, itemIndex);
|
|
27
|
+
}
|
|
28
|
+
const buffer = await this.helpers.getBinaryDataBuffer(itemIndex, parameters.binaryPropertyName);
|
|
29
|
+
const qs = buildTranscriptionQuery(parameters, model);
|
|
30
|
+
const response = await speechallApiRequest_1.speechallApiRequest.call(this, 'POST', '/transcribe', {
|
|
31
|
+
qs,
|
|
32
|
+
body: buffer,
|
|
33
|
+
timeoutMs: parameters.timeoutSeconds * 1000,
|
|
34
|
+
headers: {
|
|
35
|
+
'Content-Type': binaryData.mimeType || 'application/octet-stream',
|
|
36
|
+
},
|
|
37
|
+
encoding: parameters.outputFormat === 'json' || parameters.outputFormat === 'json_text'
|
|
38
|
+
? 'json'
|
|
39
|
+
: 'text',
|
|
40
|
+
json: false,
|
|
41
|
+
});
|
|
42
|
+
const rawText = typeof response.rawBody === 'string' ? response.rawBody : undefined;
|
|
43
|
+
const json = (0, normalize_1.normalizeSpeechallTranscriptionResponse)({
|
|
44
|
+
response: response.body,
|
|
45
|
+
rawText,
|
|
46
|
+
outputFormat: parameters.outputFormat,
|
|
47
|
+
model,
|
|
48
|
+
language: parameters.language,
|
|
49
|
+
source: 'binary',
|
|
50
|
+
});
|
|
51
|
+
let binary = item.binary;
|
|
52
|
+
if (parameters.alsoReturnBinary &&
|
|
53
|
+
(0, binary_1.supportsTranscriptBinaryOutput)(parameters.outputFormat) &&
|
|
54
|
+
typeof json.text === 'string') {
|
|
55
|
+
binary = await binary_1.addTranscriptBinaryOutput.call(this, item, json.text, parameters.outputFormat, parameters.binaryOutputProperty);
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
json,
|
|
59
|
+
binary,
|
|
60
|
+
pairedItem: { item: itemIndex },
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function getOperationParameters(itemIndex) {
|
|
64
|
+
const temperature = optionalNumber(this.getNodeParameter('temperature', itemIndex, undefined));
|
|
65
|
+
const diarization = this.getNodeParameter('diarization', itemIndex, false);
|
|
66
|
+
const speakersExpected = diarization
|
|
67
|
+
? optionalNumber(this.getNodeParameter('speakersExpected', itemIndex, undefined))
|
|
68
|
+
: undefined;
|
|
69
|
+
return {
|
|
70
|
+
binaryPropertyName: this.getNodeParameter('binaryPropertyName', itemIndex, 'data'),
|
|
71
|
+
modelSelectionMode: this.getNodeParameter('modelSelectionMode', itemIndex, 'list'),
|
|
72
|
+
model: this.getNodeParameter('model', itemIndex, ''),
|
|
73
|
+
modelId: this.getNodeParameter('modelId', itemIndex, ''),
|
|
74
|
+
language: this.getNodeParameter('language', itemIndex, 'en'),
|
|
75
|
+
outputFormat: this.getNodeParameter('outputFormat', itemIndex, 'text'),
|
|
76
|
+
punctuation: this.getNodeParameter('punctuation', itemIndex, true),
|
|
77
|
+
diarization,
|
|
78
|
+
initialPrompt: this.getNodeParameter('initialPrompt', itemIndex, ''),
|
|
79
|
+
temperature,
|
|
80
|
+
speakersExpected,
|
|
81
|
+
customVocabulary: this.getNodeParameter('customVocabulary', itemIndex, {}),
|
|
82
|
+
rulesetId: this.getNodeParameter('rulesetId', itemIndex, ''),
|
|
83
|
+
timeoutSeconds: this.getNodeParameter('timeoutSeconds', itemIndex, 300),
|
|
84
|
+
alsoReturnBinary: this.getNodeParameter('alsoReturnBinary', itemIndex, false),
|
|
85
|
+
binaryOutputProperty: this.getNodeParameter('binaryOutputProperty', itemIndex, 'transcript'),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function buildTranscriptionQuery(parameters, model) {
|
|
89
|
+
const qs = {
|
|
90
|
+
model,
|
|
91
|
+
language: parameters.language,
|
|
92
|
+
output_format: parameters.outputFormat,
|
|
93
|
+
punctuation: parameters.punctuation,
|
|
94
|
+
diarization: parameters.diarization,
|
|
95
|
+
};
|
|
96
|
+
addIfPresent(qs, 'initial_prompt', parameters.initialPrompt);
|
|
97
|
+
addIfPresent(qs, 'temperature', parameters.temperature);
|
|
98
|
+
if (parameters.diarization) {
|
|
99
|
+
addIfPresent(qs, 'speakers_expected', parameters.speakersExpected);
|
|
100
|
+
}
|
|
101
|
+
addIfPresent(qs, 'ruleset_id', parameters.rulesetId);
|
|
102
|
+
const customVocabulary = (0, replacementRules_1.serializeCustomVocabulary)(parameters);
|
|
103
|
+
if (customVocabulary.length > 0) {
|
|
104
|
+
qs.custom_vocabulary = customVocabulary;
|
|
105
|
+
}
|
|
106
|
+
return qs;
|
|
107
|
+
}
|
|
108
|
+
async function validateBinarySizeIfKnown(modelId, fileSize, itemIndex) {
|
|
109
|
+
const bytes = parseFileSize(fileSize);
|
|
110
|
+
if (bytes === undefined) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const response = await speechallApiRequest_1.speechallApiRequest.call(this, 'GET', '/speech-to-text-models', {
|
|
114
|
+
timeoutMs: 30000,
|
|
115
|
+
json: true,
|
|
116
|
+
});
|
|
117
|
+
const model = (0, models_1.normalizeModelsResponse)(response.body).find((candidate) => candidate.id === modelId);
|
|
118
|
+
const maxFileSizeBytes = model === null || model === void 0 ? void 0 : model.maxFileSizeBytes;
|
|
119
|
+
if (typeof maxFileSizeBytes === 'number' && bytes > maxFileSizeBytes) {
|
|
120
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Binary file is ${bytes} bytes, which exceeds the selected model limit of ${maxFileSizeBytes} bytes`, { itemIndex });
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function parseFileSize(fileSize) {
|
|
124
|
+
var _a;
|
|
125
|
+
if (typeof fileSize === 'number') {
|
|
126
|
+
return fileSize;
|
|
127
|
+
}
|
|
128
|
+
if (typeof fileSize !== 'string') {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
const normalized = fileSize.trim().toLowerCase();
|
|
132
|
+
const match = normalized.match(/^([0-9]+(?:\.[0-9]+)?)\s*(b|kb|mb|gb)?$/);
|
|
133
|
+
if (!match) {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
const value = Number(match[1]);
|
|
137
|
+
const unit = (_a = match[2]) !== null && _a !== void 0 ? _a : 'b';
|
|
138
|
+
const multiplier = unit === 'gb' ? 1024 ** 3 : unit === 'mb' ? 1024 ** 2 : unit === 'kb' ? 1024 : 1;
|
|
139
|
+
return Math.round(value * multiplier);
|
|
140
|
+
}
|
|
141
|
+
function optionalNumber(value) {
|
|
142
|
+
return value === '' || value === undefined || value === null ? undefined : Number(value);
|
|
143
|
+
}
|
|
144
|
+
function addIfPresent(qs, key, value) {
|
|
145
|
+
if (value !== '' && value !== undefined && value !== null) {
|
|
146
|
+
qs[key] = value;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=transcribeFile.operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribeFile.operation.js","sourceRoot":"","sources":["../../../../nodes/Speechall/operations/transcribeFile.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transcribeRemoteUrlOperation = transcribeRemoteUrlOperation;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const binary_1 = require("../helpers/binary");
|
|
6
|
+
const models_1 = require("../helpers/models");
|
|
7
|
+
const normalize_1 = require("../helpers/normalize");
|
|
8
|
+
const replacementRules_1 = require("../helpers/replacementRules");
|
|
9
|
+
const errors_1 = require("../transport/errors");
|
|
10
|
+
const speechallApiRequest_1 = require("../transport/speechallApiRequest");
|
|
11
|
+
async function transcribeRemoteUrlOperation(item, itemIndex) {
|
|
12
|
+
const parameters = getOperationParameters.call(this, itemIndex);
|
|
13
|
+
const model = (0, models_1.getSelectedModel)(parameters);
|
|
14
|
+
if (!model) {
|
|
15
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'A Speechall model ID is required', { itemIndex });
|
|
16
|
+
}
|
|
17
|
+
(0, errors_1.validateTimeout)(this, parameters.timeoutSeconds);
|
|
18
|
+
(0, errors_1.validateTemperature)(this, parameters.temperature);
|
|
19
|
+
(0, errors_1.validateSpeakersExpected)(this, parameters.speakersExpected);
|
|
20
|
+
validateRemoteUrl(this, parameters.fileUrl, itemIndex);
|
|
21
|
+
const body = buildRemoteBody(this, parameters, model);
|
|
22
|
+
const response = await speechallApiRequest_1.speechallApiRequest.call(this, 'POST', '/transcribe-remote', {
|
|
23
|
+
body,
|
|
24
|
+
timeoutMs: parameters.timeoutSeconds * 1000,
|
|
25
|
+
headers: {
|
|
26
|
+
'Content-Type': 'application/json',
|
|
27
|
+
},
|
|
28
|
+
encoding: parameters.outputFormat === 'json' || parameters.outputFormat === 'json_text'
|
|
29
|
+
? 'json'
|
|
30
|
+
: 'text',
|
|
31
|
+
json: true,
|
|
32
|
+
});
|
|
33
|
+
const rawText = typeof response.rawBody === 'string' ? response.rawBody : undefined;
|
|
34
|
+
const json = (0, normalize_1.normalizeSpeechallTranscriptionResponse)({
|
|
35
|
+
response: response.body,
|
|
36
|
+
rawText,
|
|
37
|
+
outputFormat: parameters.outputFormat,
|
|
38
|
+
model,
|
|
39
|
+
language: parameters.language,
|
|
40
|
+
source: 'remote_url',
|
|
41
|
+
sourceUrlSanitized: (0, normalize_1.sanitizeSourceUrl)(parameters.fileUrl),
|
|
42
|
+
fileUrl: parameters.includeSourceUrl ? parameters.fileUrl : undefined,
|
|
43
|
+
});
|
|
44
|
+
let binary = item.binary;
|
|
45
|
+
if (parameters.alsoReturnBinary &&
|
|
46
|
+
(0, binary_1.supportsTranscriptBinaryOutput)(parameters.outputFormat) &&
|
|
47
|
+
typeof json.text === 'string') {
|
|
48
|
+
binary = await binary_1.addTranscriptBinaryOutput.call(this, item, json.text, parameters.outputFormat, parameters.binaryOutputProperty);
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
json,
|
|
52
|
+
binary,
|
|
53
|
+
pairedItem: { item: itemIndex },
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function getOperationParameters(itemIndex) {
|
|
57
|
+
const temperature = optionalNumber(this.getNodeParameter('temperature', itemIndex, undefined));
|
|
58
|
+
const diarization = this.getNodeParameter('diarization', itemIndex, false);
|
|
59
|
+
const speakersExpected = diarization
|
|
60
|
+
? optionalNumber(this.getNodeParameter('speakersExpected', itemIndex, undefined))
|
|
61
|
+
: undefined;
|
|
62
|
+
return {
|
|
63
|
+
fileUrl: this.getNodeParameter('fileUrl', itemIndex, ''),
|
|
64
|
+
modelSelectionMode: this.getNodeParameter('modelSelectionMode', itemIndex, 'list'),
|
|
65
|
+
model: this.getNodeParameter('model', itemIndex, ''),
|
|
66
|
+
modelId: this.getNodeParameter('modelId', itemIndex, ''),
|
|
67
|
+
language: this.getNodeParameter('language', itemIndex, 'en'),
|
|
68
|
+
outputFormat: this.getNodeParameter('outputFormat', itemIndex, 'text'),
|
|
69
|
+
punctuation: this.getNodeParameter('punctuation', itemIndex, true),
|
|
70
|
+
diarization,
|
|
71
|
+
initialPrompt: this.getNodeParameter('initialPrompt', itemIndex, ''),
|
|
72
|
+
temperature,
|
|
73
|
+
speakersExpected,
|
|
74
|
+
customVocabulary: this.getNodeParameter('customVocabulary', itemIndex, {}),
|
|
75
|
+
rulesetId: this.getNodeParameter('rulesetId', itemIndex, ''),
|
|
76
|
+
replacementRules: this.getNodeParameter('replacementRules', itemIndex, {}),
|
|
77
|
+
includeSourceUrl: this.getNodeParameter('includeSourceUrl', itemIndex, false),
|
|
78
|
+
timeoutSeconds: this.getNodeParameter('timeoutSeconds', itemIndex, 300),
|
|
79
|
+
alsoReturnBinary: this.getNodeParameter('alsoReturnBinary', itemIndex, false),
|
|
80
|
+
binaryOutputProperty: this.getNodeParameter('binaryOutputProperty', itemIndex, 'transcript'),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function buildRemoteBody(context, parameters, model) {
|
|
84
|
+
const body = {
|
|
85
|
+
file_url: parameters.fileUrl,
|
|
86
|
+
model,
|
|
87
|
+
language: parameters.language,
|
|
88
|
+
output_format: parameters.outputFormat,
|
|
89
|
+
punctuation: parameters.punctuation,
|
|
90
|
+
diarization: parameters.diarization,
|
|
91
|
+
};
|
|
92
|
+
addIfPresent(body, 'initial_prompt', parameters.initialPrompt);
|
|
93
|
+
addIfPresent(body, 'temperature', parameters.temperature);
|
|
94
|
+
if (parameters.diarization) {
|
|
95
|
+
addIfPresent(body, 'speakers_expected', parameters.speakersExpected);
|
|
96
|
+
}
|
|
97
|
+
addIfPresent(body, 'ruleset_id', parameters.rulesetId);
|
|
98
|
+
const customVocabulary = (0, replacementRules_1.serializeCustomVocabulary)(parameters);
|
|
99
|
+
if (customVocabulary.length > 0) {
|
|
100
|
+
body.custom_vocabulary = customVocabulary;
|
|
101
|
+
}
|
|
102
|
+
const replacementRules = (0, replacementRules_1.serializeReplacementRules)(context.getNode(), parameters);
|
|
103
|
+
if (replacementRules) {
|
|
104
|
+
body.replacement_ruleset = replacementRules;
|
|
105
|
+
}
|
|
106
|
+
return body;
|
|
107
|
+
}
|
|
108
|
+
function validateRemoteUrl(context, fileUrl, itemIndex) {
|
|
109
|
+
if (!fileUrl.trim()) {
|
|
110
|
+
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'File URL is required', { itemIndex });
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const url = new URL(fileUrl);
|
|
114
|
+
if (url.protocol !== 'http:' && url.protocol !== 'https:') {
|
|
115
|
+
throw new Error('Unsupported protocol');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'File URL must be a valid HTTP or HTTPS URL', {
|
|
120
|
+
itemIndex,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function optionalNumber(value) {
|
|
125
|
+
return value === '' || value === undefined || value === null ? undefined : Number(value);
|
|
126
|
+
}
|
|
127
|
+
function addIfPresent(body, key, value) {
|
|
128
|
+
if (value !== '' && value !== undefined && value !== null) {
|
|
129
|
+
body[key] = value;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=transcribeRemoteUrl.operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribeRemoteUrl.operation.js","sourceRoot":"","sources":["../../../../nodes/Speechall/operations/transcribeRemoteUrl.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-labelledby="title">
|
|
2
|
+
<title>Speechall</title>
|
|
3
|
+
<rect width="64" height="64" rx="12" fill="#F7FAFC"/>
|
|
4
|
+
<path d="M17 36c4 7 10 11 17 11 9 0 16-7 16-16S43 15 34 15c-7 0-13 4-17 11" fill="none" stroke="#16866D" stroke-width="5" stroke-linecap="round"/>
|
|
5
|
+
<path d="M15 32h24" stroke="#101820" stroke-width="5" stroke-linecap="round"/>
|
|
6
|
+
<path d="M31 24l8 8-8 8" fill="none" stroke="#101820" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-labelledby="title">
|
|
2
|
+
<title>Speechall</title>
|
|
3
|
+
<rect width="64" height="64" rx="12" fill="#101820"/>
|
|
4
|
+
<path d="M17 36c4 7 10 11 17 11 9 0 16-7 16-16S43 15 34 15c-7 0-13 4-17 11" fill="none" stroke="#4DD4AC" stroke-width="5" stroke-linecap="round"/>
|
|
5
|
+
<path d="M15 32h24" stroke="#FFFFFF" stroke-width="5" stroke-linecap="round"/>
|
|
6
|
+
<path d="M31 24l8 8-8 8" fill="none" stroke="#FFFFFF" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IDataObject, IExecuteFunctions, ILoadOptionsFunctions } from 'n8n-workflow';
|
|
2
|
+
import { NodeApiError, NodeOperationError } from 'n8n-workflow';
|
|
3
|
+
export declare function buildNodeApiError(context: IExecuteFunctions | ILoadOptionsFunctions, response: {
|
|
4
|
+
statusCode?: number;
|
|
5
|
+
headers?: IDataObject;
|
|
6
|
+
body?: unknown;
|
|
7
|
+
}): NodeApiError;
|
|
8
|
+
export declare function toNodeOperationError(context: IExecuteFunctions, error: unknown, itemIndex: number): NodeOperationError | NodeApiError;
|
|
9
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
10
|
+
export declare function validateTimeout(context: IExecuteFunctions, timeoutSeconds: number): void;
|
|
11
|
+
export declare function validateTemperature(context: IExecuteFunctions, temperature: number | undefined): void;
|
|
12
|
+
export declare function validateSpeakersExpected(context: IExecuteFunctions, speakersExpected: number | undefined): void;
|