openrouter-compliance-review
Review OpenRouter integration for regulatory compliance (SOC2, GDPR,
groq-core-workflow-b
Execute Groq secondary workflows: audio transcription (Whisper), vision,
Full skill instructions
Beyond chat completions, Groq provides ultra-fast audio transcription (Whisper at 216x real-time), multimodal vision (Llama 4 Scout/Maverick), and text-to-speech. These endpoints use the same groq-sdk client.
groq-sdk installed, GROQ_API_KEY set| Model ID | Languages | Speed | Best For |
|---|---|---|---|
whisper-large-v3 | 100+ | 164x real-time | Best accuracy, multilingual |
whisper-large-v3-turbo | 100+ | 216x real-time | Best speed/accuracy balance |
Supported audio formats: flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, webm
import Groq from "groq-sdk";
import fs from "fs";
const groq = new Groq();
// Transcribe audio file
async function transcribe(filePath: string): Promise<string> {
const transcription = await groq.audio.transcriptions.create({
file: fs.createReadStream(filePath),
model: "whisper-large-v3-turbo",
response_format: "json", // or "text" or "verbose_json"
language: "en", // Optional: ISO 639-1 code
});
return transcription.text;
}
// With timestamps (verbose mode)
async function transcribeWithTimestamps(filePath: string) {
const transcription = await groq.audio.transcriptions.create({
file: fs.createReadStream(filePath),
model: "whisper-large-v3-turbo",
response_format: "verbose_json",
timestamp_granularities: ["segment"],
});
return transcription;
// Returns segments with start/end times
}
// Translate any language audio to English text
async function translateAudio(filePath: string): Promise<string> {
const translation = await groq.audio.translations.create({
file: fs.createReadStream(filePath),
model: "whisper-large-v3",
});
return translation.text;
}
// Analyze images with Llama 4 Scout (up to 5 images per request)
async function analyzeImage(imageUrl: string, question: string) {
const completion = await groq.chat.completions.create({
model: "meta-llama/llama-4-scout-17b-16e-instruct",
messages: [
{
role: "user",
content: [
{ type: "text", text: question },
{ type: "image_url", image_url: { url: imageUrl } },
],
},
],
max_tokens: 1024,
});
return completion.choices[0].message.content;
}
// Multiple images
async function compareImages(urls: string[], prompt: string) {
const imageContent = urls.map((url) => ({
type: "image_url" as const,
image_url: { url },
}));
const completion = await groq.chat.completions.create({
model: "meta-llama/llama-4-scout-17b-16e-instruct",
messages: [{
role: "user",
content: [{ type: "text", text: prompt }, ...imageContent],
}],
max_tokens: 2048,
});
return completion.choices[0].message.content;
}
// Base64 image input
async function analyzeBase64Image(base64Data: string) {
return groq.chat.completions.create({
model: "meta-llama/llama-4-scout-17b-16e-instruct",
messages: [{
role: "user",
content: [
{ type: "text", text: "Describe this image in detail." },
{
type: "image_url",
image_url: { url: `data:image/jpeg;base64,${base64Data}` },
},
],
}],
});
}
// Generate speech from text
async function textToSpeech(text: string, outputPath: string) {
const response = await groq.audio.speech.create({
model: "playai-tts", // or "playai-tts-arabic"
input: text,
voice: "Arista-PlayAI", // See Groq docs for voice options
response_format: "wav", // wav, mp3, flac, opus, aac
});
const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync(outputPath, buffer);
console.log(`Audio saved to ${outputPath}`);
}
from groq import Groq
client = Groq()
# Transcribe
with open("audio.mp3", "rb") as file:
transcription = client.audio.transcriptions.create(
file=("audio.mp3", file),
model="whisper-large-v3-turbo",
response_format="verbose_json",
)
print(transcription.text)
for segment in transcription.segments:
print(f"[{segment.start:.1f}s - {segment.end:.1f}s] {segment.text}")
// Compare models on same prompt for speed vs quality
async function benchmarkModels(prompt: string) {
const models = [
"llama-3.1-8b-instant",
"llama-3.3-70b-versatile",
"llama-3.3-70b-specdec",
];
for (const model of models) {
const start = performance.now();
const result = await groq.chat.completions.create({
model,
messages: [{ role: "user", content: prompt }],
max_tokens: 200,
});
const elapsed = performance.now() - start;
const tps = result.usage!.completion_tokens / ((result.usage as any).completion_time || 1);
console.log(
`${model.padEnd(45)} | ${elapsed.toFixed(0)}ms | ${tps.toFixed(0)} tok/s | ${result.usage!.total_tokens} tokens`
);
}
}
| Error | Cause | Solution |
|---|---|---|
Invalid file format | Unsupported audio type | Convert to mp3/wav/flac first |
File too large | Audio exceeds 25MB | Split into smaller chunks |
model_not_found | Vision model ID wrong | Use full path: meta-llama/llama-4-scout-17b-16e-instruct |
max_images_exceeded | >5 images in request | Reduce to 5 or fewer images |
429 on Whisper | Audio RPM limit hit | Queue transcription requests |
For common errors and troubleshooting, see groq-common-errors.
Review OpenRouter integration for regulatory compliance (SOC2, GDPR,
Data synchronization, ETL patterns, and data management for MaintainX.
Execute Groq primary workflow: chat completions with tool use and JSON
Validate CSRF protection implementations for security gaps. Use when
Configure this skill should be used when the user asks about "API contract",
Execute Ideogram incident response with triage, mitigation, and postmortem.
Execute create, select, and transform features to improve machine learning
Reusable patterns for the Gamma REST API (no SDK exists).
Apply production-ready Deepgram SDK patterns for TypeScript and Python.
Migrate to OpenRouter from direct provider APIs or upgrade between SDK/model
Diagnose and fix common OpenRouter API errors. Use when encountering
Optimize Linear API usage, reduce unnecessary calls, and maximize
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience