{
  "aboutHtml": "<p>S1은 표현력 있는 내레이션과 단일 화자 음성 출력을 위한 Fish Audio의 이전 세대 텍스트 음성 변환 모델입니다. 제공된 대본을 읽고 선택한 목소리 또는 참조를 조건으로 삼는 목소리로 오디오를 반환합니다. 전체 S1 모델은 더 작은 증류 모델인 S1-mini와 구분됩니다. 제작사는 각각 40억 개와 5억 개 매개변수 변형으로 소개합니다. 이 소개는 S1이라는 이름의 모델을 다룹니다.</p><p>내레이션에서는 실제로 말해야 할 단어를 준비하고 표현이 달라져야 할 지점을 표시하세요. 유용한 설명 대본은 핵심을 먼저 제시하고 한 번에 하나의 생각을 전개하며 자연스러운 멈춤이 필요한 문구를 문장부호로 나눕니다. 짧은 안내는 화면 없이 들을 때도 명확하게 작성하세요. 이름, 약어, 단위의 의도한 읽기를 보존하고, 눈으로 읽을 수 있는 문자열의 발음이 하나뿐이라고 가정하지 말고 음성 출력의 숫자를 확인하세요.</p><p>S1은 (angry), (sad), (in a hurry), (chuckling)처럼 소괄호로 된 감정 및 표현 신호를 사용합니다. 영향을 줄 문장이나 문구 앞에 신호를 놓고 뒤에 실제 발화를 쓰세요. 표현은 뒤따르는 텍스트에 적용되므로 연기가 달라져야 할 위치에 분위기 변화를 놓아야 합니다. 이는 S2의 대괄호 지시와 다른 문법입니다. 두 표기법을 서로 바꿔 쓸 수 있다고 가정하지 말고 선택한 세대에 맞는 대본을 유지하세요.</p><p>저장된 목소리 식별자를 통해 목소리를 선택하거나 참조 녹음과 그 전사문을 함께 조건으로 제공할 수 있습니다. 즉시 참조 워크플로에 대해 일반 음성 안내는 깨끗한 10~30초 샘플을 권장합니다. 의도한 결과에 맞는 말하기 스타일과 녹음 품질의 샘플을 선택하고 전사문을 샘플의 단어와 일치시키세요. 반복해서 등장하는 내레이터에는 문단 전반에서 같은 목소리 참조를 재사용해 주제의 변화가 의도치 않게 캐릭터의 변화가 되지 않게 하세요.</p><p>S1 발표는 영어, 중국어, 일본어, 독일어, 프랑스어, 스페인어, 한국어, 아랍어, 러시아어, 네덜란드어, 이탈리아어, 폴란드어, 포르투갈어 등을 지원 언어로 제시하며 대본 안에서 언어를 섞는 것을 설명합니다. 음성 합성을 번역 단계로 취급하지 말고 목표 언어 문구를 제공하세요. 차용한 이름이나 언어 전환이 있는 문단에서는 철자와 주변 문장 맥락을 명확하게 유지하고 선택한 목소리가 전환을 어떻게 처리하는지 검토하세요.</p><p>S1의 제작사 인터페이스는 합성 요청당 한 명의 화자를 지원합니다. 대화는 각자의 목소리 참조를 가진 개별 세그먼트로 준비한 뒤 애플리케이션에서 조립할 수 있습니다. S2 계열의 기본 다중 화자 합성은 별도의 기능입니다. 캐릭터 대사를 준비할 때 역할, 목소리, 텍스트를 각 세그먼트에 연결하세요. 합성 결과는 대본의 음성 연기이며 대화 타이밍 조절이나 음악·영상과의 결합은 이후 편집 단계입니다.</p><p>출력 옵션에는 MP3, WAV, 원시 PCM, Opus가 포함되며 기본값은 MP3입니다. 문서상 출력은 모노입니다. WAV와 PCM은 16비트 샘플을 사용하며 형식별 샘플 레이트 선택은 다릅니다. MP3는 64, 128, 192 kbps를 지원하고 Opus는 48 kHz를 사용합니다. 음량 제어와 함께 속도를 0.5~2.0으로 조정할 수 있습니다. 보이스오버 결과물에는 인코딩된 파일을, 재생에는 적절한 스트림을 선택하고 선택한 목소리와 대본을 결과와 함께 보관하세요.</p><p>제작사는 긴 텍스트를 청크로 처리하며 문서에 명시된 청크 길이 범위는 100~300입니다. 보장된 전체 녹음 시간이 아니라 청크별 오디오 토큰 예산을 사용합니다. 텍스트 정규화는 영어와 중국어 숫자를 자연스러운 읽기로 확장할 수 있고 S1의 반복 페널티는 반복 오디오 패턴을 줄일 수 있습니다. 출력 라우드니스 정규화는 별도의 설정이며 S1에는 영향을 주지 않습니다. 완성 문단을 조립하기 전에 발음, 문구 경계, 반복 소리, 의도한 감정 변화를 살핀 뒤 필요한 특정 대사나 참조를 수정하세요.</p>",
  "aboutText": "S1은 표현력 있는 내레이션과 단일 화자 음성 출력을 위한 Fish Audio의 이전 세대 텍스트 음성 변환 모델입니다. 제공된 대본을 읽고 선택한 목소리 또는 참조를 조건으로 삼는 목소리로 오디오를 반환합니다. 전체 S1 모델은 더 작은 증류 모델인 S1-mini와 구분됩니다. 제작사는 각각 40억 개와 5억 개 매개변수 변형으로 소개합니다. 이 소개는 S1이라는 이름의 모델을 다룹니다.\n\n내레이션에서는 실제로 말해야 할 단어를 준비하고 표현이 달라져야 할 지점을 표시하세요. 유용한 설명 대본은 핵심을 먼저 제시하고 한 번에 하나의 생각을 전개하며 자연스러운 멈춤이 필요한 문구를 문장부호로 나눕니다. 짧은 안내는 화면 없이 들을 때도 명확하게 작성하세요. 이름, 약어, 단위의 의도한 읽기를 보존하고, 눈으로 읽을 수 있는 문자열의 발음이 하나뿐이라고 가정하지 말고 음성 출력의 숫자를 확인하세요.\n\nS1은 (angry), (sad), (in a hurry), (chuckling)처럼 소괄호로 된 감정 및 표현 신호를 사용합니다. 영향을 줄 문장이나 문구 앞에 신호를 놓고 뒤에 실제 발화를 쓰세요. 표현은 뒤따르는 텍스트에 적용되므로 연기가 달라져야 할 위치에 분위기 변화를 놓아야 합니다. 이는 S2의 대괄호 지시와 다른 문법입니다. 두 표기법을 서로 바꿔 쓸 수 있다고 가정하지 말고 선택한 세대에 맞는 대본을 유지하세요.\n\n저장된 목소리 식별자를 통해 목소리를 선택하거나 참조 녹음과 그 전사문을 함께 조건으로 제공할 수 있습니다. 즉시 참조 워크플로에 대해 일반 음성 안내는 깨끗한 10~30초 샘플을 권장합니다. 의도한 결과에 맞는 말하기 스타일과 녹음 품질의 샘플을 선택하고 전사문을 샘플의 단어와 일치시키세요. 반복해서 등장하는 내레이터에는 문단 전반에서 같은 목소리 참조를 재사용해 주제의 변화가 의도치 않게 캐릭터의 변화가 되지 않게 하세요.\n\nS1 발표는 영어, 중국어, 일본어, 독일어, 프랑스어, 스페인어, 한국어, 아랍어, 러시아어, 네덜란드어, 이탈리아어, 폴란드어, 포르투갈어 등을 지원 언어로 제시하며 대본 안에서 언어를 섞는 것을 설명합니다. 음성 합성을 번역 단계로 취급하지 말고 목표 언어 문구를 제공하세요. 차용한 이름이나 언어 전환이 있는 문단에서는 철자와 주변 문장 맥락을 명확하게 유지하고 선택한 목소리가 전환을 어떻게 처리하는지 검토하세요.\n\nS1의 제작사 인터페이스는 합성 요청당 한 명의 화자를 지원합니다. 대화는 각자의 목소리 참조를 가진 개별 세그먼트로 준비한 뒤 애플리케이션에서 조립할 수 있습니다. S2 계열의 기본 다중 화자 합성은 별도의 기능입니다. 캐릭터 대사를 준비할 때 역할, 목소리, 텍스트를 각 세그먼트에 연결하세요. 합성 결과는 대본의 음성 연기이며 대화 타이밍 조절이나 음악·영상과의 결합은 이후 편집 단계입니다.\n\n출력 옵션에는 MP3, WAV, 원시 PCM, Opus가 포함되며 기본값은 MP3입니다. 문서상 출력은 모노입니다. WAV와 PCM은 16비트 샘플을 사용하며 형식별 샘플 레이트 선택은 다릅니다. MP3는 64, 128, 192 kbps를 지원하고 Opus는 48 kHz를 사용합니다. 음량 제어와 함께 속도를 0.5~2.0으로 조정할 수 있습니다. 보이스오버 결과물에는 인코딩된 파일을, 재생에는 적절한 스트림을 선택하고 선택한 목소리와 대본을 결과와 함께 보관하세요.\n\n제작사는 긴 텍스트를 청크로 처리하며 문서에 명시된 청크 길이 범위는 100~300입니다. 보장된 전체 녹음 시간이 아니라 청크별 오디오 토큰 예산을 사용합니다. 텍스트 정규화는 영어와 중국어 숫자를 자연스러운 읽기로 확장할 수 있고 S1의 반복 페널티는 반복 오디오 패턴을 줄일 수 있습니다. 출력 라우드니스 정규화는 별도의 설정이며 S1에는 영향을 주지 않습니다. 완성 문단을 조립하기 전에 발음, 문구 경계, 반복 소리, 의도한 감정 변화를 살핀 뒤 필요한 특정 대사나 참조를 수정하세요.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "50e5143c80f2c6960e11e07efca1fb5b109e9e6309f1efdd1732d378e7b5d15d",
    "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\">•</span><h2 id=\"sheet-title\">Fish Audio: S1</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/s1</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|fish-audio%2Fs1\">음성 합성</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\">Fish Audio S1은 참조 목소리와 소괄호의 감정 신호를 사용해 다국어 대본을 표현력 있는 단일 화자 오디오로 바꿉니다. 내레이션, 짧은 음성 안내, 캐릭터 대사에 활용할 수 있으며 완성 오디오의 형식과 운율을 제어합니다.</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>S1은 표현력 있는 내레이션과 단일 화자 음성 출력을 위한 Fish Audio의 이전 세대 텍스트 음성 변환 모델입니다. 제공된 대본을 읽고 선택한 목소리 또는 참조를 조건으로 삼는 목소리로 오디오를 반환합니다. 전체 S1 모델은 더 작은 증류 모델인 S1-mini와 구분됩니다. 제작사는 각각 40억 개와 5억 개 매개변수 변형으로 소개합니다. 이 소개는 S1이라는 이름의 모델을 다룹니다.</p><p>내레이션에서는 실제로 말해야 할 단어를 준비하고 표현이 달라져야 할 지점을 표시하세요. 유용한 설명 대본은 핵심을 먼저 제시하고 한 번에 하나의 생각을 전개하며 자연스러운 멈춤이 필요한 문구를 문장부호로 나눕니다. 짧은 안내는 화면 없이 들을 때도 명확하게 작성하세요. 이름, 약어, 단위의 의도한 읽기를 보존하고, 눈으로 읽을 수 있는 문자열의 발음이 하나뿐이라고 가정하지 말고 음성 출력의 숫자를 확인하세요.</p><p>S1은 (angry), (sad), (in a hurry), (chuckling)처럼 소괄호로 된 감정 및 표현 신호를 사용합니다. 영향을 줄 문장이나 문구 앞에 신호를 놓고 뒤에 실제 발화를 쓰세요. 표현은 뒤따르는 텍스트에 적용되므로 연기가 달라져야 할 위치에 분위기 변화를 놓아야 합니다. 이는 S2의 대괄호 지시와 다른 문법입니다. 두 표기법을 서로 바꿔 쓸 수 있다고 가정하지 말고 선택한 세대에 맞는 대본을 유지하세요.</p><p>저장된 목소리 식별자를 통해 목소리를 선택하거나 참조 녹음과 그 전사문을 함께 조건으로 제공할 수 있습니다. 즉시 참조 워크플로에 대해 일반 음성 안내는 깨끗한 10~30초 샘플을 권장합니다. 의도한 결과에 맞는 말하기 스타일과 녹음 품질의 샘플을 선택하고 전사문을 샘플의 단어와 일치시키세요. 반복해서 등장하는 내레이터에는 문단 전반에서 같은 목소리 참조를 재사용해 주제의 변화가 의도치 않게 캐릭터의 변화가 되지 않게 하세요.</p><p>S1 발표는 영어, 중국어, 일본어, 독일어, 프랑스어, 스페인어, 한국어, 아랍어, 러시아어, 네덜란드어, 이탈리아어, 폴란드어, 포르투갈어 등을 지원 언어로 제시하며 대본 안에서 언어를 섞는 것을 설명합니다. 음성 합성을 번역 단계로 취급하지 말고 목표 언어 문구를 제공하세요. 차용한 이름이나 언어 전환이 있는 문단에서는 철자와 주변 문장 맥락을 명확하게 유지하고 선택한 목소리가 전환을 어떻게 처리하는지 검토하세요.</p><p>S1의 제작사 인터페이스는 합성 요청당 한 명의 화자를 지원합니다. 대화는 각자의 목소리 참조를 가진 개별 세그먼트로 준비한 뒤 애플리케이션에서 조립할 수 있습니다. S2 계열의 기본 다중 화자 합성은 별도의 기능입니다. 캐릭터 대사를 준비할 때 역할, 목소리, 텍스트를 각 세그먼트에 연결하세요. 합성 결과는 대본의 음성 연기이며 대화 타이밍 조절이나 음악·영상과의 결합은 이후 편집 단계입니다.</p><p>출력 옵션에는 MP3, WAV, 원시 PCM, Opus가 포함되며 기본값은 MP3입니다. 문서상 출력은 모노입니다. WAV와 PCM은 16비트 샘플을 사용하며 형식별 샘플 레이트 선택은 다릅니다. MP3는 64, 128, 192 kbps를 지원하고 Opus는 48 kHz를 사용합니다. 음량 제어와 함께 속도를 0.5~2.0으로 조정할 수 있습니다. 보이스오버 결과물에는 인코딩된 파일을, 재생에는 적절한 스트림을 선택하고 선택한 목소리와 대본을 결과와 함께 보관하세요.</p><p>제작사는 긴 텍스트를 청크로 처리하며 문서에 명시된 청크 길이 범위는 100~300입니다. 보장된 전체 녹음 시간이 아니라 청크별 오디오 토큰 예산을 사용합니다. 텍스트 정규화는 영어와 중국어 숫자를 자연스러운 읽기로 확장할 수 있고 S1의 반복 페널티는 반복 오디오 패턴을 줄일 수 있습니다. 출력 라우드니스 정규화는 별도의 설정이며 S1에는 영향을 주지 않습니다. 완성 문단을 조립하기 전에 발음, 문구 경계, 반복 소리, 의도한 감정 변화를 살핀 뒤 필요한 특정 대사나 참조를 수정하세요.</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>실제로 선언된 바이너리 오디오</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>fish-audio/s1</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></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"saved_exact_supplier_example\"><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>예시: b347db033a6549378b48d00acb0d06cd</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, pcm</div></td><td data-cell-label=\"기본값\" data-default=\"known\"><span class=\"card-cell-label\">기본값</span>pcm</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>입력 자료 조합</summary><p class=\"note-s\"><b>text_to_speech</b> · 필수: actual UTF-8 script, exact supported voice</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</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><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>b347db033a6549378b48d00acb0d06cd</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>voice_list_exhaustive</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>response_format</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>mp3, pcm</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>default_response_format</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>pcm</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>quantity</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>native_byte_quote_controls</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>추가 과금 텍스트가 선언될 때까지 이 정확한 바이트 견적 경로에서는 비어 있지 않은 instructions와 여러 화자의 대화 차례 입력을 거부합니다.</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\">응답 전체, 모든 실제 출력 및 원래 반환된 ID를 보존하세요.</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></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><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>입력 오디오의 utf8 바이트당</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>입력 · 오디오 입력 UTF-8 바이트</span> <b>$0.00003</b> <span class=\"price-unit\">입력 오디오의 utf8 바이트당</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. <a href=\"/docs/ko/billing/reserve/\">금액 확보와 정산 방식 →</a></p><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>Fish Audio: S1</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>Fish Audio: S1 · 기본 설정</th><td data-cell-label=\"과금 조건\"><span class=\"card-cell-label\">과금 조건</span>기본 설정</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>입력 · 입력 UTF-8 바이트</span> <b>US$0.00003</b> <span class=\"price-unit\">입력 UTF-8 바이트당</span></div></td></tr></tbody></table></div></details></div></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-1354-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1354-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-1354-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1354-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;fish-audio/s1&#39;, &#39;input&#39;: &#39;Hello world&#39;, &#39;voice&#39;: &#39;b347db033a6549378b48d00acb0d06cd&#39;, &#39;response_format&#39;: &#39;mp3&#39;}\nPath(&#39;request.json&#39;).write_text(json.dumps(request,ensure_ascii=False),encoding=&#39;utf-8&#39;)\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 response.bin\n# Keep the complete original response and headers. Read every returned segment, word and usage field.\n# Preserve actual operation/task/asset IDs; continue reads of the original result without resubmitting.\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\">실제로 선언된 바이너리 오디오</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><div class=\"card-result-process\" data-all-results><h5>완료된 결과 모두 보관</h5><p class=\"note-s\">반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.</p><p class=\"note-s\">전체 바이너리 바이트와 원본 헤더를 모두 저장하세요. JSON이 반환되면 전체 내용을 보존하세요. 실제 작업/자산 ID는 보존됩니다.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>원래 응답을 확인해야 할 경우</h5><p class=\"note-s\">원래 operation_id/X-Client-Request-ID와 원본 응답을 보존하세요. 다시 제출하지 말고 실제 소유 작업/자산 기록을 조회하세요. 전용 오디오 폴링 URL을 만들지 않습니다.</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></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=fish-audio%2Fs1&amp;route=Ultra&amp;caller=fish-audio%2Fs1&amp;fmt=speech\"><code>fish-audio/s1</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\">위에 표시된 메서드 경로를 사용하세요.</p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Fs1&amp;route=Ultra&amp;caller=fish-audio%2Fs1&amp;fmt=speech\"><code>fish-audio/s1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/s1",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "fish-audio/s1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|fish-audio%2Fs1",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save all complete binary bytes and all original headers; keep full JSON if returned. Actual operation/asset IDs are preserved.",
            "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": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "원래 operation_id/X-Client-Request-ID와 원본 응답을 보존하세요. 다시 제출하지 말고 실제 소유 작업/자산 기록을 조회하세요. 전용 오디오 폴링 URL을 만들지 않습니다."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "actual UTF-8 script",
                  "exact supported voice"
                ]
              }
            ],
            "outputs": {
              "all_results": "전체 바이너리 바이트와 원본 헤더를 모두 저장하세요. JSON이 반환되면 전체 내용을 보존하세요. 실제 작업/자산 ID는 보존됩니다.",
              "family": "audio",
              "fields": [
                {
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "실제로 선언된 바이너리 오디오"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "enum": [
                  "fish-audio/s1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "min_length": 1,
                "name": "input",
                "quantity_unit": "decoded input UTF-8 bytes",
                "required": true,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_example",
                "enum": [
                  "b347db033a6549378b48d00acb0d06cd"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/s1"
                  ],
                  "type": "string"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "Hello world",
                "model": "fish-audio/s1",
                "response_format": "mp3",
                "voice": "b347db033a6549378b48d00acb0d06cd"
              },
              "content_type": "application/json"
            }
          },
          "hints": [
            "정확한 모델과 문서에 명시된 입력 필드를 사용하세요.",
            "응답 전체, 모든 실제 출력 및 원래 반환된 ID를 보존하세요."
          ],
          "input": {
            "content_type": "application/json",
            "default_response_format": "pcm",
            "material_types": [
              "text"
            ],
            "native_byte_quote_controls": "추가 과금 텍스트가 선언될 때까지 이 정확한 바이트 견적 경로에서는 비어 있지 않은 instructions와 여러 화자의 대화 차례 입력을 거부합니다.",
            "quantity": "디코딩된 단일 입력 문자열의 UTF-8 바이트 수; 앞뒤 공백 제거 및 정규화 없음",
            "required": [
              "model",
              "input",
              "voice"
            ],
            "response_format": [
              "mp3",
              "pcm"
            ],
            "voice_ids": [
              "b347db033a6549378b48d00acb0d06cd"
            ],
            "voice_list_exhaustive": false
          },
          "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 and original response. Read actual owned task/asset records without resubmitting; no dedicated audio poll URL is constructed."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "all_results": true,
            "family": "audio",
            "format": "actual MP3 or PCM bytes and MIME",
            "response": "complete raw audio bytes plus response headers"
          }
        },
        "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_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/s1', 'input': 'Hello world', 'voice': 'b347db033a6549378b48d00acb0d06cd', 'response_format': 'mp3'}\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\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 response.bin\n# Keep the complete original response and headers. Read every returned segment, word and usage field.\n# Preserve actual operation/task/asset IDs; continue reads of the original result without resubmitting.\n",
            "label": "curl · exact native body and complete result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact model and documented input fields.",
          "Keep the complete response, every actual output and original returned IDs."
        ],
        "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_utf8_byte": 3e-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_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/s1",
        "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.00003",
            "amount_unit": "usd_per_audio_input_utf8_byte",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "audio input utf8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per audio input utf8 byte",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/s1",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "5a207e6ccb9c14067eef65cc26ea4fe98f0db8983bb0d2171623f80985039924",
    "input_html_sha256": "391293b21dad3bf1c006a34d8cb534d45de76155d7dac0e0a4bd53af92b84192",
    "private_audit_sha256": "cd31bc45b8985d62d0734b6d4a25a910e8d09101e00a55afcdec8a8ea7a6f520",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/fish-audio-s1/",
    "description": "Fish Audio S1은 참조 목소리와 소괄호의 감정 신호를 사용해 다국어 대본을 표현력 있는 단일 화자 오디오로 바꿉니다. 내레이션, 짧은 음성 안내, 캐릭터 대사에 활용할 수 있으며 완성 오디오의 형식과 운율을 제어합니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/fish-audio-s1/index.md",
    "title": "Fish Audio: S1 — Ailoot",
    "url": "https://ailoot.ai/models/ko/fish-audio-s1/"
  },
  "rawModel": {
    "about": "S1은 표현력 있는 내레이션과 단일 화자 음성 출력을 위한 Fish Audio의 이전 세대 텍스트 음성 변환 모델입니다. 제공된 대본을 읽고 선택한 목소리 또는 참조를 조건으로 삼는 목소리로 오디오를 반환합니다. 전체 S1 모델은 더 작은 증류 모델인 S1-mini와 구분됩니다. 제작사는 각각 40억 개와 5억 개 매개변수 변형으로 소개합니다. 이 소개는 S1이라는 이름의 모델을 다룹니다.\n\n내레이션에서는 실제로 말해야 할 단어를 준비하고 표현이 달라져야 할 지점을 표시하세요. 유용한 설명 대본은 핵심을 먼저 제시하고 한 번에 하나의 생각을 전개하며 자연스러운 멈춤이 필요한 문구를 문장부호로 나눕니다. 짧은 안내는 화면 없이 들을 때도 명확하게 작성하세요. 이름, 약어, 단위의 의도한 읽기를 보존하고, 눈으로 읽을 수 있는 문자열의 발음이 하나뿐이라고 가정하지 말고 음성 출력의 숫자를 확인하세요.\n\nS1은 (angry), (sad), (in a hurry), (chuckling)처럼 소괄호로 된 감정 및 표현 신호를 사용합니다. 영향을 줄 문장이나 문구 앞에 신호를 놓고 뒤에 실제 발화를 쓰세요. 표현은 뒤따르는 텍스트에 적용되므로 연기가 달라져야 할 위치에 분위기 변화를 놓아야 합니다. 이는 S2의 대괄호 지시와 다른 문법입니다. 두 표기법을 서로 바꿔 쓸 수 있다고 가정하지 말고 선택한 세대에 맞는 대본을 유지하세요.\n\n저장된 목소리 식별자를 통해 목소리를 선택하거나 참조 녹음과 그 전사문을 함께 조건으로 제공할 수 있습니다. 즉시 참조 워크플로에 대해 일반 음성 안내는 깨끗한 10~30초 샘플을 권장합니다. 의도한 결과에 맞는 말하기 스타일과 녹음 품질의 샘플을 선택하고 전사문을 샘플의 단어와 일치시키세요. 반복해서 등장하는 내레이터에는 문단 전반에서 같은 목소리 참조를 재사용해 주제의 변화가 의도치 않게 캐릭터의 변화가 되지 않게 하세요.\n\nS1 발표는 영어, 중국어, 일본어, 독일어, 프랑스어, 스페인어, 한국어, 아랍어, 러시아어, 네덜란드어, 이탈리아어, 폴란드어, 포르투갈어 등을 지원 언어로 제시하며 대본 안에서 언어를 섞는 것을 설명합니다. 음성 합성을 번역 단계로 취급하지 말고 목표 언어 문구를 제공하세요. 차용한 이름이나 언어 전환이 있는 문단에서는 철자와 주변 문장 맥락을 명확하게 유지하고 선택한 목소리가 전환을 어떻게 처리하는지 검토하세요.\n\nS1의 제작사 인터페이스는 합성 요청당 한 명의 화자를 지원합니다. 대화는 각자의 목소리 참조를 가진 개별 세그먼트로 준비한 뒤 애플리케이션에서 조립할 수 있습니다. S2 계열의 기본 다중 화자 합성은 별도의 기능입니다. 캐릭터 대사를 준비할 때 역할, 목소리, 텍스트를 각 세그먼트에 연결하세요. 합성 결과는 대본의 음성 연기이며 대화 타이밍 조절이나 음악·영상과의 결합은 이후 편집 단계입니다.\n\n출력 옵션에는 MP3, WAV, 원시 PCM, Opus가 포함되며 기본값은 MP3입니다. 문서상 출력은 모노입니다. WAV와 PCM은 16비트 샘플을 사용하며 형식별 샘플 레이트 선택은 다릅니다. MP3는 64, 128, 192 kbps를 지원하고 Opus는 48 kHz를 사용합니다. 음량 제어와 함께 속도를 0.5~2.0으로 조정할 수 있습니다. 보이스오버 결과물에는 인코딩된 파일을, 재생에는 적절한 스트림을 선택하고 선택한 목소리와 대본을 결과와 함께 보관하세요.\n\n제작사는 긴 텍스트를 청크로 처리하며 문서에 명시된 청크 길이 범위는 100~300입니다. 보장된 전체 녹음 시간이 아니라 청크별 오디오 토큰 예산을 사용합니다. 텍스트 정규화는 영어와 중국어 숫자를 자연스러운 읽기로 확장할 수 있고 S1의 반복 페널티는 반복 오디오 패턴을 줄일 수 있습니다. 출력 라우드니스 정규화는 별도의 설정이며 S1에는 영향을 주지 않습니다. 완성 문단을 조립하기 전에 발음, 문구 경계, 반복 소리, 의도한 감정 변화를 살핀 뒤 필요한 특정 대사나 참조를 수정하세요.",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "available": null,
    "canonical_model": "fish-audio/s1",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00003",
            "amount_unit": "usd_per_audio_input_utf8_byte",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "audio input utf8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per audio input utf8 byte",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ],
        "summary": "구성의 전체 요금 정보는 상세 정보에서 확인할 수 있습니다."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "ca1892881aa6bc927745",
        "label": "Fish Audio: S1",
        "profiles": [
          {
            "basis": "",
            "dimensions": {
              "conditions": "기본 설정"
            },
            "label": "Fish Audio: S1 · 기본 설정",
            "units": [
              {
                "amount": "0.000030",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "e7b3eb5a7636763feb8a9472",
                "label": "Input UTF-8 bytes",
                "public_unit_label": "per input UTF-8 byte",
                "quantity": "1",
                "rate_role": "declared_tariff_rate",
                "side": "in",
                "unit": "input_utf8_byte"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "fish-audio/s1",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save all complete binary bytes and all original headers; keep full JSON if returned. Actual operation/asset IDs are preserved.",
            "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": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "원래 operation_id/X-Client-Request-ID와 원본 응답을 보존하세요. 다시 제출하지 말고 실제 소유 작업/자산 기록을 조회하세요. 전용 오디오 폴링 URL을 만들지 않습니다."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "actual UTF-8 script",
                  "exact supported voice"
                ]
              }
            ],
            "outputs": {
              "all_results": "전체 바이너리 바이트와 원본 헤더를 모두 저장하세요. JSON이 반환되면 전체 내용을 보존하세요. 실제 작업/자산 ID는 보존됩니다.",
              "family": "audio",
              "fields": [
                {
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "실제로 선언된 바이너리 오디오"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "enum": [
                  "fish-audio/s1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "min_length": 1,
                "name": "input",
                "quantity_unit": "decoded input UTF-8 bytes",
                "required": true,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_example",
                "enum": [
                  "b347db033a6549378b48d00acb0d06cd"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/s1"
                  ],
                  "type": "string"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "Hello world",
                "model": "fish-audio/s1",
                "response_format": "mp3",
                "voice": "b347db033a6549378b48d00acb0d06cd"
              },
              "content_type": "application/json"
            }
          },
          "hints": [
            "정확한 모델과 문서에 명시된 입력 필드를 사용하세요.",
            "응답 전체, 모든 실제 출력 및 원래 반환된 ID를 보존하세요."
          ],
          "input": {
            "content_type": "application/json",
            "default_response_format": "pcm",
            "material_types": [
              "text"
            ],
            "native_byte_quote_controls": "추가 과금 텍스트가 선언될 때까지 이 정확한 바이트 견적 경로에서는 비어 있지 않은 instructions와 여러 화자의 대화 차례 입력을 거부합니다.",
            "quantity": "디코딩된 단일 입력 문자열의 UTF-8 바이트 수; 앞뒤 공백 제거 및 정규화 없음",
            "required": [
              "model",
              "input",
              "voice"
            ],
            "response_format": [
              "mp3",
              "pcm"
            ],
            "voice_ids": [
              "b347db033a6549378b48d00acb0d06cd"
            ],
            "voice_list_exhaustive": false
          },
          "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 and original response. Read actual owned task/asset records without resubmitting; no dedicated audio poll URL is constructed."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "all_results": true,
            "family": "audio",
            "format": "actual MP3 or PCM bytes and MIME",
            "response": "complete raw audio bytes plus response headers"
          }
        },
        "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_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/s1', 'input': 'Hello world', 'voice': 'b347db033a6549378b48d00acb0d06cd', 'response_format': 'mp3'}\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\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 response.bin\n# Keep the complete original response and headers. Read every returned segment, word and usage field.\n# Preserve actual operation/task/asset IDs; continue reads of the original result without resubmitting.\n",
            "label": "curl · exact native body and complete result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact model and documented input fields.",
          "Keep the complete response, every actual output and original returned IDs."
        ],
        "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_utf8_byte": 3e-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_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/s1",
        "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.00003",
            "amount_unit": "usd_per_audio_input_utf8_byte",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "audio input utf8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per audio input utf8 byte",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/s1",
        "request_model_id": "fish-audio/s1",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: S1",
    "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": {
          "not_character_or_token_count": true,
          "quoted_unit": "1000000_UTF8_bytes",
          "retirement_date": "2026-12-31"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000030",
            "amount_unit": "usd_per_input_utf8_byte",
            "conditions": {
              "not_character_or_token_count": true,
              "quoted_unit": "1000000_UTF8_bytes",
              "retirement_date": "2026-12-31"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_utf8_byte"
          }
        ]
      }
    ],
    "public_id": "fish-audio/s1",
    "short": "Fish Audio S1은 참조 목소리와 소괄호의 감정 신호를 사용해 다국어 대본을 표현력 있는 단일 화자 오디오로 바꿉니다. 내레이션, 짧은 음성 안내, 캐릭터 대사에 활용할 수 있으며 완성 오디오의 형식과 운율을 제어합니다."
  },
  "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": "Fish Audio S1은 참조 목소리와 소괄호의 감정 신호를 사용해 다국어 대본을 표현력 있는 단일 화자 오디오로 바꿉니다. 내레이션, 짧은 음성 안내, 캐릭터 대사에 활용할 수 있으며 완성 오디오의 형식과 운율을 제어합니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "5116b9c7fb6d54aa64dc007cfb5e21ca8fbc33fba6cfbdd1e45d386c0929a16d",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "a4598ba3c37621786d2880384d17f46bd383319543b6bfb8ea234825c03bee60"
}
