import { Talk } from '../types/voice'; import { VoiceEngine } from './VoiceEngine'; /** * MiniMax endpoint types */ export type MinimaxEndpoint = 'global' | 'china'; /** * Available MiniMax TTS models */ export type MinimaxModel = 'speech-2.6-hd' | 'speech-2.6-turbo' | 'speech-2.5-hd-preview' | 'speech-2.5-turbo-preview' | 'speech-02-hd' | 'speech-02-turbo' | 'speech-01-hd' | 'speech-01-turbo'; /** * MiniMax voice speaker information */ export interface MinimaxVoiceSpeaker { voice_id: string; voice_name: string; gender: string; language: string; preview_audio?: string; } /** * MiniMax voice setting override options */ export interface MinimaxVoiceSettingsOptions { speed?: number; vol?: number; pitch?: number; } /** * MiniMax audio format options */ export type MinimaxAudioFormat = 'mp3' | 'wav' | 'aac' | 'pcm' | 'flac' | 'ogg'; /** * MiniMax audio setting override options */ export interface MinimaxAudioSettingsOptions { sampleRate?: number; bitrate?: number; format?: MinimaxAudioFormat; channel?: 1 | 2; } /** * MiniMax TTS voice synthesis engine */ export declare class MinimaxEngine implements VoiceEngine { private groupId?; private model; private defaultVoiceId; private language; private endpoint; private voiceOverrides; private audioOverrides; /** * Set GroupId for MiniMax API * * GroupId is a unique identifier for the user group in MiniMax's system. * Unlike other TTS engines that only require an API key, MiniMax requires both * an API key and a GroupId for authentication and usage tracking. * * This GroupId is used by MiniMax for: * - User group management * - Usage statistics tracking * - Billing and quota management * * You must obtain this pre-generated value from your MiniMax account dashboard. * * @param groupId GroupId for MiniMax API (required for production synthesis) */ setGroupId(groupId: string): void; /** * Set endpoint region for MiniMax API * @param endpoint Endpoint region ('global' or 'china') */ setEndpoint(endpoint: MinimaxEndpoint): void; /** * Set model for MiniMax TTS * Available models: * - speech-2.6-hd: Latest flagship HD model with highest fidelity * - speech-2.6-turbo: Low-latency Turbo model from 2.6 generation * - speech-2.5-hd-preview: Latest high-quality model (preview) * - speech-2.5-turbo-preview: Latest fast model (preview) * - speech-02-hd: High-quality model * - speech-02-turbo: Fast model * - speech-01-hd: Previous generation high-quality model * - speech-01-turbo: Previous generation fast model * @param model Model name */ setModel(model: MinimaxModel): void; /** * Set language boost * @param language Language to boost recognition */ setLanguage(language: string): void; /** * Set voice setting overrides (speed, volume, pitch) * @param settings Voice setting overrides */ setVoiceSettings(settings: MinimaxVoiceSettingsOptions): void; /** * Set speech speed multiplier * @param speed Speed multiplier */ setSpeed(speed?: number): void; /** * Set output volume multiplier * @param vol Volume multiplier */ setVolume(vol?: number): void; /** * Set pitch adjustment in semitones * @param pitch Pitch adjustment */ setPitch(pitch?: number): void; /** * Set audio encoding overrides (sample rate, bitrate, format, channel) * @param settings Audio setting overrides */ setAudioSettings(settings: MinimaxAudioSettingsOptions): void; /** * Set audio sampling rate (Hz) * @param sampleRate Sampling rate */ setSampleRate(sampleRate?: number): void; /** * Set audio bitrate (bps) * @param bitrate Bitrate */ setBitrate(bitrate?: number): void; /** * Set audio output format * @param format Audio format */ setAudioFormat(format?: MinimaxAudioFormat): void; /** * Set audio channel count * @param channel Number of channels */ setAudioChannel(channel?: 1 | 2): void; /** * Alias for setLanguage to emphasize MiniMax terminology * @param language Language boost string */ setLanguageBoost(language: string): void; /** * Get current API endpoint URL based on selected endpoint * @returns API endpoint URL */ private getTtsApiUrl; /** * Get current voice list API endpoint URL based on selected endpoint * @returns Voice list API endpoint URL */ private getVoiceListApiUrl; /** * Get available voice speakers list * Requires only API key * @param apiKey MiniMax API key * @returns Promise */ getVoiceList(apiKey: string): Promise; /** * Build MiniMax voice settings by merging emotion defaults with overrides * @param voiceId Target voice ID * @param defaults Default emotion-based values */ private buildVoiceSetting; /** * Build MiniMax audio settings from overrides */ private buildAudioSetting; /** * Test voice synthesis with minimal requirements * Requires API key and voice ID, but not GroupId * @param text Text to synthesize (shorter text recommended for testing) * @param voiceId Voice ID to test * @param apiKey MiniMax API key * @returns Promise */ testVoice(text: string, voiceId: string, apiKey: string): Promise; /** * Full production audio synthesis * Requires API key, voice ID, and GroupId * @param input Talk object * @param speaker Voice ID * @param apiKey MiniMax API key * @returns Promise */ fetchAudio(input: Talk, speaker: string, apiKey?: string): Promise; /** * Audio synthesis with flexible GroupId requirement * @param input Talk object * @param speaker Voice ID * @param apiKey MiniMax API key * @param requireGroupId Whether to require GroupId (default: true) * @returns Promise */ fetchAudioWithOptions(input: Talk, speaker: string, apiKey?: string, requireGroupId?: boolean): Promise; /** * Check if GroupId is configured * @returns boolean */ hasGroupId(): boolean; /** * Get current endpoint setting * @returns MinimaxEndpoint */ getEndpoint(): MinimaxEndpoint; /** * Set custom API endpoint URL (VoiceEngine interface compatibility) * @param apiUrl custom API endpoint URL */ setApiEndpoint(apiUrl: string): void; /** * Get voice settings based on emotion * @param emotion Emotion type * @returns Voice settings */ private getVoiceSettings; /** * Merge incoming voice overrides into the current override map * Passing undefined removes the override and falls back to defaults * @param settings Voice setting overrides */ private updateVoiceOverrides; /** * Merge incoming audio overrides into the current override map * Passing undefined removes the override and falls back to defaults * @param settings Audio setting overrides */ private updateAudioOverrides; /** * Convert hex string to ArrayBuffer * @param hex Hex string * @returns ArrayBuffer */ private hexToArrayBuffer; getTestMessage(textVoiceText?: string): string; }