Model APIs
Whisper-1
오디오 파일을 전사하거나 영어로 번역하고, 작업을 조회한 뒤 텍스트, JSON 또는 자막을 다운로드합니다.
Whisper-1은 녹음된 음성을 텍스트로 변환합니다. 발화 언어를 유지하려면 /v1/audio/transcriptions, 영어를 출력하려면 /v1/audio/translations를 사용합니다. 두 엔드포인트 모두 업로드 파일이 포함된 multipart/form-data를 받습니다. SeedRouter는 먼저 작업 ID를 반환하며, 완료 후 선택한 결과를 다운로드합니다. OpenAI SDK의 동기 응답과는 다릅니다.
Playground 및 실시간 요금 · 첫 전사 튜토리얼 · OpenAPI · Markdown
녹음 제출
API 키는 서버에 보관합니다. HTTP 클라이언트가 multipart boundary를 생성하도록 하며, boundary 없는 Content-Type: multipart/form-data 헤더를 직접 설정하지 않습니다.
curl https://api.seedrouter.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-F model=whisper-1 \
-F [email protected] \
-F language=en \
-F response_format=verbose_json \
-F 'timestamp_granularities[]=word' \
-F 'timestamp_granularities[]=segment'이 응답은 작업을 접수했다는 뜻이며, 전사 완료를 의미하지 않습니다.
{
"id": "task_example",
"model": "whisper-1",
"status": "processing",
"created_at": 1792376116
}실제로 반환된 id를 저장합니다. 한 번만 제출합니다. 연결이 끊겨도 요청이 접수되었는지는 알 수 없습니다. 새 요청을 만들기 전에 작업 기록을 확인합니다.
결과 읽기
curl "https://api.seedrouter.ai/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $SEEDROUTER_API_KEY"status가 processing인 동안 폴링합니다. 완료된 작업에는 output.url과 output.format, 실패한 작업에는 error.code와 error.message가 있습니다. 폴링 시간 초과는 작업의 종료 상태가 아닙니다. 작업 소유자만 조회할 수 있습니다. 아래 예시는 응답 구조를 보여줍니다.
{
"id": "task_example",
"model": "whisper-1",
"status": "completed",
"output": {
"format": "verbose_json",
"url": "https://static.seedrouter.ai/media/tasks/task_example/0.json"
}
}별도 GET 요청으로 output.url을 다운로드합니다. JSON 결과 파일은 JSON으로, 나머지 형식은 텍스트로 읽습니다. 공개 작업 응답에는 가격이나 계정 세부 정보가 포함되지 않습니다.
전사 매개변수
file과 model은 필수입니다. 아래 9개 필드가 공통 요청 인터페이스를 구성하며, file, model, 명시적으로 무시되는 stream을 포함합니다. chunking_strategy의 호환성 문제는 아래에 설명합니다.
| 필드 | 타입 | 기본값 | 계약 |
|---|---|---|---|
file | 바이너리 업로드 | 필수 | 비어 있지 않은 오디오 파일 하나입니다. URL이나 파일명 문자열이 아닙니다. 파일 제한을 확인합니다. |
model | 문자열 | 필수 | 정확히 whisper-1입니다. |
language | 문자열 | 자동 감지 | en 등의 입력 언어 힌트입니다. 로컬 언어 허용 목록은 적용하지 않습니다. 감지하려면 생략합니다. |
prompt | 문자열 | 생략 | 오디오 언어로 된 문맥, 표기 또는 이어지는 내용입니다. 임의의 글자 수 제한은 만들지 않습니다. Whisper는 자체 토크나이저의 마지막 224개 토큰을 사용합니다. 일반적인 지시 프롬프트가 아닙니다. |
response_format | 문자열 | json | json, text, srt, verbose_json 또는 vtt입니다. |
temperature | 숫자 | 0 | 양 끝을 포함한 0–1 범위입니다. 0은 모델의 자동 온도 조정을 허용하며, 결정적인 텍스트 출력을 보장하지 않습니다. |
timestamp_granularities[] | 반복 문자열 | 해당하는 경우 구간 타임스탬프 | word, segment 또는 둘 다입니다. response_format=verbose_json이 필요합니다. 대괄호 없는 반복 필드명 timestamp_granularities도 허용됩니다. |
chunking_strategy | auto, VAD 객체 또는 null | 생략 | Whisper 적용 여부가 해결되지 않은 공통 오디오 schema 필드입니다. 검증된 처리에서는 생략합니다. 명시적 auto는 실제 호환성 검증에 실패했습니다. |
stream | 불리언 또는 null | false | Whisper-1에서 무시됩니다. SSE 또는 부분 전사문을 생성하지 않습니다. |
VAD 객체에는 필수 type: "server_vad", 선택적 정수 prefix_padding_ms(문서상 기본값 300), 선택적 정수 silence_duration_ms(문서상 기본값 200), 0~1의 선택적 숫자 threshold(문서상 기본값 0.5)가 있습니다. 문서에 없는 정수 범위는 강제하지 않습니다. 생략한 방식은 생략된 상태를 유지합니다. 객체 기본값이 있다고 요청 기본값이 auto가 되지는 않습니다.
SDK 호환성을 위해 VAD 객체를 하나의 JSON multipart 파트 또는 chunking_strategy[type], chunking_strategy[prefix_padding_ms], chunking_strategy[silence_duration_ms], chunking_strategy[threshold]로 인코딩할 수 있습니다. 두 인코딩을 섞지 않습니다. 이러한 필드 구조를 허용한다고 이 모델에서 VAD가 작동한다는 뜻은 아닙니다.
선택적 텍스트 필드는 생략하며, multipart 문자열 null을 보내지 않습니다. 알 수 없는 필드와 모델에 해당하지 않는 필드는 버립니다. 특히 diarized_json, 화자 참조 제어, logprobs, 실시간 이벤트는 Whisper-1 기능이 아닙니다. 중복 스칼라 필드는 유효하지 않습니다.
파일 제한
문서에 명시된 오디오 형식은 FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV, WebM입니다. 현재 업로드 상한은 26,214,400바이트(25 MiB)입니다. OpenAI Audio API FAQ는 레거시 Whisper-1 업로드의 최대 요청 크기를 25 MiB로 명시합니다. multipart 필드를 위한 공간을 남기도록 파일을 상한보다 작게 유지합니다. 파일에는 읽을 수 있는 오디오와 0보다 크고 측정 가능한 길이가 있어야 합니다. 확장자만으로 유효한 오디오임을 증명할 수는 없습니다.
로컬에는 별도의 1시간 상한, 고정 샘플링 레이트 요구사항 또는 모노 전용 제한이 없습니다. 다만 파일 크기 때문에 긴 녹음을 분할해야 할 수 있습니다. 분할한 녹음의 경계를 검토하여 음성이 누락되거나 중복되지 않도록 합니다.
영어 번역
curl https://api.seedrouter.ai/v1/audio/translations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-F model=whisper-1 \
-F [email protected] \
-F response_format=text \
-F temperature=0번역에는 file, model, prompt, response_format, temperature의 5개 필드가 있으며 타입과 범위는 위와 같습니다. 선택적 프롬프트는 영어여야 합니다. 대상 언어는 선택할 수 없습니다. 이 엔드포인트는 language, 타임스탬프 제어, 청크 제어 등 전사 전용 필드를 버립니다. 영어 입력 번역 검사가 성공했다고 모든 원본 언어의 정확성이 입증되는 것은 아닙니다.
다운로드 결과 필드
| 형식 | 내용 |
|---|---|
json | text를 포함한 객체입니다. 전사에는 usage: {type: "duration", seconds: number}가 포함될 수도 있습니다. |
text | 일반 텍스트 전사문입니다. |
srt | SRT 타임코드가 있는 번호 매긴 자막 큐입니다. |
vtt | WebVTT 자막입니다. |
verbose_json | text, language, 초 단위 duration입니다. 선택적 segments와 전사용 words, 길이 usage가 포함될 수 있습니다. |
각 단어에는 word, start, end가 있습니다. 각 구간에는 id, seek, start, end, text, tokens, temperature, avg_logprob, compression_ratio, no_speech_prob가 있습니다. start와 end는 초 단위입니다. 구간은 화자를 식별하지 않습니다. 전사 전용 상수 task: "transcribe"가 있을 수 있습니다. 번역 결과는 전사 전용 words와 usage를 생략합니다. 오디오 측정값이나 전사문을 예상 답에 맞추어 다시 쓰지 않습니다.
과금
두 작업 모두 측정된 입력 길이를 사용합니다. 녹음별 오디오 계량 단위는 round(ceil(seconds) × 1000 / 60)입니다. 이 단위에 실시간 단가를 곱합니다. 전사 텍스트를 세는 단위가 아닙니다. 예를 들어 15초는 250단위, 15.1초는 267단위입니다. 페이지와 Playground는 같은 실시간 요율을 읽습니다. 실패한 요청에는 요금이 부과되지 않습니다.
검증 상태
확인 날짜는 2026년 10월 19일입니다. 로컬 종단 간 테스트에서 전사 출력 형식 5가지와 verbose_json 번역을 완료했으며, 소유자의 결과 다운로드 및 정확한 계정 차감도 확인했습니다. 단어 및 구간 타임스탬프를 동시에 요청한 전사도 성공했습니다. FLAC, OGG, M4A, MP4와 1초 미만/소수 초 WAV 업로드는 각각 실제 호환성 검사를 통과했습니다.
명시적 chunking_strategy=auto는 거부되었습니다. WebM, MPEG와 VAD, MPGA와 stream=true가 관련된 세 제출 사례는 성공하지 못했습니다. 이 실패만으로 조합 중 어떤 설정이 거부를 일으켰는지 알 수는 없습니다. 해당 형식과 옵션은 미검증 상태입니다. 서비스는 명시적으로 요청한 방식을 몰래 바꾸지 않습니다. 번역 테스트는 영어 입력을 사용했으므로 언어 간 번역 품질은 측정되지 않았습니다. schema를 허용한다고 모든 조합이 실제 테스트를 통과한 것으로 보지 않습니다.
오류와 복구
유효하지 않은 파일 및 매개변수 조합은 작업 생성 전에 거부됩니다. API 오류에는 숫자 code와 읽을 수 있는 message가 있습니다. 오류 코드를 확인합니다. 접수 후에는 작업의 종료 상태를 조회합니다. 제출 결과가 불확실하면 다시 제출하기 전에 기존 작업을 찾습니다. 실패한 작업에는 요금이 부과되지 않습니다.
계약 출처
OpenAI는 자체 API의 Whisper를 2027년 2월 26일 종료한다고 발표했습니다. 이 발표가 본 서비스의 종료 날짜를 정하는 것은 아닙니다. OpenAI 지원 중단 공지를 확인합니다.
