/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import { MutationKey, useMutation, UseMutationResult, } from "@tanstack/react-query"; import { SDKCore } from "../core.js"; import { llmSpeechSpeakStreaming, SpeakStreamingAcceptEnum, } from "../funcs/llmSpeechSpeakStreaming.js"; import { combineSignals } from "../lib/primitives.js"; import { RequestOptions } from "../lib/sdks.js"; import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError, } from "../models/errors/httpclienterrors.js"; import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; import { SDKError } from "../models/errors/sdkerror.js"; import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; import * as operations from "../models/operations/index.js"; import { unwrapAsync } from "../types/fp.js"; import { useSDKContext } from "./_context.js"; import { MutationHookOptions } from "./_types.js"; export { SpeakStreamingAcceptEnum } from "../funcs/llmSpeechSpeakStreaming.js"; export type LlmSpeechSpeakStreamingMutationVariables = { request: operations.TextToSpeechStreamingRequest; options?: RequestOptions & { acceptHeaderOverride?: SpeakStreamingAcceptEnum; }; }; export type LlmSpeechSpeakStreamingMutationData = operations.TextToSpeechStreamingResponse; export type LlmSpeechSpeakStreamingMutationError = | SDKError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError; /** * Streaming text to speech * * @remarks * Convert text to speech with real-time streaming audio delivery. * * **Key Features:** * - Low-latency audio streaming - playback can start immediately as chunks arrive * - Automatic language detection * - Multiple format support: MP3 or PCM/WAV * - High-quality audio: 24kHz sample rate, 16-bit mono * * **Request Body:** * - `text`: Input text to convert to speech - required * - `language`: Language code (default: "auto") - "auto" for automatic detection, or ISO 639-1 codes: en, zh, hi, es, ar, bn, pt, ru, ja, pa, de, ko, fr, tr, it, th, pl, nl, id, vi, ur * - `format`: Audio format (default: "mp3") - "mp3" for compressed MPEG audio (96 kbps) or "pcm" for uncompressed WAV * - `model`: TTS model identifier (default: "auto") - "auto" selects the default provider; a registry-resolvable id dispatches to the matching provider (note: not all providers support `format: "mp3"`) * * **Response:** * - Streams audio chunks in real-time * - Returns `X-Language-Code` header with detected/used language * - Content-Type: `audio/mpeg` (MP3) or `audio/wav` (PCM) * - When `store` is `true`, returns the `X-Tts-Id` header with the id the history record will be stored under; persistence is best-effort and completes shortly after the stream ends * * **Use Cases:** * - Real-time applications requiring immediate audio playback * - Interactive voice responses * - Low-latency text-to-speech scenarios */ export function useLlmSpeechSpeakStreamingMutation( options?: MutationHookOptions< LlmSpeechSpeakStreamingMutationData, LlmSpeechSpeakStreamingMutationError, LlmSpeechSpeakStreamingMutationVariables >, ): UseMutationResult< LlmSpeechSpeakStreamingMutationData, LlmSpeechSpeakStreamingMutationError, LlmSpeechSpeakStreamingMutationVariables > { const client = useSDKContext(); return useMutation({ ...buildLlmSpeechSpeakStreamingMutation(client, options), ...options, }); } export function mutationKeyLlmSpeechSpeakStreaming(): MutationKey { return ["@meetkai/mka1", "speech", "speakStreaming"]; } export function buildLlmSpeechSpeakStreamingMutation( client$: SDKCore, hookOptions?: RequestOptions & { acceptHeaderOverride?: SpeakStreamingAcceptEnum; }, ): { mutationKey: MutationKey; mutationFn: ( variables: LlmSpeechSpeakStreamingMutationVariables, ) => Promise; } { return { mutationKey: mutationKeyLlmSpeechSpeakStreaming(), mutationFn: function llmSpeechSpeakStreamingMutationFn({ request, options, }): Promise { const mergedOptions = { ...hookOptions, ...options, fetchOptions: { ...hookOptions?.fetchOptions, ...options?.fetchOptions, signal: combineSignals( hookOptions?.fetchOptions?.signal, options?.fetchOptions?.signal, ), }, }; return unwrapAsync(llmSpeechSpeakStreaming( client$, request, mergedOptions, )); }, }; }