import { RequestOptions } from 'openai/core';
import { APIResource } from '../../../resource';
import { MinimaxAPIResponse } from '../../error';

export declare class Speech extends APIResource {
    protected resources: Record<SpeechModel, {
        model: string;
        endpoint: string;
        resposne_type: 'json' | 'binary' | 'stream';
    }>;
    /**
     * Generates audio from the input text.
     *
     * See https://api.minimax.chat/document/guides/T2A-model/tts
     */
    create(params: Speech.SpeechCreateParams, options?: RequestOptions): Promise<Response>;
    create(params: Speech.SpeechCreateParams, options: RequestOptions & {
        __binaryResponse: false;
    }): Promise<Speech.AudioCreateResponse>;
}
export type SpeechModel = Speech.SpeechModel;
export type SpeechCreateParams = Speech.SpeechCreateParams;
export declare namespace Speech {
    type SpeechModel = (string & NonNullable<unknown>) | 'speech-01' | 'speech-01-pro';
    interface SpeechCreateParams {
        /**
         * One of the available [TTS models](https://api.minimax.chat/document/guides/T2A-model/tts)
         */
        model: SpeechModel;
        /**
         * The text to generate audio for.
         */
        input: string;
        /**
         * The voice to use when generating the audio.
         *
         * - 青涩青年音色(male-qn-qingse)
         * - 精英青年音色(male-qn-jingying)
         * - 霸道青年音色(male-qn-badao)
         * - 青年大学生音色(male-qn-daxuesheng)
         * - 少女音色(female-shaonv)
         * - 御姐音色(female-yujie)
         * - 成熟女性音色(female-chengshu)
         * - 甜美女性音色(female-tianmei)
         * - 男性主持人(presenter_male)
         * - 女性主持人(presenter_female)
         * - 男性有声书1(audiobook_male_1)
         * - 男性有声书2(audiobook_male_2)
         * - 女性有声书1(audiobook_female_1)
         * - 女性有声书2(audiobook_female_2)
         * - 青涩青年音色-beta(male-qn-qingse-jingpin)
         * - 精英青年音色-beta(male-qn-jingying-jingpin)
         * - 霸道青年音色-beta(male-qn-badao-jingpin)
         * - 青年大学生音色-beta(male-qn-daxuesheng-jingpin)
         * - 少女音色-beta(female-shaonv-jingpin)
         * - 御姐音色-beta(female-yujie-jingpin)
         * - 成熟女性音色-beta(female-chengshu-jingpin)
         * - 甜美女性音色-beta(female-tianmei-jingpin)
         */
        voice: (string & NonNullable<unknown>) | 'male-qn-qingse' | 'male-qn-jingying' | 'male-qn-badao' | 'male-qn-daxuesheng' | 'female-shaonv' | 'female-yujie' | 'female-chengshu' | 'female-tianmei' | 'presenter_male' | 'presenter_female' | 'audiobook_male_1' | 'audiobook_male_2' | 'audiobook_female_1' | 'audiobook_female_2' | 'male-qn-qingse-jingpin' | 'male-qn-jingying-jingpin' | 'male-qn-badao-jingpin' | 'male-qn-daxuesheng-jingpin' | 'female-shaonv-jingpin' | 'female-yujie-jingpin' | 'female-chengshu-jingpin' | 'female-tianmei-jingpin';
        /**
         * The speed of the generated audio.
         *
         * Range: 0.5 - 2.0
         *
         * @defaultValue 1.0
         */
        speed?: number;
        /**
         * The vol of the generated audio.
         *
         *
         * Range: 0~1
         *
         * @defaultValue 1.0
         */
        vol?: number;
        /**
         * The pitch of the generated audio.
         *
         * Range: 0~1
         *
         * @defaultValue 0
         */
        pitch?: number;
        /**
         * 生成声音的采样率。t2a_pro 可用
         *
         * Range: [16000, 24000]
         *
         * @defaultValue 24000
         */
        audio_sample_rate?: number;
        /**
         * 生成声音的比特率. t2a_pro 可用
         *
         * Range: [32000, 64000，128000]
         *
         * @defaultValue 128000
         */
        bitrate?: number;
        /**
         * The format to audio in. Supported formats are `mp3`, `opus`, `aac`, and `flac`.
         */
        response_format?: 'mp3' | 'opus' | 'aac' | 'flac';
    }
    interface AudioCreateResponse extends MinimaxAPIResponse {
        audio_file: string;
        subtitle_file: string;
        trace_id: string;
        extra_info: {
            audio_length: number;
            audio_sample_rate: number;
            audio_size: number;
            bitrate: number;
            word_count: number;
            invisible_character_ratio: number;
        };
    }
}
