{
  "aboutHtml": "<p>Qwen-Audio-3.0-TTS-Plus는 글로 작성한 텍스트를 표현력 있는 음성으로 바꾸며, Plus 에디션은 합성 품질, 자연스러움, 섬세한 음성 표현에 초점을 맞춥니다. Qwen은 콘텐츠 제작, 오디오북, 영화·동영상 더빙, 전문적인 음성 제작을 주요 용도로 제시합니다. 업데이트된 모델 프로필은 언어 자원이 적은 언어와 중국어 방언의 지원 범위 확대, 방언 표현의 자연스러움 향상, 감정·어조·캐릭터·말하기 속도·음량·스타일에 대한 제어 강화 등을 설명합니다. 제작사는 소음이나 잔향이 있는 음향 환경에서 명료도, 해상도, 견고함도 개선되었다고 보고합니다.</p><p>Plus는 이 텍스트 음성 합성 계열의 품질 중심 에디션이며, Flash는 별도로 실시간 상호작용에 초점을 맞춥니다. 내레이션은 말로 전달할 대본으로 준비하고 대상 청중, 속도, 감정 방향을 지정하세요. 오디오북 문단의 예시 요청은 또렷한 발음, 차분한 속도, 절제된 따뜻함을 사용할 수 있습니다. 동영상 보이스오버에서는 진지한 도입부 뒤에 더 활기찬 설명을 요청할 수 있습니다. 이는 제공한 문구의 전달 방식에 대한 선택입니다. 모델은 음성 합성기이며, 전사 서비스나 완성된 시각적 장면 생성기가 아닙니다.</p><p>Plus의 공식 시스템 음성에는 따뜻하고 공감 어린 목소리로 설명되는 Long An Ling Xin과 밝고 쾌활한 목소리로 설명되는 Long An Lu Feng이 포함됩니다. 두 음성 모두 만다린과 영어 지원 목록에 기재되어 있습니다. 제작사는 이 에디션에 500개가 넘는 기본 음성도 제공하며, 선택하기 전에 평가할 수 있는 미리 듣기가 있습니다. 더 일관된 합성을 위해 시스템 음성을 권장합니다. 정확한 Plus 목록에서 음성을 선택하고 대본 언어를 해당 음성이 지원하는 언어에 맞추세요. Flash 음성은 같은 상위 계열에 속한다는 이유만으로 서로 바꿔 쓸 수 없습니다.</p><p>이 모델은 샘플 기반 음성 복제를 지원합니다. 문서에 명시된 복제 음성 언어는 중국어, 영어, 일본어, 한국어, 러시아어, 프랑스어, 독일어, 포르투갈어, 태국어, 인도네시아어, 베트남어, 스페인어, 이탈리아어, 말레이어, 필리핀어, 아랍어입니다. 중국어 변종에는 만다린, 광둥어, 충칭, 동북 지역, 간쑤, 구이저우, 저장, 허베이, 허난, 후베이, 후난, 장시, 닝보, 닝샤, 칭다오, Shaanxi, Shanxi, 산둥, 상하이어, 쓰촨, 윈난이 포함되며 방언은 지시를 통해 제어합니다. 제작사의 모델 표는 복제와 텍스트 설명을 통한 음성 생성을 구분합니다. Plus는 복제를 지원하지만, 별도의 음성 디자인 모드는 지원하지 않습니다.</p><p>적절한 복제 참조에는 보통 속도의 명확한 음성이 있어야 하며, 음악, 배경 소음, 동시에 말하는 다른 화자, 노래가 없어야 합니다. 제작사는 10–20초를 권장하고 최대 60초를 허용하며, 파일 크기는 10 MB 이하여야 합니다. 참조 형식은 16비트 WAV, MP3, M4A이고 최소 샘플링 주파수는 16 kHz입니다. 최소 5초의 연속된 명확한 음성이 필요하며, 나머지 무음 구간은 2초를 넘지 않는 것이 좋습니다. 스테레오에서는 첫 번째 채널만 처리합니다. 생성된 음성 식별자는 Plus에 연결되며 준비가 완료되면 합성에 사용됩니다. 같은 참조를 Flash에서 재현하려면 별도의 Flash 음성을 생성해야 합니다.</p><p>자연어 지시는 시스템 음성과 복제 음성 모두의 어조, 속도, 감정, 음색을 조절할 수 있습니다. 좋은 목소리라는 모호한 요청 대신 구체적으로 들리는 특징을 설명하세요. 대본 안의 감정 태그는 스타일을 설정하고, 발성 효과 태그는 지정한 위치에 음성 효과를 넣을 수 있습니다. 예를 들어 [serious]는 뒤에 이어지는 전달 방식을 바꾸고, [sighing]은 주변 감정 스타일을 바꾸지 않고 한숨을 넣습니다. 제어 태그는 다음 제어 태그나 자동 문장 분할까지 적용됩니다. 이 태그 기반 기능은 단방향 스트리밍에만 문서화되어 있으므로, 양방향 텍스트 입력에 쓰는 지시와는 범위가 다릅니다.</p><p>제작사의 출력 옵션은 PCM, WAV, MP3, Opus이며, 명시된 샘플링 주파수는 8,000, 16,000, 22,050, 24,000, 44,100, 48,000 Hz입니다. 문서에 기재된 기본값은 MP3와 22,050 Hz입니다. 음량은 0부터 100까지, 속도와 피치는 0.5부터 2.0까지 설정할 수 있습니다. MP3와 Opus는 비트레이트 6부터 510 kbps도 허용합니다. 재생이나 편집에 필요한 표현 형식을 선택하고 긴 작품의 각 구간에서 설정을 일관되게 유지하세요. 스트리밍 출력에는 오디오 프레임과 문장 메타데이터가 포함되며, 복제 음성을 포함한 지원 대상 음성에서는 단어별 타임스탬프를 사용할 수 있습니다.</p><p>문서에 명시된 WebSocket 텍스트 입력 흐름은 메시지당 20,000자, 누적 200,000자를 허용하며 제출 간격은 23초 이하여야 합니다. 완성된 대본이나 순서대로 된 텍스트 구간을 입력받고 입력이 완료되면 마무리할 수 있습니다. 제작사는 현재 합성 턴을 취소하는 기능도 문서화합니다. 이는 해당 프로토콜의 제한과 동작이며, 생성 길이에 대한 보편적인 시간 상한이 아닙니다. 긴 내레이션에서는 대본을 일관된 구간으로 나누고, 생성된 오디오와 함께 순서 및 텍스트를 유지해 일관되게 조립하고 검토할 수 있도록 하세요.</p><p>발음을 위해 제작사는 목표 언어 힌트, 병음 주석, 텍스트 치환을 제공하여 숫자·약어·기호·단어가 원치 않는 방식으로 읽히는 문제를 다룹니다. SSML은 사용 조건이 있는 별도의 마크업 모드입니다. Qwen 문서는 비스트리밍 또는 단방향 스트리밍 호출에서 복제 음성에 SSML을 지원하며, 활성화했을 때는 텍스트를 한 번만 제출합니다. 모든 시스템 음성이나 양방향 스트리밍에 SSML이 적용된다고 명시하는 것은 아닙니다. 실용적인 Plus 작업 흐름은 호환되는 음성과 완성된 대본으로 시작하고, 이후 내레이션할 문단에 구체적인 전달 방식과 발음 선택을 더합니다.</p>",
  "aboutText": "Qwen-Audio-3.0-TTS-Plus는 글로 작성한 텍스트를 표현력 있는 음성으로 바꾸며, Plus 에디션은 합성 품질, 자연스러움, 섬세한 음성 표현에 초점을 맞춥니다. Qwen은 콘텐츠 제작, 오디오북, 영화·동영상 더빙, 전문적인 음성 제작을 주요 용도로 제시합니다. 업데이트된 모델 프로필은 언어 자원이 적은 언어와 중국어 방언의 지원 범위 확대, 방언 표현의 자연스러움 향상, 감정·어조·캐릭터·말하기 속도·음량·스타일에 대한 제어 강화 등을 설명합니다. 제작사는 소음이나 잔향이 있는 음향 환경에서 명료도, 해상도, 견고함도 개선되었다고 보고합니다.\n\nPlus는 이 텍스트 음성 합성 계열의 품질 중심 에디션이며, Flash는 별도로 실시간 상호작용에 초점을 맞춥니다. 내레이션은 말로 전달할 대본으로 준비하고 대상 청중, 속도, 감정 방향을 지정하세요. 오디오북 문단의 예시 요청은 또렷한 발음, 차분한 속도, 절제된 따뜻함을 사용할 수 있습니다. 동영상 보이스오버에서는 진지한 도입부 뒤에 더 활기찬 설명을 요청할 수 있습니다. 이는 제공한 문구의 전달 방식에 대한 선택입니다. 모델은 음성 합성기이며, 전사 서비스나 완성된 시각적 장면 생성기가 아닙니다.\n\nPlus의 공식 시스템 음성에는 따뜻하고 공감 어린 목소리로 설명되는 Long An Ling Xin과 밝고 쾌활한 목소리로 설명되는 Long An Lu Feng이 포함됩니다. 두 음성 모두 만다린과 영어 지원 목록에 기재되어 있습니다. 제작사는 이 에디션에 500개가 넘는 기본 음성도 제공하며, 선택하기 전에 평가할 수 있는 미리 듣기가 있습니다. 더 일관된 합성을 위해 시스템 음성을 권장합니다. 정확한 Plus 목록에서 음성을 선택하고 대본 언어를 해당 음성이 지원하는 언어에 맞추세요. Flash 음성은 같은 상위 계열에 속한다는 이유만으로 서로 바꿔 쓸 수 없습니다.\n\n이 모델은 샘플 기반 음성 복제를 지원합니다. 문서에 명시된 복제 음성 언어는 중국어, 영어, 일본어, 한국어, 러시아어, 프랑스어, 독일어, 포르투갈어, 태국어, 인도네시아어, 베트남어, 스페인어, 이탈리아어, 말레이어, 필리핀어, 아랍어입니다. 중국어 변종에는 만다린, 광둥어, 충칭, 동북 지역, 간쑤, 구이저우, 저장, 허베이, 허난, 후베이, 후난, 장시, 닝보, 닝샤, 칭다오, Shaanxi, Shanxi, 산둥, 상하이어, 쓰촨, 윈난이 포함되며 방언은 지시를 통해 제어합니다. 제작사의 모델 표는 복제와 텍스트 설명을 통한 음성 생성을 구분합니다. Plus는 복제를 지원하지만, 별도의 음성 디자인 모드는 지원하지 않습니다.\n\n적절한 복제 참조에는 보통 속도의 명확한 음성이 있어야 하며, 음악, 배경 소음, 동시에 말하는 다른 화자, 노래가 없어야 합니다. 제작사는 10–20초를 권장하고 최대 60초를 허용하며, 파일 크기는 10 MB 이하여야 합니다. 참조 형식은 16비트 WAV, MP3, M4A이고 최소 샘플링 주파수는 16 kHz입니다. 최소 5초의 연속된 명확한 음성이 필요하며, 나머지 무음 구간은 2초를 넘지 않는 것이 좋습니다. 스테레오에서는 첫 번째 채널만 처리합니다. 생성된 음성 식별자는 Plus에 연결되며 준비가 완료되면 합성에 사용됩니다. 같은 참조를 Flash에서 재현하려면 별도의 Flash 음성을 생성해야 합니다.\n\n자연어 지시는 시스템 음성과 복제 음성 모두의 어조, 속도, 감정, 음색을 조절할 수 있습니다. 좋은 목소리라는 모호한 요청 대신 구체적으로 들리는 특징을 설명하세요. 대본 안의 감정 태그는 스타일을 설정하고, 발성 효과 태그는 지정한 위치에 음성 효과를 넣을 수 있습니다. 예를 들어 [serious]는 뒤에 이어지는 전달 방식을 바꾸고, [sighing]은 주변 감정 스타일을 바꾸지 않고 한숨을 넣습니다. 제어 태그는 다음 제어 태그나 자동 문장 분할까지 적용됩니다. 이 태그 기반 기능은 단방향 스트리밍에만 문서화되어 있으므로, 양방향 텍스트 입력에 쓰는 지시와는 범위가 다릅니다.\n\n제작사의 출력 옵션은 PCM, WAV, MP3, Opus이며, 명시된 샘플링 주파수는 8,000, 16,000, 22,050, 24,000, 44,100, 48,000 Hz입니다. 문서에 기재된 기본값은 MP3와 22,050 Hz입니다. 음량은 0부터 100까지, 속도와 피치는 0.5부터 2.0까지 설정할 수 있습니다. MP3와 Opus는 비트레이트 6부터 510 kbps도 허용합니다. 재생이나 편집에 필요한 표현 형식을 선택하고 긴 작품의 각 구간에서 설정을 일관되게 유지하세요. 스트리밍 출력에는 오디오 프레임과 문장 메타데이터가 포함되며, 복제 음성을 포함한 지원 대상 음성에서는 단어별 타임스탬프를 사용할 수 있습니다.\n\n문서에 명시된 WebSocket 텍스트 입력 흐름은 메시지당 20,000자, 누적 200,000자를 허용하며 제출 간격은 23초 이하여야 합니다. 완성된 대본이나 순서대로 된 텍스트 구간을 입력받고 입력이 완료되면 마무리할 수 있습니다. 제작사는 현재 합성 턴을 취소하는 기능도 문서화합니다. 이는 해당 프로토콜의 제한과 동작이며, 생성 길이에 대한 보편적인 시간 상한이 아닙니다. 긴 내레이션에서는 대본을 일관된 구간으로 나누고, 생성된 오디오와 함께 순서 및 텍스트를 유지해 일관되게 조립하고 검토할 수 있도록 하세요.\n\n발음을 위해 제작사는 목표 언어 힌트, 병음 주석, 텍스트 치환을 제공하여 숫자·약어·기호·단어가 원치 않는 방식으로 읽히는 문제를 다룹니다. SSML은 사용 조건이 있는 별도의 마크업 모드입니다. Qwen 문서는 비스트리밍 또는 단방향 스트리밍 호출에서 복제 음성에 SSML을 지원하며, 활성화했을 때는 텍스트를 한 번만 제출합니다. 모든 시스템 음성이나 양방향 스트리밍에 SSML이 적용된다고 명시하는 것은 아닙니다. 실용적인 Plus 작업 흐름은 호환되는 음성과 완성된 대본으로 시작하고, 이후 내레이션할 문단에 구체적인 전달 방식과 발음 선택을 더합니다.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "8123cabbf82b23c4d3bc51ea74fa5ea24e280f39bd97c4c8e0f325530f493717",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ko",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">Al</span><h2 id=\"sheet-title\">Qwen: Qwen-Audio-3.0-TTS Plus</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>Alibaba /</span><code>qwen/qwen-audio-3.0-tts-plus</code><button type=\"button\" id=\"copy-id\">ID 복사</button></div><nav class=\"card-jump-nav\" aria-label=\"모델 카드 섹션\"><button type=\"button\" data-card-jump=\"overview\">시작하기</button><button type=\"button\" data-card-jump=\"methods\">입력 및 메서드</button><button type=\"button\" data-card-jump=\"pricing\">요금</button><button type=\"button\" data-card-jump=\"examples\">예제</button><button type=\"button\" data-card-jump=\"results\">결과</button><button type=\"button\" data-card-jump=\"aliases\">별칭</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API 메서드\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|speech|/v1/audio/speech|qwen%2Fqwen-audio-3.0-tts-plus\">음성 합성</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">시작하기</h3><p class=\"mdesc-full\">Qwen-Audio-3.0-TTS-Plus는 내레이션, 오디오북, 더빙을 위한 섬세하고 자연스러우며 표현력 있는 오디오에 초점을 맞춘 Qwen의 텍스트 음성 합성 모델입니다. 모델별 사전 설정 음성이나 복제 음성, 스트리밍 출력, 표현을 조절하는 지시나 태그를 지원합니다.</p><dl class=\"card-io\" data-card-io><div><dt>허용 입력</dt><dd>텍스트</dd></div><div><dt>결과</dt><dd>오디오</dd></div></dl><details class=\"card-about\"><summary>모델 소개</summary><p class=\"note-s\" data-model-method-boundary>이 설명은 모델의 기능을 다룹니다. Ailoot에서 사용할 수 있는 입력, 출력 및 옵션은 아래에 선택한 메서드별로 표시됩니다.</p><div class=\"mabout\" id=\"m-about\"><p>Qwen-Audio-3.0-TTS-Plus는 글로 작성한 텍스트를 표현력 있는 음성으로 바꾸며, Plus 에디션은 합성 품질, 자연스러움, 섬세한 음성 표현에 초점을 맞춥니다. Qwen은 콘텐츠 제작, 오디오북, 영화·동영상 더빙, 전문적인 음성 제작을 주요 용도로 제시합니다. 업데이트된 모델 프로필은 언어 자원이 적은 언어와 중국어 방언의 지원 범위 확대, 방언 표현의 자연스러움 향상, 감정·어조·캐릭터·말하기 속도·음량·스타일에 대한 제어 강화 등을 설명합니다. 제작사는 소음이나 잔향이 있는 음향 환경에서 명료도, 해상도, 견고함도 개선되었다고 보고합니다.</p><p>Plus는 이 텍스트 음성 합성 계열의 품질 중심 에디션이며, Flash는 별도로 실시간 상호작용에 초점을 맞춥니다. 내레이션은 말로 전달할 대본으로 준비하고 대상 청중, 속도, 감정 방향을 지정하세요. 오디오북 문단의 예시 요청은 또렷한 발음, 차분한 속도, 절제된 따뜻함을 사용할 수 있습니다. 동영상 보이스오버에서는 진지한 도입부 뒤에 더 활기찬 설명을 요청할 수 있습니다. 이는 제공한 문구의 전달 방식에 대한 선택입니다. 모델은 음성 합성기이며, 전사 서비스나 완성된 시각적 장면 생성기가 아닙니다.</p><p>Plus의 공식 시스템 음성에는 따뜻하고 공감 어린 목소리로 설명되는 Long An Ling Xin과 밝고 쾌활한 목소리로 설명되는 Long An Lu Feng이 포함됩니다. 두 음성 모두 만다린과 영어 지원 목록에 기재되어 있습니다. 제작사는 이 에디션에 500개가 넘는 기본 음성도 제공하며, 선택하기 전에 평가할 수 있는 미리 듣기가 있습니다. 더 일관된 합성을 위해 시스템 음성을 권장합니다. 정확한 Plus 목록에서 음성을 선택하고 대본 언어를 해당 음성이 지원하는 언어에 맞추세요. Flash 음성은 같은 상위 계열에 속한다는 이유만으로 서로 바꿔 쓸 수 없습니다.</p><p>이 모델은 샘플 기반 음성 복제를 지원합니다. 문서에 명시된 복제 음성 언어는 중국어, 영어, 일본어, 한국어, 러시아어, 프랑스어, 독일어, 포르투갈어, 태국어, 인도네시아어, 베트남어, 스페인어, 이탈리아어, 말레이어, 필리핀어, 아랍어입니다. 중국어 변종에는 만다린, 광둥어, 충칭, 동북 지역, 간쑤, 구이저우, 저장, 허베이, 허난, 후베이, 후난, 장시, 닝보, 닝샤, 칭다오, Shaanxi, Shanxi, 산둥, 상하이어, 쓰촨, 윈난이 포함되며 방언은 지시를 통해 제어합니다. 제작사의 모델 표는 복제와 텍스트 설명을 통한 음성 생성을 구분합니다. Plus는 복제를 지원하지만, 별도의 음성 디자인 모드는 지원하지 않습니다.</p><p>적절한 복제 참조에는 보통 속도의 명확한 음성이 있어야 하며, 음악, 배경 소음, 동시에 말하는 다른 화자, 노래가 없어야 합니다. 제작사는 10–20초를 권장하고 최대 60초를 허용하며, 파일 크기는 10 MB 이하여야 합니다. 참조 형식은 16비트 WAV, MP3, M4A이고 최소 샘플링 주파수는 16 kHz입니다. 최소 5초의 연속된 명확한 음성이 필요하며, 나머지 무음 구간은 2초를 넘지 않는 것이 좋습니다. 스테레오에서는 첫 번째 채널만 처리합니다. 생성된 음성 식별자는 Plus에 연결되며 준비가 완료되면 합성에 사용됩니다. 같은 참조를 Flash에서 재현하려면 별도의 Flash 음성을 생성해야 합니다.</p><p>자연어 지시는 시스템 음성과 복제 음성 모두의 어조, 속도, 감정, 음색을 조절할 수 있습니다. 좋은 목소리라는 모호한 요청 대신 구체적으로 들리는 특징을 설명하세요. 대본 안의 감정 태그는 스타일을 설정하고, 발성 효과 태그는 지정한 위치에 음성 효과를 넣을 수 있습니다. 예를 들어 [serious]는 뒤에 이어지는 전달 방식을 바꾸고, [sighing]은 주변 감정 스타일을 바꾸지 않고 한숨을 넣습니다. 제어 태그는 다음 제어 태그나 자동 문장 분할까지 적용됩니다. 이 태그 기반 기능은 단방향 스트리밍에만 문서화되어 있으므로, 양방향 텍스트 입력에 쓰는 지시와는 범위가 다릅니다.</p><p>제작사의 출력 옵션은 PCM, WAV, MP3, Opus이며, 명시된 샘플링 주파수는 8,000, 16,000, 22,050, 24,000, 44,100, 48,000 Hz입니다. 문서에 기재된 기본값은 MP3와 22,050 Hz입니다. 음량은 0부터 100까지, 속도와 피치는 0.5부터 2.0까지 설정할 수 있습니다. MP3와 Opus는 비트레이트 6부터 510 kbps도 허용합니다. 재생이나 편집에 필요한 표현 형식을 선택하고 긴 작품의 각 구간에서 설정을 일관되게 유지하세요. 스트리밍 출력에는 오디오 프레임과 문장 메타데이터가 포함되며, 복제 음성을 포함한 지원 대상 음성에서는 단어별 타임스탬프를 사용할 수 있습니다.</p><p>문서에 명시된 WebSocket 텍스트 입력 흐름은 메시지당 20,000자, 누적 200,000자를 허용하며 제출 간격은 23초 이하여야 합니다. 완성된 대본이나 순서대로 된 텍스트 구간을 입력받고 입력이 완료되면 마무리할 수 있습니다. 제작사는 현재 합성 턴을 취소하는 기능도 문서화합니다. 이는 해당 프로토콜의 제한과 동작이며, 생성 길이에 대한 보편적인 시간 상한이 아닙니다. 긴 내레이션에서는 대본을 일관된 구간으로 나누고, 생성된 오디오와 함께 순서 및 텍스트를 유지해 일관되게 조립하고 검토할 수 있도록 하세요.</p><p>발음을 위해 제작사는 목표 언어 힌트, 병음 주석, 텍스트 치환을 제공하여 숫자·약어·기호·단어가 원치 않는 방식으로 읽히는 문제를 다룹니다. SSML은 사용 조건이 있는 별도의 마크업 모드입니다. Qwen 문서는 비스트리밍 또는 단방향 스트리밍 호출에서 복제 음성에 SSML을 지원하며, 활성화했을 때는 텍스트를 한 번만 제출합니다. 모든 시스템 음성이나 양방향 스트리밍에 SSML이 적용된다고 명시하는 것은 아닙니다. 실용적인 Plus 작업 흐름은 호환되는 음성과 완성된 대본으로 시작하고, 이후 내레이션할 문단에 구체적인 전달 방식과 발음 선택을 더합니다.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Ailoot에서 사용 가능 · 입력 및 메서드</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · 음성 합성</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>입력</dt><dd><code>text</code></dd></div><div><dt>출력</dt><dd><code>audio</code></dd></div><div><dt>출력 형식</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>필드</th><th>유형</th><th>요건</th><th>값과 한도</th><th>기본값</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>qwen/qwen-audio-3.0-tts-plus</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>최소 길이: 1</div><div>단위: Unicode 문자</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>longanlingxin, longanlufeng</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>mp3</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>입력 자료 조합</summary><p class=\"note-s\"><b>text_to_speech</b> · 필수: input</p></details><details class=\"note-s\" data-method-contract><summary>메서드 매개변수와 수명 주기</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>매개변수</th><th>명세</th></tr></thead><tbody><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>content_type</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>application/json</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>required</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>model, input, voice, response_format</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>voice_ids</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>longanlingxin, longanlufeng</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>response_format</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>mp3</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>max_input_characters</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>null</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>other_options</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>false</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>input</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>정확한 UTF-8 텍스트; 정규화 없이 계산한 유니코드 문자 수</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>material_types</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>text</td></tr></tbody></table></div><p>수명 주기: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · 실제로 반환된 task_id 또는 미디어 라이브러리 기록</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">이 모델 프로필에 있는 정확한 음성을 선택하세요.</p><p class=\"note-s\">입력 문자 수와 오디오 초는 서로 다른 측정 단위입니다.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">요금</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.</p><dl data-price-conditions><dt>빠른 모드</dt><dd>미지정 <span class=\"note-s\">빠른 모드를 선택한 경우</span></dd><dt>Flex 모드</dt><dd>미지정 <span class=\"note-s\">flex 모드를 선택한 경우</span></dd><dt>최대 추론 수준</dt><dd>미지정 <span class=\"note-s\">최대 추론 수준에 default 조정값을 적용하는 경우</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot 요금</h4><h4>설정별 가격</h4><p class=\"note-s\">각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>설정</th><th>요금표</th><th>과금 대상 수량</th><th>과금 단위</th><th>요금</th></tr></thead><tbody><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>기본 토큰 요금</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>기본 요금</td><td data-cell-label=\"과금 대상 수량\"><span class=\"card-cell-label\">과금 대상 수량</span>—</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>—</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>입력 · 입력 토큰</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>출력 · 출력 토큰</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 읽기</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 쓰기</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 쓰기, 1시간</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div></td></tr><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>Ultra</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>—</td><td data-cell-label=\"과금 대상 수량\"><span class=\"card-cell-label\">과금 대상 수량</span>한자를 포함해 Unicode 코드 포인트 하나를 문자 하나로 계산합니다.</td><td data-cell-label=\"과금 단위\"><span class=\"card-cell-label\">과금 단위</span>입력 문자 1K개당</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>입력 · 입력 문자</span> <b>$0.04</b> <span class=\"price-unit\">입력 문자 1K개당</span></div></td></tr></tbody></table></div></div><div data-declared-reference-pricing><h4>참조 요금 상세 정보</h4><p class=\"note-s\">모델 수준의 참조 요금표는 메서드 선택, 견적 또는 요금을 변경하지 않습니다. 실제 과금에는 선택한 Ailoot 메서드 요금이 적용됩니다.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Qwen: Qwen-Audio-3.0-TTS Plus</summary><h4>설정별 가격</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>설정</th><th>과금 조건</th><th>요금</th></tr></thead><tbody><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>Qwen: Qwen-Audio-3.0-TTS Plus · 기본 설정</th><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>기본 설정</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>입력 · 입력 문자 수</span> <b>US$0.00004</b> <span class=\"price-unit\">입력 문자당</span></div></td></tr></tbody></table></div></details></div><p class=\"note-s\">Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. <a href=\"/docs/ko/billing/reserve/\">금액 확보와 정산 방식 →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">요청 예제</h3><h4>Ailoot Ultra · 음성 합성</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"코드 예제 형식\"><button class=\"cg-tab\" id=\"model-code-2362-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2362-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"코드 복사\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2362-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2362-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}&quot;\nexport AILOOT_VOICE_ID\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;qwen/qwen-audio-3.0-tts-plus&quot;, &quot;input&quot;: &quot;Good afternoon! This is a short voice take.&quot;}&#39;)\nvoice=os.environ[&quot;AILOOT_VOICE_ID&quot;]\nallowed=json.loads(&#39;[&quot;longanlingxin&quot;, &quot;longanlufeng&quot;]&#39;)\nif voice not in allowed: raise SystemExit(&quot;Choose an accepted voice ID from this exact model profile&quot;)\np[&quot;voice&quot;]=voice\np[&quot;response_format&quot;]=&quot;mp3&quot;\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">결과 수신 및 저장</h3><h4>Ailoot Ultra · 음성 합성</h4><p class=\"note-s\">mp3</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><details class=\"card-about\"><summary>기타 콘텐츠 조회</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"코드 예제 형식\"><button class=\"cg-tab\" id=\"model-code-2363-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2363-panel-0\" aria-selected=\"true\" tabindex=\"0\">미디어 라이브러리</button><button class=\"cg-tab\" id=\"model-code-2363-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2363-panel-1\" aria-selected=\"false\" tabindex=\"-1\">작업 상태</button><button class=\"cg-tab\" id=\"model-code-2363-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2363-panel-2\" aria-selected=\"false\" tabindex=\"-1\">자산 세부 정보</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"코드 복사\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2363-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2363-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-assets.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2363-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2363-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_MEDIA_TASK_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/tasks/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-task.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-task.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2363-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2363-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_ASSET_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/assets/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-asset.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-asset.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>완료된 결과 모두 보관</h5><p class=\"note-s\">반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.</p><p class=\"note-s\">바이너리 결과 전체와 헤더를 보관하세요. JSON 또는 여러 출력이 반환되면 모든 데이터 항목을 보관하고 실제로 반환된 서명된 자산 URL을 각각 조회하세요.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>원래 응답을 확인해야 할 경우</h5><p class=\"note-s\">다시 제출하지 말고 정산 대조를 위해 최초 operation_id/X-Client-Request-ID를 보관하세요. 전용 오디오 폴링 라우트는 없습니다.</p></div><details class=\"card-about\" data-output-fields><summary>응답 필드</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>필드</th><th>유형</th></tr></thead><tbody><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>bytes</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>오류와 다음 단계</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>응답</th><th>조건</th><th>다음 단계</th></tr></thead><tbody><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>새 생성 요청 전에 표시된 필드를 수정하세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span><code>server_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>반환된 응답에 작업 또는 결과 확인이 필요하다고 표시되어 있습니다</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>최초로 반환된 작업/태스크 ID, 요청 헤더와 응답을 보관하고, 지원되는 조회 방식으로 해당 최초 작업을 계속 조회하세요. 생성 요청을 다시 제출하지 마세요.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">별칭</h3><h4>모델 별칭</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=qwen%2Fqwen-audio-3.0-tts-plus&amp;route=Ultra&amp;caller=qwen%2Fqwen-audio-3.0-tts-plus&amp;fmt=speech\"><code>qwen/qwen-audio-3.0-tts-plus</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\">위에 표시된 메서드 경로를 사용하세요.</p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=qwen%2Fqwen-audio-3.0-tts-plus&amp;route=Ultra&amp;caller=qwen%2Fqwen-audio-3.0-tts-plus&amp;fmt=speech\"><code>qwen/qwen-audio-3.0-tts-plus</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|qwen%2Fqwen-audio-3.0-tts-plus",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음",
                "http_status": 400,
                "recovery": "새 생성 요청 전에 표시된 필드를 수정하세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "반환된 응답에 작업 또는 결과 확인이 필요하다고 표시되어 있습니다",
                "http_status": null,
                "recovery": "최초로 반환된 작업/태스크 ID, 요청 헤더와 응답을 보관하고, 지원되는 조회 방식으로 해당 최초 작업을 계속 조회하세요. 생성 요청을 다시 제출하지 마세요.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "다시 제출하지 말고 정산 대조를 위해 최초 operation_id/X-Client-Request-ID를 보관하세요. 전용 오디오 폴링 라우트는 없습니다."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "바이너리 결과 전체와 헤더를 보관하세요. JSON 또는 여러 출력이 반환되면 모든 데이터 항목을 보관하고 실제로 반환된 서명된 자산 URL을 각각 조회하세요.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "qwen/qwen-audio-3.0-tts-plus"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": false,
                "maximum_length": null,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "Unicode 문자"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "longanlingxin",
                  "longanlufeng"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "이 모델 프로필에 있는 정확한 음성을 선택하세요.",
            "입력 문자 수와 오디오 초는 서로 다른 측정 단위입니다."
          ],
          "input": {
            "content_type": "application/json",
            "input": "정확한 UTF-8 텍스트; 정규화 없이 계산한 유니코드 문자 수",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "longanlingxin",
              "longanlufeng"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "실제로 반환된 task_id 또는 미디어 라이브러리 기록",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00004",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "f97459395132c904c87d",
            "label": "Qwen: Qwen-Audio-3.0-TTS Plus",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "기본 설정"
                },
                "label": "Qwen: Qwen-Audio-3.0-TTS Plus · 기본 설정",
                "units": [
                  {
                    "amount": "0.00004",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "c9d83494b95201f9ee8ab13d",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"qwen/qwen-audio-3.0-tts-plus\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"longanlingxin\", \"longanlufeng\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "curl",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_character": 4e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00004",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.04000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00004",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    }
  ],
  "model_id": "qwen/qwen-audio-3.0-tts-plus",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "303688f76549b6997901a0f264a58942749df8b2507ade790c8a1d14bb1804d1",
    "input_html_sha256": "48cd65cb5550d8a3893176a81bb1b7d0d916cfda7e1bb0c32ce0e6aa22824f44",
    "private_audit_sha256": "3d505e7673e5e795dabf36aa988631c205ca2a2b80f12dad019cacf11be0d05f",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/qwen-qwen-audio-3-0-tts-plus/",
    "description": "Qwen-Audio-3.0-TTS-Plus는 내레이션, 오디오북, 더빙을 위한 섬세하고 자연스러우며 표현력 있는 오디오에 초점을 맞춘 Qwen의 텍스트 음성 합성 모델입니다. 모델별 사전 설정 음성이나 복제 음성, 스트리밍 출력, 표현을 조절하는 지시나 태그를 지원합니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/qwen-qwen-audio-3-0-tts-plus/index.md",
    "title": "Qwen: Qwen-Audio-3.0-TTS Plus — Ailoot",
    "url": "https://ailoot.ai/models/ko/qwen-qwen-audio-3-0-tts-plus/"
  },
  "rawModel": {
    "about": "Qwen-Audio-3.0-TTS-Plus는 글로 작성한 텍스트를 표현력 있는 음성으로 바꾸며, Plus 에디션은 합성 품질, 자연스러움, 섬세한 음성 표현에 초점을 맞춥니다. Qwen은 콘텐츠 제작, 오디오북, 영화·동영상 더빙, 전문적인 음성 제작을 주요 용도로 제시합니다. 업데이트된 모델 프로필은 언어 자원이 적은 언어와 중국어 방언의 지원 범위 확대, 방언 표현의 자연스러움 향상, 감정·어조·캐릭터·말하기 속도·음량·스타일에 대한 제어 강화 등을 설명합니다. 제작사는 소음이나 잔향이 있는 음향 환경에서 명료도, 해상도, 견고함도 개선되었다고 보고합니다.\n\nPlus는 이 텍스트 음성 합성 계열의 품질 중심 에디션이며, Flash는 별도로 실시간 상호작용에 초점을 맞춥니다. 내레이션은 말로 전달할 대본으로 준비하고 대상 청중, 속도, 감정 방향을 지정하세요. 오디오북 문단의 예시 요청은 또렷한 발음, 차분한 속도, 절제된 따뜻함을 사용할 수 있습니다. 동영상 보이스오버에서는 진지한 도입부 뒤에 더 활기찬 설명을 요청할 수 있습니다. 이는 제공한 문구의 전달 방식에 대한 선택입니다. 모델은 음성 합성기이며, 전사 서비스나 완성된 시각적 장면 생성기가 아닙니다.\n\nPlus의 공식 시스템 음성에는 따뜻하고 공감 어린 목소리로 설명되는 Long An Ling Xin과 밝고 쾌활한 목소리로 설명되는 Long An Lu Feng이 포함됩니다. 두 음성 모두 만다린과 영어 지원 목록에 기재되어 있습니다. 제작사는 이 에디션에 500개가 넘는 기본 음성도 제공하며, 선택하기 전에 평가할 수 있는 미리 듣기가 있습니다. 더 일관된 합성을 위해 시스템 음성을 권장합니다. 정확한 Plus 목록에서 음성을 선택하고 대본 언어를 해당 음성이 지원하는 언어에 맞추세요. Flash 음성은 같은 상위 계열에 속한다는 이유만으로 서로 바꿔 쓸 수 없습니다.\n\n이 모델은 샘플 기반 음성 복제를 지원합니다. 문서에 명시된 복제 음성 언어는 중국어, 영어, 일본어, 한국어, 러시아어, 프랑스어, 독일어, 포르투갈어, 태국어, 인도네시아어, 베트남어, 스페인어, 이탈리아어, 말레이어, 필리핀어, 아랍어입니다. 중국어 변종에는 만다린, 광둥어, 충칭, 동북 지역, 간쑤, 구이저우, 저장, 허베이, 허난, 후베이, 후난, 장시, 닝보, 닝샤, 칭다오, Shaanxi, Shanxi, 산둥, 상하이어, 쓰촨, 윈난이 포함되며 방언은 지시를 통해 제어합니다. 제작사의 모델 표는 복제와 텍스트 설명을 통한 음성 생성을 구분합니다. Plus는 복제를 지원하지만, 별도의 음성 디자인 모드는 지원하지 않습니다.\n\n적절한 복제 참조에는 보통 속도의 명확한 음성이 있어야 하며, 음악, 배경 소음, 동시에 말하는 다른 화자, 노래가 없어야 합니다. 제작사는 10–20초를 권장하고 최대 60초를 허용하며, 파일 크기는 10 MB 이하여야 합니다. 참조 형식은 16비트 WAV, MP3, M4A이고 최소 샘플링 주파수는 16 kHz입니다. 최소 5초의 연속된 명확한 음성이 필요하며, 나머지 무음 구간은 2초를 넘지 않는 것이 좋습니다. 스테레오에서는 첫 번째 채널만 처리합니다. 생성된 음성 식별자는 Plus에 연결되며 준비가 완료되면 합성에 사용됩니다. 같은 참조를 Flash에서 재현하려면 별도의 Flash 음성을 생성해야 합니다.\n\n자연어 지시는 시스템 음성과 복제 음성 모두의 어조, 속도, 감정, 음색을 조절할 수 있습니다. 좋은 목소리라는 모호한 요청 대신 구체적으로 들리는 특징을 설명하세요. 대본 안의 감정 태그는 스타일을 설정하고, 발성 효과 태그는 지정한 위치에 음성 효과를 넣을 수 있습니다. 예를 들어 [serious]는 뒤에 이어지는 전달 방식을 바꾸고, [sighing]은 주변 감정 스타일을 바꾸지 않고 한숨을 넣습니다. 제어 태그는 다음 제어 태그나 자동 문장 분할까지 적용됩니다. 이 태그 기반 기능은 단방향 스트리밍에만 문서화되어 있으므로, 양방향 텍스트 입력에 쓰는 지시와는 범위가 다릅니다.\n\n제작사의 출력 옵션은 PCM, WAV, MP3, Opus이며, 명시된 샘플링 주파수는 8,000, 16,000, 22,050, 24,000, 44,100, 48,000 Hz입니다. 문서에 기재된 기본값은 MP3와 22,050 Hz입니다. 음량은 0부터 100까지, 속도와 피치는 0.5부터 2.0까지 설정할 수 있습니다. MP3와 Opus는 비트레이트 6부터 510 kbps도 허용합니다. 재생이나 편집에 필요한 표현 형식을 선택하고 긴 작품의 각 구간에서 설정을 일관되게 유지하세요. 스트리밍 출력에는 오디오 프레임과 문장 메타데이터가 포함되며, 복제 음성을 포함한 지원 대상 음성에서는 단어별 타임스탬프를 사용할 수 있습니다.\n\n문서에 명시된 WebSocket 텍스트 입력 흐름은 메시지당 20,000자, 누적 200,000자를 허용하며 제출 간격은 23초 이하여야 합니다. 완성된 대본이나 순서대로 된 텍스트 구간을 입력받고 입력이 완료되면 마무리할 수 있습니다. 제작사는 현재 합성 턴을 취소하는 기능도 문서화합니다. 이는 해당 프로토콜의 제한과 동작이며, 생성 길이에 대한 보편적인 시간 상한이 아닙니다. 긴 내레이션에서는 대본을 일관된 구간으로 나누고, 생성된 오디오와 함께 순서 및 텍스트를 유지해 일관되게 조립하고 검토할 수 있도록 하세요.\n\n발음을 위해 제작사는 목표 언어 힌트, 병음 주석, 텍스트 치환을 제공하여 숫자·약어·기호·단어가 원치 않는 방식으로 읽히는 문제를 다룹니다. SSML은 사용 조건이 있는 별도의 마크업 모드입니다. Qwen 문서는 비스트리밍 또는 단방향 스트리밍 호출에서 복제 음성에 SSML을 지원하며, 활성화했을 때는 텍스트를 한 번만 제출합니다. 모든 시스템 음성이나 양방향 스트리밍에 SSML이 적용된다고 명시하는 것은 아닙니다. 실용적인 Plus 작업 흐름은 호환되는 음성과 완성된 대본으로 시작하고, 이후 내레이션할 문단에 구체적인 전달 방식과 발음 선택을 더합니다.",
    "alias_of": null,
    "aliases": [],
    "author": "Alibaba",
    "available": null,
    "canonical_model": "qwen/qwen-audio-3.0-tts-plus",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.04000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00004",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ],
        "summary": "구성의 전체 요금 정보는 상세 정보에서 확인할 수 있습니다."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "qwen/qwen-audio-3.0-tts-plus",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음",
                "http_status": 400,
                "recovery": "새 생성 요청 전에 표시된 필드를 수정하세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "반환된 응답에 작업 또는 결과 확인이 필요하다고 표시되어 있습니다",
                "http_status": null,
                "recovery": "최초로 반환된 작업/태스크 ID, 요청 헤더와 응답을 보관하고, 지원되는 조회 방식으로 해당 최초 작업을 계속 조회하세요. 생성 요청을 다시 제출하지 마세요.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "다시 제출하지 말고 정산 대조를 위해 최초 operation_id/X-Client-Request-ID를 보관하세요. 전용 오디오 폴링 라우트는 없습니다."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "바이너리 결과 전체와 헤더를 보관하세요. JSON 또는 여러 출력이 반환되면 모든 데이터 항목을 보관하고 실제로 반환된 서명된 자산 URL을 각각 조회하세요.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "qwen/qwen-audio-3.0-tts-plus"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": false,
                "maximum_length": null,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "Unicode 문자"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "longanlingxin",
                  "longanlufeng"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "이 모델 프로필에 있는 정확한 음성을 선택하세요.",
            "입력 문자 수와 오디오 초는 서로 다른 측정 단위입니다."
          ],
          "input": {
            "content_type": "application/json",
            "input": "정확한 UTF-8 텍스트; 정규화 없이 계산한 유니코드 문자 수",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "longanlingxin",
              "longanlufeng"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "실제로 반환된 task_id 또는 미디어 라이브러리 기록",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00004",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "f97459395132c904c87d",
            "label": "Qwen: Qwen-Audio-3.0-TTS Plus",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "기본 설정"
                },
                "label": "Qwen: Qwen-Audio-3.0-TTS Plus · 기본 설정",
                "units": [
                  {
                    "amount": "0.00004",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "c9d83494b95201f9ee8ab13d",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"qwen/qwen-audio-3.0-tts-plus\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"longanlingxin\", \"longanlufeng\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "curl",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_character": 4e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00004",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.04000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00004",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "route_label": "Ultra"
      }
    ],
    "name": "Qwen: Qwen-Audio-3.0-TTS Plus",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "qwen-audio-3.0-tts-plus",
          "Service deployment scope": "International",
          "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
          "maker_published_model_id": "qwen-audio-3.0-tts-plus"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.00004",
            "amount_unit": "usd_per_input_character",
            "conditions": {
              "Model ID": "qwen-audio-3.0-tts-plus",
              "Service deployment scope": "International",
              "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
              "maker_published_model_id": "qwen-audio-3.0-tts-plus"
            },
            "key": "input_character",
            "label": "input character",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "qwen-audio-3.0-tts-plus",
          "Service deployment scope": "Mainland China",
          "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
          "maker_published_model_id": "qwen-audio-3.0-tts-plus"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000038506",
            "amount_unit": "usd_per_input_character",
            "conditions": {
              "Model ID": "qwen-audio-3.0-tts-plus",
              "Service deployment scope": "Mainland China",
              "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
              "maker_published_model_id": "qwen-audio-3.0-tts-plus"
            },
            "key": "input_character",
            "label": "input character",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    ],
    "public_id": "qwen/qwen-audio-3.0-tts-plus",
    "short": "Qwen-Audio-3.0-TTS-Plus는 내레이션, 오디오북, 더빙을 위한 섬세하고 자연스러우며 표현력 있는 오디오에 초점을 맞춘 Qwen의 텍스트 음성 합성 모델입니다. 모델별 사전 설정 음성이나 복제 음성, 스트리밍 출력, 표현을 조절하는 지시나 태그를 지원합니다."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Qwen-Audio-3.0-TTS-Plus는 내레이션, 오디오북, 더빙을 위한 섬세하고 자연스러우며 표현력 있는 오디오에 초점을 맞춘 Qwen의 텍스트 음성 합성 모델입니다. 모델별 사전 설정 음성이나 복제 음성, 스트리밍 출력, 표현을 조절하는 지시나 태그를 지원합니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "6097c93ae66b0cd02268a5813331f02955be00eab3488429fb2b65deff182561",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "f7bcf5f77565b7053a5fb4a90ef9f49c0376966cf065ea29fd0970bbe7861203"
}
