Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import {
assertOkOrThrowHttpError,
buildAudioTranscriptionFormData,
postTranscriptionRequest,
resolveProviderHttpRequestConfig,
requireTranscriptionText,
} from "./shared.js";
import type { AudioTranscriptionRequest, AudioTranscriptionResult } from "./types.js";
type OpenAiCompatibleAudioParams = AudioTranscriptionRequest & {
defaultBaseUrl: string;
defaultModel: string;
provider?: string;
};
function resolveModel(model: string | undefined, fallback: string): string {
const trimmed = model?.trim();
return trimmed || fallback;
}
export async function transcribeOpenAiCompatibleAudio(
params: OpenAiCompatibleAudioParams,
): Promise<AudioTranscriptionResult> {
const fetchFn = params.fetchFn ?? fetch;
const { baseUrl, allowPrivateNetwork, headers, dispatcherPolicy } =
resolveProviderHttpRequestConfig({
baseUrl: params.baseUrl,
defaultBaseUrl: params.defaultBaseUrl,
headers: params.headers,
request: params.request,
defaultHeaders: {
authorization: `Bearer ${params.apiKey}`,
},
provider: params.provider,
api: "openai-audio-transcriptions",
capability: "audio",
transport: "media-understanding",
});
const url = `${baseUrl}/audio/transcriptions`;
const model = resolveModel(params.model, params.defaultModel);
const form = buildAudioTranscriptionFormData({
buffer: params.buffer,
fileName: params.fileName,
mime: params.mime,
fields: {
model,
language: params.language,
prompt: params.prompt,
},
});
const { response: res, release } = await postTranscriptionRequest({
url,
headers,
body: form,
timeoutMs: params.timeoutMs,
fetchFn,
pinDns: false,
allowPrivateNetwork,
dispatcherPolicy,
});
try {
await assertOkOrThrowHttpError(res, "Audio transcription failed");
const payload = (await res.json()) as { text?: string };
const text = requireTranscriptionText(
payload.text,
"Audio transcription response missing text",
);
return { text, model };
} finally {
await release();
}
}
¤ Dauer der Verarbeitung: 0.23 Sekunden
(vorverarbeitet am 2026-04-27)
¤
*© Formatika GbR, Deutschland