{
  "aboutHtml": "<p>Transcribe 1 Pro는 짧은 클립, 여러 화자의 대화, 긴 녹음을 위한 Fish Audio의 음성 인식 모델입니다. 녹음된 오디오를 받아 전사문을 반환하며, 선택적 시간 정보와 구조화된 화자 턴을 제공합니다. 텍스트에 표시되는 화자 전환과 감정 또는 발성 이벤트 단서가 특징으로, 단순한 단어 나열보다 녹음의 대화 구조를 더 많이 보존합니다.</p><p>인터뷰, 회의, 팟캐스트는 전체 대화를 파일 하나에 유지해 다시 등장하는 화자가 응답 안에서 일관된 레이블을 유지할 수 있도록 하세요. 유용한 검토 산출물은 원본 녹음에 연결되고, 턴이 따로 표시되며, 인용을 확인할 타임스탬프가 있는 전사문입니다. 요약이나 실행 항목 목록은 후속 애플리케이션 단계입니다. 말로 된 원본을 비교할 수 있도록 전사문과 분리하세요.</p><p>제공자는 최대 60분 녹음을 허용하며, MP3, Opus, AAC 같은 압축 오디오로 긴 파일을 처리한다고 설명합니다. 지원 형식에는 WAV, MP3, M4A 또는 MP4의 AAC, FLAC, Opus 또는 Vorbis를 사용하는 Ogg, WebM/Matroska, MOV가 포함됩니다. 비디오 파일에서는 첫 번째 오디오 트랙을 사용합니다. AIFF, CAF, WMA, AMR, AC-3, 헤더 없는 원시 PCM은 지원하지 않습니다. 요청마다 오디오 파일 하나를 제공하며, 전체 녹음을 전사한 뒤 결과가 도착합니다. 긴 녹음은 몇 분 걸릴 수 있습니다. 약 0.08초보다 짧은 클립은 거부됩니다.</p><p>제공자 응답에는 전체 텍스트, 초 단위 녹음 길이, segments 배열이 포함됩니다. Pro는 &lt;|speaker:0|&gt;, &lt;|speaker:1|&gt; 같은 인라인 레이블로 화자 전환을 표시하며, 레이블은 다음 표식까지 이어지는 텍스트에 적용됩니다. 이는 응답 하나 안의 식별자이지, 검증된 이름이나 요청 간에 맞춰볼 수 있는 신원이 아닙니다. 전사문에 화자 표식이 없으면 가이드는 단일 화자 결과로 취급합니다. 첫 표식 앞의 텍스트는 버리지 말고 첫 턴과 함께 유지하세요.</p><p>단어 단위 타임스탬프는 선택 사항입니다. 제공자 요청의 ignore_timestamps 기본값은 true이며, false로 설정하면 텍스트와 초 단위 시작·종료 시간이 있는 segments를 요청합니다. 세그먼트는 보통 단어 하나이고, 중국어와 일본어에서는 한 글자 또는 몇 글자일 수 있습니다. 세그먼트 텍스트는 문장부호, 화자 표식, 이벤트 단서를 생략하며, 말로 표현한 값을 전체 전사문과 다르게 정규화할 수 있습니다. 단어 세그먼트의 시작과 종료 시간이 같을 수도 있습니다. 빈 segments 배열은 타임스탬프를 요청하지 않았거나, 음성이 없거나, 시간 정보를 일시적으로 제공하지 못했다는 뜻일 수 있습니다. 읽을 표현에는 전체 전사문을, 정렬에는 segments를 사용하고, 두 문자열이 글자마다 같다고 가정하지 마세요.</p><p>diarize의 기본값은 auto입니다. 타임스탬프를 요청하고 diarize가 false가 아니면 Pro는 speaker_turns도 반환합니다. 각 턴에는 화자 레이블, 텍스트, 시작·종료 시간이 있으며, 인라인 화자 표식 없이 문장부호와 보존된 단서를 유지합니다. 단어 시간이 없으면 턴 시간이 근사치로 녹음 전체를 덮을 수 있고, 인접한 턴이 반드시 연속되거나 서로 겹치지 않는 것은 아닙니다. diarize를 끄면 구조화된 턴 목록은 사라지지만 전체 텍스트의 화자 표식은 남습니다. 알고 있는 화자 수 또는 최소·최대 수는 긴 녹음의 화자 분리를 최선의 범위에서 유도할 수 있습니다. 정확한 수와 수의 범위는 함께 쓸 수 없으며, diarize를 끄면 화자 수 힌트를 사용할 수 없습니다.</p><p>감정과 발성 이벤트 단서는 [laughter] 같은 대괄호 텍스트로 인식된 발화 옆에 표시됩니다. 이는 오디오에서 추론한 내용이며, 사용자가 전사 전에 추가해야 하는 단어가 아닙니다. Pro의 tag_audio_events 기본값은 true입니다. 끄면 시간 정보는 바꾸지 않고 전사문과 턴 텍스트에서 단서를 제거합니다. 별도 감정 필드나 고정 감정 열거 목록은 없습니다. 발언의 소리가 중요하면 주석 있는 전사문을 보존하고, 후속 산출물에 말한 단어만 필요하면 단서 없는 버전을 사용하세요.</p><p>언어는 자동 감지됩니다. 선택적 소문자 ISO 639-1 힌트는 번역을 강제하거나 Pro 전사문을 바꾸지 않습니다. 언어를 판단하지 못하면 반환 언어 코드가 오디오와 대조해 검증되지 않은 채 힌트를 반영할 수 있습니다. 제공자는 언어 하나를 보고하며, 혼합 언어 녹음의 모든 언어 목록을 보고하지는 않습니다. 검색 가능한 아카이브를 준비할 때, 특히 대화 부분마다 언어가 바뀌면 원래 표현과 언어 메타데이터를 함께 유지하세요.</p><p>자막은 단어마다 하나씩 만들지 말고 연속된 시간 지정 단어를 읽기 쉬운 SRT 또는 WebVTT 큐로 묶으세요. 발화의 쉼에 맞춰 큐를 나누고, 플레이어와 시청자에 맞는 길이 및 표시 시간을 선택하세요. 화자 턴 경계로 서로 다른 화자를 별도 큐에 둘 수 있습니다. 시간 결과가 비어 있는지, 큐의 종료가 시작보다 뒤여야 한다는 조건을 충족하는지 확인하세요. 자막 서식, 익명 화자 레이블에 붙일 이름, 후속 요약은 전사 결과에서 만드는 애플리케이션 산출물입니다.</p><p>실제 녹음 워크플로에서는 일반적인 읽기 좋은 전사문, 주석 있는 대화 턴, 시간 지정 자막 중 무엇이 필요한지 전사 전에 결정하세요. 오디오 식별자를 결과와 함께 유지하고, 문장부호와 단서가 중요하면 반환된 전체 텍스트를 보존하며, 탐색에는 구조화된 시간 필드를 사용하세요. Pro의 긴 녹음 및 다중 화자 기능은 일반적인 짧은 녹음용 Transcribe 1 모델과 구분됩니다. 한도와 제어를 서로 바꿔 쓸 수 있는 것으로 취급해서는 안 됩니다.</p>",
  "aboutText": "Transcribe 1 Pro는 짧은 클립, 여러 화자의 대화, 긴 녹음을 위한 Fish Audio의 음성 인식 모델입니다. 녹음된 오디오를 받아 전사문을 반환하며, 선택적 시간 정보와 구조화된 화자 턴을 제공합니다. 텍스트에 표시되는 화자 전환과 감정 또는 발성 이벤트 단서가 특징으로, 단순한 단어 나열보다 녹음의 대화 구조를 더 많이 보존합니다.\n\n인터뷰, 회의, 팟캐스트는 전체 대화를 파일 하나에 유지해 다시 등장하는 화자가 응답 안에서 일관된 레이블을 유지할 수 있도록 하세요. 유용한 검토 산출물은 원본 녹음에 연결되고, 턴이 따로 표시되며, 인용을 확인할 타임스탬프가 있는 전사문입니다. 요약이나 실행 항목 목록은 후속 애플리케이션 단계입니다. 말로 된 원본을 비교할 수 있도록 전사문과 분리하세요.\n\n제공자는 최대 60분 녹음을 허용하며, MP3, Opus, AAC 같은 압축 오디오로 긴 파일을 처리한다고 설명합니다. 지원 형식에는 WAV, MP3, M4A 또는 MP4의 AAC, FLAC, Opus 또는 Vorbis를 사용하는 Ogg, WebM/Matroska, MOV가 포함됩니다. 비디오 파일에서는 첫 번째 오디오 트랙을 사용합니다. AIFF, CAF, WMA, AMR, AC-3, 헤더 없는 원시 PCM은 지원하지 않습니다. 요청마다 오디오 파일 하나를 제공하며, 전체 녹음을 전사한 뒤 결과가 도착합니다. 긴 녹음은 몇 분 걸릴 수 있습니다. 약 0.08초보다 짧은 클립은 거부됩니다.\n\n제공자 응답에는 전체 텍스트, 초 단위 녹음 길이, segments 배열이 포함됩니다. Pro는 <|speaker:0|>, <|speaker:1|> 같은 인라인 레이블로 화자 전환을 표시하며, 레이블은 다음 표식까지 이어지는 텍스트에 적용됩니다. 이는 응답 하나 안의 식별자이지, 검증된 이름이나 요청 간에 맞춰볼 수 있는 신원이 아닙니다. 전사문에 화자 표식이 없으면 가이드는 단일 화자 결과로 취급합니다. 첫 표식 앞의 텍스트는 버리지 말고 첫 턴과 함께 유지하세요.\n\n단어 단위 타임스탬프는 선택 사항입니다. 제공자 요청의 ignore_timestamps 기본값은 true이며, false로 설정하면 텍스트와 초 단위 시작·종료 시간이 있는 segments를 요청합니다. 세그먼트는 보통 단어 하나이고, 중국어와 일본어에서는 한 글자 또는 몇 글자일 수 있습니다. 세그먼트 텍스트는 문장부호, 화자 표식, 이벤트 단서를 생략하며, 말로 표현한 값을 전체 전사문과 다르게 정규화할 수 있습니다. 단어 세그먼트의 시작과 종료 시간이 같을 수도 있습니다. 빈 segments 배열은 타임스탬프를 요청하지 않았거나, 음성이 없거나, 시간 정보를 일시적으로 제공하지 못했다는 뜻일 수 있습니다. 읽을 표현에는 전체 전사문을, 정렬에는 segments를 사용하고, 두 문자열이 글자마다 같다고 가정하지 마세요.\n\ndiarize의 기본값은 auto입니다. 타임스탬프를 요청하고 diarize가 false가 아니면 Pro는 speaker_turns도 반환합니다. 각 턴에는 화자 레이블, 텍스트, 시작·종료 시간이 있으며, 인라인 화자 표식 없이 문장부호와 보존된 단서를 유지합니다. 단어 시간이 없으면 턴 시간이 근사치로 녹음 전체를 덮을 수 있고, 인접한 턴이 반드시 연속되거나 서로 겹치지 않는 것은 아닙니다. diarize를 끄면 구조화된 턴 목록은 사라지지만 전체 텍스트의 화자 표식은 남습니다. 알고 있는 화자 수 또는 최소·최대 수는 긴 녹음의 화자 분리를 최선의 범위에서 유도할 수 있습니다. 정확한 수와 수의 범위는 함께 쓸 수 없으며, diarize를 끄면 화자 수 힌트를 사용할 수 없습니다.\n\n감정과 발성 이벤트 단서는 [laughter] 같은 대괄호 텍스트로 인식된 발화 옆에 표시됩니다. 이는 오디오에서 추론한 내용이며, 사용자가 전사 전에 추가해야 하는 단어가 아닙니다. Pro의 tag_audio_events 기본값은 true입니다. 끄면 시간 정보는 바꾸지 않고 전사문과 턴 텍스트에서 단서를 제거합니다. 별도 감정 필드나 고정 감정 열거 목록은 없습니다. 발언의 소리가 중요하면 주석 있는 전사문을 보존하고, 후속 산출물에 말한 단어만 필요하면 단서 없는 버전을 사용하세요.\n\n언어는 자동 감지됩니다. 선택적 소문자 ISO 639-1 힌트는 번역을 강제하거나 Pro 전사문을 바꾸지 않습니다. 언어를 판단하지 못하면 반환 언어 코드가 오디오와 대조해 검증되지 않은 채 힌트를 반영할 수 있습니다. 제공자는 언어 하나를 보고하며, 혼합 언어 녹음의 모든 언어 목록을 보고하지는 않습니다. 검색 가능한 아카이브를 준비할 때, 특히 대화 부분마다 언어가 바뀌면 원래 표현과 언어 메타데이터를 함께 유지하세요.\n\n자막은 단어마다 하나씩 만들지 말고 연속된 시간 지정 단어를 읽기 쉬운 SRT 또는 WebVTT 큐로 묶으세요. 발화의 쉼에 맞춰 큐를 나누고, 플레이어와 시청자에 맞는 길이 및 표시 시간을 선택하세요. 화자 턴 경계로 서로 다른 화자를 별도 큐에 둘 수 있습니다. 시간 결과가 비어 있는지, 큐의 종료가 시작보다 뒤여야 한다는 조건을 충족하는지 확인하세요. 자막 서식, 익명 화자 레이블에 붙일 이름, 후속 요약은 전사 결과에서 만드는 애플리케이션 산출물입니다.\n\n실제 녹음 워크플로에서는 일반적인 읽기 좋은 전사문, 주석 있는 대화 턴, 시간 지정 자막 중 무엇이 필요한지 전사 전에 결정하세요. 오디오 식별자를 결과와 함께 유지하고, 문장부호와 단서가 중요하면 반환된 전체 텍스트를 보존하며, 탐색에는 구조화된 시간 필드를 사용하세요. Pro의 긴 녹음 및 다중 화자 기능은 일반적인 짧은 녹음용 Transcribe 1 모델과 구분됩니다. 한도와 제어를 서로 바꿔 쓸 수 있는 것으로 취급해서는 안 됩니다.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "0c05dea3657fef55b0054df9c90058eb89abf310acf564199108c47423581cff",
    "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: Transcribe 1 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/transcribe-1-pro</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|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1-pro\">음성 인식</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\">Transcribe 1 Pro는 최대 60분 녹음을 화자 표식이 있는 텍스트로 변환하며, 선택적으로 단어 단위 시간도 제공합니다. 추정한 감정과 발성 이벤트 단서를 보존해 인터뷰, 회의, 팟캐스트를 검토하거나 검색하고 자막으로 준비하기 쉽게 합니다.</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>Transcribe 1 Pro는 짧은 클립, 여러 화자의 대화, 긴 녹음을 위한 Fish Audio의 음성 인식 모델입니다. 녹음된 오디오를 받아 전사문을 반환하며, 선택적 시간 정보와 구조화된 화자 턴을 제공합니다. 텍스트에 표시되는 화자 전환과 감정 또는 발성 이벤트 단서가 특징으로, 단순한 단어 나열보다 녹음의 대화 구조를 더 많이 보존합니다.</p><p>인터뷰, 회의, 팟캐스트는 전체 대화를 파일 하나에 유지해 다시 등장하는 화자가 응답 안에서 일관된 레이블을 유지할 수 있도록 하세요. 유용한 검토 산출물은 원본 녹음에 연결되고, 턴이 따로 표시되며, 인용을 확인할 타임스탬프가 있는 전사문입니다. 요약이나 실행 항목 목록은 후속 애플리케이션 단계입니다. 말로 된 원본을 비교할 수 있도록 전사문과 분리하세요.</p><p>제공자는 최대 60분 녹음을 허용하며, MP3, Opus, AAC 같은 압축 오디오로 긴 파일을 처리한다고 설명합니다. 지원 형식에는 WAV, MP3, M4A 또는 MP4의 AAC, FLAC, Opus 또는 Vorbis를 사용하는 Ogg, WebM/Matroska, MOV가 포함됩니다. 비디오 파일에서는 첫 번째 오디오 트랙을 사용합니다. AIFF, CAF, WMA, AMR, AC-3, 헤더 없는 원시 PCM은 지원하지 않습니다. 요청마다 오디오 파일 하나를 제공하며, 전체 녹음을 전사한 뒤 결과가 도착합니다. 긴 녹음은 몇 분 걸릴 수 있습니다. 약 0.08초보다 짧은 클립은 거부됩니다.</p><p>제공자 응답에는 전체 텍스트, 초 단위 녹음 길이, segments 배열이 포함됩니다. Pro는 &lt;|speaker:0|&gt;, &lt;|speaker:1|&gt; 같은 인라인 레이블로 화자 전환을 표시하며, 레이블은 다음 표식까지 이어지는 텍스트에 적용됩니다. 이는 응답 하나 안의 식별자이지, 검증된 이름이나 요청 간에 맞춰볼 수 있는 신원이 아닙니다. 전사문에 화자 표식이 없으면 가이드는 단일 화자 결과로 취급합니다. 첫 표식 앞의 텍스트는 버리지 말고 첫 턴과 함께 유지하세요.</p><p>단어 단위 타임스탬프는 선택 사항입니다. 제공자 요청의 ignore_timestamps 기본값은 true이며, false로 설정하면 텍스트와 초 단위 시작·종료 시간이 있는 segments를 요청합니다. 세그먼트는 보통 단어 하나이고, 중국어와 일본어에서는 한 글자 또는 몇 글자일 수 있습니다. 세그먼트 텍스트는 문장부호, 화자 표식, 이벤트 단서를 생략하며, 말로 표현한 값을 전체 전사문과 다르게 정규화할 수 있습니다. 단어 세그먼트의 시작과 종료 시간이 같을 수도 있습니다. 빈 segments 배열은 타임스탬프를 요청하지 않았거나, 음성이 없거나, 시간 정보를 일시적으로 제공하지 못했다는 뜻일 수 있습니다. 읽을 표현에는 전체 전사문을, 정렬에는 segments를 사용하고, 두 문자열이 글자마다 같다고 가정하지 마세요.</p><p>diarize의 기본값은 auto입니다. 타임스탬프를 요청하고 diarize가 false가 아니면 Pro는 speaker_turns도 반환합니다. 각 턴에는 화자 레이블, 텍스트, 시작·종료 시간이 있으며, 인라인 화자 표식 없이 문장부호와 보존된 단서를 유지합니다. 단어 시간이 없으면 턴 시간이 근사치로 녹음 전체를 덮을 수 있고, 인접한 턴이 반드시 연속되거나 서로 겹치지 않는 것은 아닙니다. diarize를 끄면 구조화된 턴 목록은 사라지지만 전체 텍스트의 화자 표식은 남습니다. 알고 있는 화자 수 또는 최소·최대 수는 긴 녹음의 화자 분리를 최선의 범위에서 유도할 수 있습니다. 정확한 수와 수의 범위는 함께 쓸 수 없으며, diarize를 끄면 화자 수 힌트를 사용할 수 없습니다.</p><p>감정과 발성 이벤트 단서는 [laughter] 같은 대괄호 텍스트로 인식된 발화 옆에 표시됩니다. 이는 오디오에서 추론한 내용이며, 사용자가 전사 전에 추가해야 하는 단어가 아닙니다. Pro의 tag_audio_events 기본값은 true입니다. 끄면 시간 정보는 바꾸지 않고 전사문과 턴 텍스트에서 단서를 제거합니다. 별도 감정 필드나 고정 감정 열거 목록은 없습니다. 발언의 소리가 중요하면 주석 있는 전사문을 보존하고, 후속 산출물에 말한 단어만 필요하면 단서 없는 버전을 사용하세요.</p><p>언어는 자동 감지됩니다. 선택적 소문자 ISO 639-1 힌트는 번역을 강제하거나 Pro 전사문을 바꾸지 않습니다. 언어를 판단하지 못하면 반환 언어 코드가 오디오와 대조해 검증되지 않은 채 힌트를 반영할 수 있습니다. 제공자는 언어 하나를 보고하며, 혼합 언어 녹음의 모든 언어 목록을 보고하지는 않습니다. 검색 가능한 아카이브를 준비할 때, 특히 대화 부분마다 언어가 바뀌면 원래 표현과 언어 메타데이터를 함께 유지하세요.</p><p>자막은 단어마다 하나씩 만들지 말고 연속된 시간 지정 단어를 읽기 쉬운 SRT 또는 WebVTT 큐로 묶으세요. 발화의 쉼에 맞춰 큐를 나누고, 플레이어와 시청자에 맞는 길이 및 표시 시간을 선택하세요. 화자 턴 경계로 서로 다른 화자를 별도 큐에 둘 수 있습니다. 시간 결과가 비어 있는지, 큐의 종료가 시작보다 뒤여야 한다는 조건을 충족하는지 확인하세요. 자막 서식, 익명 화자 레이블에 붙일 이름, 후속 요약은 전사 결과에서 만드는 애플리케이션 산출물입니다.</p><p>실제 녹음 워크플로에서는 일반적인 읽기 좋은 전사문, 주석 있는 대화 턴, 시간 지정 자막 중 무엇이 필요한지 전사 전에 결정하세요. 오디오 식별자를 결과와 함께 유지하고, 문장부호와 단서가 중요하면 반환된 전체 텍스트를 보존하며, 탐색에는 구조화된 시간 필드를 사용하세요. Pro의 긴 녹음 및 다중 화자 기능은 일반적인 짧은 녹음용 Transcribe 1 모델과 구분됩니다. 한도와 제어를 서로 바꿔 쓸 수 있는 것으로 취급해서는 안 됩니다.</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/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>입력</dt><dd><code>audio</code></dd></div><div><dt>출력</dt><dd><code>text</code></dd></div><div><dt>출력 형식</dt><dd>json</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/transcribe-1-pro</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_audio</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>object</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>정확한 키: data, format</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_audio.data</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>base64_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>디코딩 후 최대 바이트 수: 26,214,400</div><div>엄격한 Base64: 예</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_audio.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>조건: 실제 파일 검사에서 확인한 형식과 같아야 합니다.</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>json</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>speech_to_text</b> · 필수: input_audio.data, input_audio.format</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_audio</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>additional_properties</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>parameters</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>{&quot;name&quot;:&quot;model&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;enum&quot;:[&quot;fish-audio/transcribe-1-pro&quot;]}, {&quot;name&quot;:&quot;input_audio&quot;,&quot;type&quot;:&quot;object&quot;,&quot;required&quot;:true,&quot;exact_keys&quot;:[&quot;data&quot;,&quot;format&quot;],&quot;data&quot;:&quot;실제로 지원되는 오디오 바이트의 엄격한 base64 인코딩&quot;,&quot;format&quot;:&quot;파일 검사에서 확인한 정확한 형식; 실제 바이트와 일치해야 함&quot;}, {&quot;name&quot;:&quot;response_format&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:false,&quot;enum&quot;:[&quot;json&quot;]}</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>max_audio_bytes</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>26214400</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>multipart_for_this_profile</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>material_types</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>audio</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\">응답 전체와 원래 반환된 ID를 보존하세요.</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></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>입력 오디오(초)</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>$0.0002</b> <span class=\"price-unit\">입력 오디오 초당</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: Transcribe 1 Pro</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: Transcribe 1 Pro · 기본 설정</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.0002</b> <span class=\"price-unit\">입력 오디오 초당</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-1362-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1362-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-1362-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1362-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set your actual audio file}&quot;\n: &quot;${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}&quot;\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;fish-audio/transcribe-1-pro&quot;, &quot;response_format&quot;: &quot;json&quot;}&#39;)\nimport base64\nf=Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;])\nraw=f.read_bytes()\nif not raw or len(raw)&gt;26214400:raise SystemExit(&#39;Use actual audio bytes within 25 MiB&#39;)\nfmt=os.environ[&#39;AILOOT_AUDIO_FORMAT&#39;].strip()\nif not fmt:raise SystemExit(&#39;Use the actual probed format; the server checks it against the bytes&#39;)\np[&#39;input_audio&#39;]={&#39;data&#39;:base64.b64encode(raw).decode(),&#39;format&#39;:fmt}\nPath(&#39;request.json&#39;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\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 result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\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\">json</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 전체, 응답 헤더, 텍스트 및 실제로 반환된 모든 사용량 필드를 보존하세요. 응답 또는 소유 라이브러리에 있는 실제 작업/자산 식별자를 사용하세요. operation_id는 task_id가 아닙니다.</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><th>의미</th></tr></thead><tbody><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">text</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string</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 class=\"card-field-name\">usage</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>object</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 class=\"card-field-name\">usage.seconds</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>number</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 class=\"card-field-name\">duration</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>number</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 class=\"card-field-name\">task_id</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string</td><td data-cell-label=\"의미\"><span class=\"card-cell-label\">의미</span>전사 작업 ID입니다. 비어 있지 않은 전사문이 저장되고 게시되어 서명된 콘텐츠 URL이 할당되면 asset_url과 함께 반환됩니다.</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">asset_url</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string</td><td data-cell-label=\"의미\"><span class=\"card-cell-label\">의미</span>서명된 전사문 콘텐츠 URL입니다. 비어 있지 않은 전사문이 저장되고 게시되어 서명된 콘텐츠 URL이 할당되면 task_id와 함께 반환됩니다.</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=fish-audio%2Ftranscribe-1-pro&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1-pro&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1-pro</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\">위에 표시된 메서드 경로를 사용하세요.</p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Ftranscribe-1-pro&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1-pro&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/transcribe-1-pro",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1-pro",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete JSON, response headers, text and every actual returned usage field. Use actual task/asset identities from the response or owned library; operation_id is not task_id.",
            "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를 보관하세요. 전용 오디오 폴링 라우트는 없습니다."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "speech_to_text",
                "required": [
                  "input_audio.data",
                  "input_audio.format"
                ]
              }
            ],
            "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": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "JSON 전체, 응답 헤더, 텍스트 및 실제로 반환된 모든 사용량 필드를 보존하세요. 응답 또는 소유 라이브러리에 있는 실제 작업/자산 식별자를 사용하세요. operation_id는 task_id가 아닙니다.",
              "family": "transcription",
              "fields": [
                {
                  "description": "전사된 텍스트입니다.",
                  "name": "text",
                  "required": true,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "오디오 사용량입니다.",
                  "name": "usage",
                  "required": true,
                  "required_known": true,
                  "type": "object"
                },
                {
                  "description": "초 단위 오디오 길이입니다.",
                  "name": "usage.seconds",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "초 단위 오디오 길이입니다.",
                  "name": "duration",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "전사 작업 ID입니다. 비어 있지 않은 전사문이 저장되고 게시되어 서명된 콘텐츠 URL이 할당되면 asset_url과 함께 반환됩니다.",
                  "name": "task_id",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "서명된 전사문 콘텐츠 URL입니다. 비어 있지 않은 전사문이 저장되고 게시되어 서명된 콘텐츠 URL이 할당되면 task_id와 함께 반환됩니다.",
                  "name": "asset_url",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "data",
                  "format"
                ],
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "decoded_maximum_bytes": 26214400,
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.data",
                "required": true,
                "strict_base64": true,
                "type": "base64_string"
              },
              {
                "availability": "source_interface",
                "conditions": "실제 파일 검사에서 확인한 형식과 같아야 합니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.format",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "multipart input on this exact profile",
              "fields outside model/input_audio/response_format",
              "non-json response format"
            ]
          },
          "hints": [
            "응답 전체와 원래 반환된 ID를 보존하세요.",
            "결과를 알 수 없는 생성을 절대로 다시 제출하지 마세요."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "audio"
            ],
            "max_audio_bytes": 26214400,
            "multipart_for_this_profile": false,
            "parameters": [
              {
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "data": "실제로 지원되는 오디오 바이트의 엄격한 base64 인코딩",
                "exact_keys": [
                  "data",
                  "format"
                ],
                "format": "파일 검사에서 확인한 정확한 형식; 실제 바이트와 일치해야 함",
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "enum": [
                  "json"
                ],
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "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": "실제로 반환된 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."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "method_aliases": [],
          "operation_modes": [
            "speech_to_text"
          ],
          "output": {
            "family": "text",
            "type": "JSON transcript with text and usage; actual owned transcript flow"
          }
        },
        "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": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set your actual audio file}\"\n: \"${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}\"\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"fish-audio/transcribe-1-pro\", \"response_format\": \"json\"}')\nimport base64\nf=Path(os.environ['AILOOT_AUDIO_FILE'])\nraw=f.read_bytes()\nif not raw or len(raw)>26214400:raise SystemExit('Use actual audio bytes within 25 MiB')\nfmt=os.environ['AILOOT_AUDIO_FORMAT'].strip()\nif not fmt:raise SystemExit('Use the actual probed format; the server checks it against the bytes')\np['input_audio']={'data':base64.b64encode(raw).decode(),'format':fmt}\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/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · actual audio bytes and probed format",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "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_second": 0.0002
          }
        },
        "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": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1-pro",
        "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.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/transcribe-1-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "965049f58d7428b5882e0df9a368a63fbc4850ef5ae197ccf17dda17b62d6302",
    "input_html_sha256": "951e061e7144650be3af56d44171b3e9e6821c6810757b2ccabedc528908567e",
    "private_audit_sha256": "914068e8fd68a9f7d5c9ce4cf77df824ff259598306d57a42112755394974808",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/fish-audio-transcribe-1-pro/",
    "description": "Transcribe 1 Pro는 최대 60분 녹음을 화자 표식이 있는 텍스트로 변환하며, 선택적으로 단어 단위 시간도 제공합니다. 추정한 감정과 발성 이벤트 단서를 보존해 인터뷰, 회의, 팟캐스트를 검토하거나 검색하고 자막으로 준비하기 쉽게 합니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/fish-audio-transcribe-1-pro/index.md",
    "title": "Fish Audio: Transcribe 1 Pro — Ailoot",
    "url": "https://ailoot.ai/models/ko/fish-audio-transcribe-1-pro/"
  },
  "rawModel": {
    "about": "Transcribe 1 Pro는 짧은 클립, 여러 화자의 대화, 긴 녹음을 위한 Fish Audio의 음성 인식 모델입니다. 녹음된 오디오를 받아 전사문을 반환하며, 선택적 시간 정보와 구조화된 화자 턴을 제공합니다. 텍스트에 표시되는 화자 전환과 감정 또는 발성 이벤트 단서가 특징으로, 단순한 단어 나열보다 녹음의 대화 구조를 더 많이 보존합니다.\n\n인터뷰, 회의, 팟캐스트는 전체 대화를 파일 하나에 유지해 다시 등장하는 화자가 응답 안에서 일관된 레이블을 유지할 수 있도록 하세요. 유용한 검토 산출물은 원본 녹음에 연결되고, 턴이 따로 표시되며, 인용을 확인할 타임스탬프가 있는 전사문입니다. 요약이나 실행 항목 목록은 후속 애플리케이션 단계입니다. 말로 된 원본을 비교할 수 있도록 전사문과 분리하세요.\n\n제공자는 최대 60분 녹음을 허용하며, MP3, Opus, AAC 같은 압축 오디오로 긴 파일을 처리한다고 설명합니다. 지원 형식에는 WAV, MP3, M4A 또는 MP4의 AAC, FLAC, Opus 또는 Vorbis를 사용하는 Ogg, WebM/Matroska, MOV가 포함됩니다. 비디오 파일에서는 첫 번째 오디오 트랙을 사용합니다. AIFF, CAF, WMA, AMR, AC-3, 헤더 없는 원시 PCM은 지원하지 않습니다. 요청마다 오디오 파일 하나를 제공하며, 전체 녹음을 전사한 뒤 결과가 도착합니다. 긴 녹음은 몇 분 걸릴 수 있습니다. 약 0.08초보다 짧은 클립은 거부됩니다.\n\n제공자 응답에는 전체 텍스트, 초 단위 녹음 길이, segments 배열이 포함됩니다. Pro는 <|speaker:0|>, <|speaker:1|> 같은 인라인 레이블로 화자 전환을 표시하며, 레이블은 다음 표식까지 이어지는 텍스트에 적용됩니다. 이는 응답 하나 안의 식별자이지, 검증된 이름이나 요청 간에 맞춰볼 수 있는 신원이 아닙니다. 전사문에 화자 표식이 없으면 가이드는 단일 화자 결과로 취급합니다. 첫 표식 앞의 텍스트는 버리지 말고 첫 턴과 함께 유지하세요.\n\n단어 단위 타임스탬프는 선택 사항입니다. 제공자 요청의 ignore_timestamps 기본값은 true이며, false로 설정하면 텍스트와 초 단위 시작·종료 시간이 있는 segments를 요청합니다. 세그먼트는 보통 단어 하나이고, 중국어와 일본어에서는 한 글자 또는 몇 글자일 수 있습니다. 세그먼트 텍스트는 문장부호, 화자 표식, 이벤트 단서를 생략하며, 말로 표현한 값을 전체 전사문과 다르게 정규화할 수 있습니다. 단어 세그먼트의 시작과 종료 시간이 같을 수도 있습니다. 빈 segments 배열은 타임스탬프를 요청하지 않았거나, 음성이 없거나, 시간 정보를 일시적으로 제공하지 못했다는 뜻일 수 있습니다. 읽을 표현에는 전체 전사문을, 정렬에는 segments를 사용하고, 두 문자열이 글자마다 같다고 가정하지 마세요.\n\ndiarize의 기본값은 auto입니다. 타임스탬프를 요청하고 diarize가 false가 아니면 Pro는 speaker_turns도 반환합니다. 각 턴에는 화자 레이블, 텍스트, 시작·종료 시간이 있으며, 인라인 화자 표식 없이 문장부호와 보존된 단서를 유지합니다. 단어 시간이 없으면 턴 시간이 근사치로 녹음 전체를 덮을 수 있고, 인접한 턴이 반드시 연속되거나 서로 겹치지 않는 것은 아닙니다. diarize를 끄면 구조화된 턴 목록은 사라지지만 전체 텍스트의 화자 표식은 남습니다. 알고 있는 화자 수 또는 최소·최대 수는 긴 녹음의 화자 분리를 최선의 범위에서 유도할 수 있습니다. 정확한 수와 수의 범위는 함께 쓸 수 없으며, diarize를 끄면 화자 수 힌트를 사용할 수 없습니다.\n\n감정과 발성 이벤트 단서는 [laughter] 같은 대괄호 텍스트로 인식된 발화 옆에 표시됩니다. 이는 오디오에서 추론한 내용이며, 사용자가 전사 전에 추가해야 하는 단어가 아닙니다. Pro의 tag_audio_events 기본값은 true입니다. 끄면 시간 정보는 바꾸지 않고 전사문과 턴 텍스트에서 단서를 제거합니다. 별도 감정 필드나 고정 감정 열거 목록은 없습니다. 발언의 소리가 중요하면 주석 있는 전사문을 보존하고, 후속 산출물에 말한 단어만 필요하면 단서 없는 버전을 사용하세요.\n\n언어는 자동 감지됩니다. 선택적 소문자 ISO 639-1 힌트는 번역을 강제하거나 Pro 전사문을 바꾸지 않습니다. 언어를 판단하지 못하면 반환 언어 코드가 오디오와 대조해 검증되지 않은 채 힌트를 반영할 수 있습니다. 제공자는 언어 하나를 보고하며, 혼합 언어 녹음의 모든 언어 목록을 보고하지는 않습니다. 검색 가능한 아카이브를 준비할 때, 특히 대화 부분마다 언어가 바뀌면 원래 표현과 언어 메타데이터를 함께 유지하세요.\n\n자막은 단어마다 하나씩 만들지 말고 연속된 시간 지정 단어를 읽기 쉬운 SRT 또는 WebVTT 큐로 묶으세요. 발화의 쉼에 맞춰 큐를 나누고, 플레이어와 시청자에 맞는 길이 및 표시 시간을 선택하세요. 화자 턴 경계로 서로 다른 화자를 별도 큐에 둘 수 있습니다. 시간 결과가 비어 있는지, 큐의 종료가 시작보다 뒤여야 한다는 조건을 충족하는지 확인하세요. 자막 서식, 익명 화자 레이블에 붙일 이름, 후속 요약은 전사 결과에서 만드는 애플리케이션 산출물입니다.\n\n실제 녹음 워크플로에서는 일반적인 읽기 좋은 전사문, 주석 있는 대화 턴, 시간 지정 자막 중 무엇이 필요한지 전사 전에 결정하세요. 오디오 식별자를 결과와 함께 유지하고, 문장부호와 단서가 중요하면 반환된 전체 텍스트를 보존하며, 탐색에는 구조화된 시간 필드를 사용하세요. Pro의 긴 녹음 및 다중 화자 기능은 일반적인 짧은 녹음용 Transcribe 1 모델과 구분됩니다. 한도와 제어를 서로 바꿔 쓸 수 있는 것으로 취급해서는 안 됩니다.",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "available": null,
    "canonical_model": "fish-audio/transcribe-1-pro",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "구성의 전체 요금 정보는 상세 정보에서 확인할 수 있습니다."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "aeebfac63d7ddd8619fb",
        "label": "Fish Audio: Transcribe 1 Pro",
        "profiles": [
          {
            "basis": "",
            "dimensions": {
              "conditions": "기본 설정"
            },
            "label": "Fish Audio: Transcribe 1 Pro · 기본 설정",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "0949942d98ce2e4c35b418d6",
                "label": "Input audio seconds",
                "public_unit_label": "per input audio second",
                "quantity": "1",
                "rate_role": "declared_tariff_rate",
                "side": "in",
                "unit": "input_audio_second"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "transcriptions"
    ],
    "id": "fish-audio/transcribe-1-pro",
    "input": [
      "audio"
    ],
    "kind": "transcription",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete JSON, response headers, text and every actual returned usage field. Use actual task/asset identities from the response or owned library; operation_id is not task_id.",
            "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를 보관하세요. 전용 오디오 폴링 라우트는 없습니다."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "speech_to_text",
                "required": [
                  "input_audio.data",
                  "input_audio.format"
                ]
              }
            ],
            "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": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "JSON 전체, 응답 헤더, 텍스트 및 실제로 반환된 모든 사용량 필드를 보존하세요. 응답 또는 소유 라이브러리에 있는 실제 작업/자산 식별자를 사용하세요. operation_id는 task_id가 아닙니다.",
              "family": "transcription",
              "fields": [
                {
                  "description": "전사된 텍스트입니다.",
                  "name": "text",
                  "required": true,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "오디오 사용량입니다.",
                  "name": "usage",
                  "required": true,
                  "required_known": true,
                  "type": "object"
                },
                {
                  "description": "초 단위 오디오 길이입니다.",
                  "name": "usage.seconds",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "초 단위 오디오 길이입니다.",
                  "name": "duration",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "전사 작업 ID입니다. 비어 있지 않은 전사문이 저장되고 게시되어 서명된 콘텐츠 URL이 할당되면 asset_url과 함께 반환됩니다.",
                  "name": "task_id",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "서명된 전사문 콘텐츠 URL입니다. 비어 있지 않은 전사문이 저장되고 게시되어 서명된 콘텐츠 URL이 할당되면 task_id와 함께 반환됩니다.",
                  "name": "asset_url",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "data",
                  "format"
                ],
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "decoded_maximum_bytes": 26214400,
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.data",
                "required": true,
                "strict_base64": true,
                "type": "base64_string"
              },
              {
                "availability": "source_interface",
                "conditions": "실제 파일 검사에서 확인한 형식과 같아야 합니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.format",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "multipart input on this exact profile",
              "fields outside model/input_audio/response_format",
              "non-json response format"
            ]
          },
          "hints": [
            "응답 전체와 원래 반환된 ID를 보존하세요.",
            "결과를 알 수 없는 생성을 절대로 다시 제출하지 마세요."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "audio"
            ],
            "max_audio_bytes": 26214400,
            "multipart_for_this_profile": false,
            "parameters": [
              {
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "data": "실제로 지원되는 오디오 바이트의 엄격한 base64 인코딩",
                "exact_keys": [
                  "data",
                  "format"
                ],
                "format": "파일 검사에서 확인한 정확한 형식; 실제 바이트와 일치해야 함",
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "enum": [
                  "json"
                ],
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "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": "실제로 반환된 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."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "method_aliases": [],
          "operation_modes": [
            "speech_to_text"
          ],
          "output": {
            "family": "text",
            "type": "JSON transcript with text and usage; actual owned transcript flow"
          }
        },
        "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": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set your actual audio file}\"\n: \"${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}\"\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"fish-audio/transcribe-1-pro\", \"response_format\": \"json\"}')\nimport base64\nf=Path(os.environ['AILOOT_AUDIO_FILE'])\nraw=f.read_bytes()\nif not raw or len(raw)>26214400:raise SystemExit('Use actual audio bytes within 25 MiB')\nfmt=os.environ['AILOOT_AUDIO_FORMAT'].strip()\nif not fmt:raise SystemExit('Use the actual probed format; the server checks it against the bytes')\np['input_audio']={'data':base64.b64encode(raw).decode(),'format':fmt}\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/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · actual audio bytes and probed format",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "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_second": 0.0002
          }
        },
        "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": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1-pro",
        "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.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/transcribe-1-pro",
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: Transcribe 1 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_declared_unit",
            "conditions": {},
            "key": "prompt",
            "label": "prompt",
            "quantity": "1",
            "rate_role": "typed_active_maker_rate",
            "side": "in",
            "unit": "input_audio_second"
          }
        ]
      }
    ],
    "public_id": "fish-audio/transcribe-1-pro",
    "short": "Transcribe 1 Pro는 최대 60분 녹음을 화자 표식이 있는 텍스트로 변환하며, 선택적으로 단어 단위 시간도 제공합니다. 추정한 감정과 발성 이벤트 단서를 보존해 인터뷰, 회의, 팟캐스트를 검토하거나 검색하고 자막으로 준비하기 쉽게 합니다."
  },
  "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": "Transcribe 1 Pro는 최대 60분 녹음을 화자 표식이 있는 텍스트로 변환하며, 선택적으로 단어 단위 시간도 제공합니다. 추정한 감정과 발성 이벤트 단서를 보존해 인터뷰, 회의, 팟캐스트를 검토하거나 검색하고 자막으로 준비하기 쉽게 합니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "c9bcf6d5a35b52d4e662212f229ac73052e7717ceabf07fa76eb3550dc01e7bd",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "47cf9866cf3727faaceb05f8a0412aab0e5a001b122828153d53660600732b81"
}
