@memberjunction/ai-groq 6.1.0-edge.0 → 6.1.0-edge.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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/models/groqAudio.d.ts +49 -0
- package/dist/models/groqAudio.d.ts.map +1 -0
- package/dist/models/groqAudio.js +177 -0
- package/dist/models/groqAudio.js.map +1 -0
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { AudioModel, AudioSplitter, BaseAudioGenerator, PronounciationDictionary, SpeechResult, SpeechToTextParams, TextToSpeechParams, VoiceInfo } from '@memberjunction/ai';
|
|
2
|
+
import Groq from 'groq-sdk';
|
|
3
|
+
/**
|
|
4
|
+
* Groq implementation of {@link BaseAudioGenerator}, covering speech-to-text via Whisper.
|
|
5
|
+
*
|
|
6
|
+
* Groq offers no text-to-speech surface, so `CreateSpeech` and the voice/dictionary methods
|
|
7
|
+
* are not supported — `GetSupportedMethods` reports exactly what works.
|
|
8
|
+
*
|
|
9
|
+
* Whisper on Groq does **not** do speaker diarization. There is no parameter for it and no
|
|
10
|
+
* way to emulate it from the response, so a caller that needs speaker labels needs a
|
|
11
|
+
* different provider (AssemblyAI, Deepgram) rather than a flag here.
|
|
12
|
+
*
|
|
13
|
+
* Audio above Groq's 25MB upload ceiling requires an {@link AudioSplitter}, assigned to
|
|
14
|
+
* {@link Splitter}. Without one, oversized audio fails with a message naming the option
|
|
15
|
+
* rather than silently transcribing a truncated prefix.
|
|
16
|
+
*/
|
|
17
|
+
export declare class GroqAudioGenerator extends BaseAudioGenerator {
|
|
18
|
+
private _client;
|
|
19
|
+
constructor(apiKey: string);
|
|
20
|
+
/**
|
|
21
|
+
* Read only getter for the underlying Groq client instance
|
|
22
|
+
*/
|
|
23
|
+
get GroqClient(): Groq;
|
|
24
|
+
/**
|
|
25
|
+
* Optional splitter used only when the audio exceeds Groq's upload ceiling. See
|
|
26
|
+
* {@link AudioSplitter} for why this is injected rather than bundled.
|
|
27
|
+
*/
|
|
28
|
+
Splitter: AudioSplitter | null;
|
|
29
|
+
/**
|
|
30
|
+
* Transcribes audio to text using one of Groq's Whisper models.
|
|
31
|
+
*
|
|
32
|
+
* Pieces of split audio are transcribed **sequentially**, not in parallel: Groq rate
|
|
33
|
+
* limits by audio-seconds per minute, so firing an hour of audio at once buys nothing
|
|
34
|
+
* but 429s, and a partial failure mid-way would leave a transcript with an unmarked
|
|
35
|
+
* hole in it.
|
|
36
|
+
*/
|
|
37
|
+
SpeechToText(params: SpeechToTextParams): Promise<SpeechResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Resolve the audio bytes from whichever of the two input forms the caller used.
|
|
40
|
+
*/
|
|
41
|
+
private resolveAudio;
|
|
42
|
+
private transcribeOne;
|
|
43
|
+
CreateSpeech(_params: TextToSpeechParams): Promise<SpeechResult>;
|
|
44
|
+
GetVoices(): Promise<VoiceInfo[]>;
|
|
45
|
+
GetModels(): Promise<AudioModel[]>;
|
|
46
|
+
GetPronounciationDictionaries(): Promise<PronounciationDictionary[]>;
|
|
47
|
+
GetSupportedMethods(): Promise<string[]>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=groqAudio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groqAudio.d.ts","sourceRoot":"","sources":["../../src/models/groqAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,aAAa,EACb,kBAAkB,EAElB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,IAAgB,MAAM,UAAU,CAAC;AAgBxC;;;;;;;;;;;;;GAaG;AACH,qBACa,kBAAmB,SAAQ,kBAAkB;IACtD,OAAO,CAAC,OAAO,CAAO;gBAEV,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACH,IAAW,UAAU,IAAI,IAAI,CAE5B;IAED;;;OAGG;IACI,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAQ;IAE7C;;;;;;;OAOG;IACU,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAuD5E;;OAEG;IACH,OAAO,CAAC,YAAY;YAUN,aAAa;IAYd,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhE,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAKjC,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IA0BlC,6BAA6B,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAIpE,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAGxD"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { BaseAudioGenerator, ErrorAnalyzer, SpeechResult, } from '@memberjunction/ai';
|
|
11
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
12
|
+
import Groq, { toFile } from 'groq-sdk';
|
|
13
|
+
/**
|
|
14
|
+
* Groq's documented upload ceiling for the transcription endpoint. The request is rejected
|
|
15
|
+
* outright above this, so it is a hard boundary rather than a tuning knob.
|
|
16
|
+
*/
|
|
17
|
+
const MAX_UPLOAD_BYTES = 25 * 1024 * 1024;
|
|
18
|
+
/**
|
|
19
|
+
* Leave headroom under the ceiling: multipart framing and the form fields ride along with
|
|
20
|
+
* the audio, and a piece sized exactly at the limit fails for the overhead alone.
|
|
21
|
+
*/
|
|
22
|
+
const SPLIT_TARGET_BYTES = 24 * 1024 * 1024;
|
|
23
|
+
const DEFAULT_MODEL = 'whisper-large-v3';
|
|
24
|
+
/**
|
|
25
|
+
* Groq implementation of {@link BaseAudioGenerator}, covering speech-to-text via Whisper.
|
|
26
|
+
*
|
|
27
|
+
* Groq offers no text-to-speech surface, so `CreateSpeech` and the voice/dictionary methods
|
|
28
|
+
* are not supported — `GetSupportedMethods` reports exactly what works.
|
|
29
|
+
*
|
|
30
|
+
* Whisper on Groq does **not** do speaker diarization. There is no parameter for it and no
|
|
31
|
+
* way to emulate it from the response, so a caller that needs speaker labels needs a
|
|
32
|
+
* different provider (AssemblyAI, Deepgram) rather than a flag here.
|
|
33
|
+
*
|
|
34
|
+
* Audio above Groq's 25MB upload ceiling requires an {@link AudioSplitter}, assigned to
|
|
35
|
+
* {@link Splitter}. Without one, oversized audio fails with a message naming the option
|
|
36
|
+
* rather than silently transcribing a truncated prefix.
|
|
37
|
+
*/
|
|
38
|
+
let GroqAudioGenerator = class GroqAudioGenerator extends BaseAudioGenerator {
|
|
39
|
+
constructor(apiKey) {
|
|
40
|
+
super(apiKey);
|
|
41
|
+
/**
|
|
42
|
+
* Optional splitter used only when the audio exceeds Groq's upload ceiling. See
|
|
43
|
+
* {@link AudioSplitter} for why this is injected rather than bundled.
|
|
44
|
+
*/
|
|
45
|
+
this.Splitter = null;
|
|
46
|
+
this._client = new Groq({ apiKey: apiKey });
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Read only getter for the underlying Groq client instance
|
|
50
|
+
*/
|
|
51
|
+
get GroqClient() {
|
|
52
|
+
return this._client;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Transcribes audio to text using one of Groq's Whisper models.
|
|
56
|
+
*
|
|
57
|
+
* Pieces of split audio are transcribed **sequentially**, not in parallel: Groq rate
|
|
58
|
+
* limits by audio-seconds per minute, so firing an hour of audio at once buys nothing
|
|
59
|
+
* but 429s, and a partial failure mid-way would leave a transcript with an unmarked
|
|
60
|
+
* hole in it.
|
|
61
|
+
*/
|
|
62
|
+
async SpeechToText(params) {
|
|
63
|
+
const result = new SpeechResult();
|
|
64
|
+
try {
|
|
65
|
+
const audio = this.resolveAudio(params);
|
|
66
|
+
const model = params.model || DEFAULT_MODEL;
|
|
67
|
+
let text;
|
|
68
|
+
if (audio.byteLength <= MAX_UPLOAD_BYTES) {
|
|
69
|
+
text = await this.transcribeOne(audio, model, params);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
if (!this.Splitter) {
|
|
73
|
+
throw new Error(`Audio is ${(audio.byteLength / (1024 * 1024)).toFixed(1)}MB, above Groq's 25MB ` +
|
|
74
|
+
`transcription limit. Assign an AudioSplitter to the Splitter property to transcribe ` +
|
|
75
|
+
`audio this size.`);
|
|
76
|
+
}
|
|
77
|
+
const pieces = await this.Splitter.Split(audio, SPLIT_TARGET_BYTES);
|
|
78
|
+
if (pieces.length === 0) {
|
|
79
|
+
throw new Error('The configured AudioSplitter returned no pieces');
|
|
80
|
+
}
|
|
81
|
+
const transcripts = [];
|
|
82
|
+
for (const piece of pieces) {
|
|
83
|
+
// A piece the splitter left oversized would fail at the API with a size
|
|
84
|
+
// error naming neither the splitter nor which piece; say so here instead.
|
|
85
|
+
if (piece.byteLength > MAX_UPLOAD_BYTES) {
|
|
86
|
+
throw new Error(`The configured AudioSplitter produced a ${(piece.byteLength / (1024 * 1024)).toFixed(1)}MB ` +
|
|
87
|
+
`piece, above Groq's 25MB limit`);
|
|
88
|
+
}
|
|
89
|
+
transcripts.push(await this.transcribeOne(piece, model, params));
|
|
90
|
+
}
|
|
91
|
+
text = transcripts.filter((t) => t.length > 0).join(' ');
|
|
92
|
+
}
|
|
93
|
+
if (text.trim().length === 0) {
|
|
94
|
+
// Whisper returns an empty string for silence, and for audio it could not
|
|
95
|
+
// decode. Both are failures from the caller's point of view — an empty
|
|
96
|
+
// transcript reported as success gets stored as if it were the content.
|
|
97
|
+
throw new Error('Transcription returned no text; the audio may be silent or in an unsupported format');
|
|
98
|
+
}
|
|
99
|
+
result.success = true;
|
|
100
|
+
result.content = text;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
const errorInfo = ErrorAnalyzer.analyzeError(error, 'Groq Whisper');
|
|
104
|
+
result.success = false;
|
|
105
|
+
result.errorMessage = error?.message || 'Unknown error occurred';
|
|
106
|
+
console.error('Groq Whisper error:', error, errorInfo);
|
|
107
|
+
}
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Resolve the audio bytes from whichever of the two input forms the caller used.
|
|
112
|
+
*/
|
|
113
|
+
resolveAudio(params) {
|
|
114
|
+
if (params.audioData && params.audioData.byteLength > 0) {
|
|
115
|
+
return params.audioData;
|
|
116
|
+
}
|
|
117
|
+
if (params.audioFile && params.audioFile.length > 0) {
|
|
118
|
+
return Buffer.from(params.audioFile, 'base64');
|
|
119
|
+
}
|
|
120
|
+
throw new Error('SpeechToText requires either audioData (Buffer) or audioFile (base 64 string)');
|
|
121
|
+
}
|
|
122
|
+
async transcribeOne(audio, model, params) {
|
|
123
|
+
const response = await this._client.audio.transcriptions.create({
|
|
124
|
+
file: await toFile(audio, params.fileName || 'audio.mp3'),
|
|
125
|
+
model,
|
|
126
|
+
response_format: 'json',
|
|
127
|
+
language: params.language,
|
|
128
|
+
prompt: params.prompt,
|
|
129
|
+
temperature: params.temperature,
|
|
130
|
+
});
|
|
131
|
+
return response.text ?? '';
|
|
132
|
+
}
|
|
133
|
+
async CreateSpeech(_params) {
|
|
134
|
+
throw new Error('Groq does not offer a text-to-speech API');
|
|
135
|
+
}
|
|
136
|
+
async GetVoices() {
|
|
137
|
+
// Transcription only — there are no voices to enumerate.
|
|
138
|
+
return [];
|
|
139
|
+
}
|
|
140
|
+
async GetModels() {
|
|
141
|
+
// Hardcoded rather than listed from the API: Groq's /models endpoint returns every
|
|
142
|
+
// model on the platform, LLMs included, with nothing on the row to identify which
|
|
143
|
+
// ones the transcription endpoint accepts.
|
|
144
|
+
return [
|
|
145
|
+
{
|
|
146
|
+
id: 'whisper-large-v3',
|
|
147
|
+
name: 'Whisper Large v3',
|
|
148
|
+
supportsTextToSpeech: false,
|
|
149
|
+
supportsVoiceConversion: false,
|
|
150
|
+
supportsStyle: false,
|
|
151
|
+
supportsSpeakerBoost: false,
|
|
152
|
+
supportsFineTuning: false,
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
id: 'whisper-large-v3-turbo',
|
|
156
|
+
name: 'Whisper Large v3 Turbo',
|
|
157
|
+
supportsTextToSpeech: false,
|
|
158
|
+
supportsVoiceConversion: false,
|
|
159
|
+
supportsStyle: false,
|
|
160
|
+
supportsSpeakerBoost: false,
|
|
161
|
+
supportsFineTuning: false,
|
|
162
|
+
},
|
|
163
|
+
];
|
|
164
|
+
}
|
|
165
|
+
async GetPronounciationDictionaries() {
|
|
166
|
+
return [];
|
|
167
|
+
}
|
|
168
|
+
async GetSupportedMethods() {
|
|
169
|
+
return ['SpeechToText', 'GetModels'];
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
GroqAudioGenerator = __decorate([
|
|
173
|
+
RegisterClass(BaseAudioGenerator, 'GroqAudioGenerator'),
|
|
174
|
+
__metadata("design:paramtypes", [String])
|
|
175
|
+
], GroqAudioGenerator);
|
|
176
|
+
export { GroqAudioGenerator };
|
|
177
|
+
//# sourceMappingURL=groqAudio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groqAudio.js","sourceRoot":"","sources":["../../src/models/groqAudio.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ai-groq",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "6.1.0-edge.
|
|
4
|
+
"version": "6.1.0-edge.2",
|
|
5
5
|
"description": "MemberJunction Wrapper for Groq AI LPU inference engine",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"typescript": "^5.9.3"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@memberjunction/ai": "6.1.0-edge.
|
|
19
|
-
"@memberjunction/global": "6.1.0-edge.
|
|
18
|
+
"@memberjunction/ai": "6.1.0-edge.2",
|
|
19
|
+
"@memberjunction/global": "6.1.0-edge.2",
|
|
20
20
|
"groq-sdk": "^0.37.0"
|
|
21
21
|
},
|
|
22
22
|
"repository": {
|