gpt-4o-transcribe-diarize
GPT-4o Transcribe Diarize는 녹음된 발화를 화자 레이블과 시간이 표시된 구간을 갖춘 텍스트로 변환합니다. 누가 언제 말했는지 보여 주는 전사가 필요한 회의, 인터뷰, 여러 사람이 참여한 녹음에 적합하며, 알려진 화자를 위한 짧은 음성 참조를 선택적으로 제공할 수 있습니다.
모델 소개
이 설명은 모델의 기능을 다룹니다. Ailoot에서 사용할 수 있는 입력, 출력 및 옵션은 아래에 선택한 메서드별로 표시됩니다.
GPT-4o Transcribe Diarize는 화자 분리가 내장된 OpenAI의 자동 음성 인식 모델입니다. 전사한 오디오 구간을 대화의 서로 다른 화자와 연결합니다. 유용한 결과는 단어가 연속된 덩어리가 아니라 화자와 시간별로 정리된 전사입니다. 회의, 인터뷰, 여러 사람의 토론처럼 화자 레이블이 필요한 녹음된 발화를 위한 모델입니다.
완료된 녹음 준비하기
전사할 녹음을 제공하세요. 문서화된 파일 작업 흐름은 MP3, MP4, MPEG, MPGA, M4A, WAV, WebM을 입력받으며 파일 크기는 25 MB로 제한됩니다. 화자의 발언 차례, 이름, 불분명한 구절을 실제 오디오와 대조할 수 있도록 원본 녹음을 보관하세요.
회의에는 발언 차례를 구분하는 데 도움이 되는 짧은 쉼을 잘라내지 말고 대화의 순서를 유지하세요. 인터뷰에는 작업에서 질문과 응답의 관계가 필요하다면 둘을 함께 유지합니다. 오디오 준비는 화자 레이블이 있는 결과에 중요한 정보를 없애지 않으면서 발화를 들을 수 있게 해야 합니다.
이는 파일 전사 작업 흐름입니다. 완료된 녹음을 처리하는 일과 아직 들어오는 오디오 스트림을 인식하는 일은 서로 다른 작업이며, 이 모델의 화자 레이블 지정은 Realtime 전사 세션에서 지원되지 않습니다.
화자 레이블이 있는 전사 요청하기
diarized_json 결과 형식은 화자 식별 레이블과 시작·종료 시간이 포함된 구간을 반환합니다. 각 구간에는 전사된 텍스트도 포함됩니다. 단어를 녹음의 해당 부분과 연결할 수 있도록 이 필드들을 함께 유지하세요.
유용한 회의 전사에는 구간 순서를 유지하고 각 화자의 말을 시간과 함께 표시합니다. 이후 작업에서 이 전사로 회의록이나 실행 항목을 작성할 수 있지만, 화자 분리 자체가 회의의 합의 내용을 결정하거나 검증된 요약을 생성하는 것은 아닙니다.
화자 레이블은 모델이 발화를 묶은 방식을 나타냅니다. 사람들이 서로 말을 끊거나 짧게 말하거나 발화가 겹치는 전환 지점을 확인하세요. 구조가 잘 잡힌 결과는 탐색과 검토에 도움이 되지만, 특정 화자에게 귀속한 내용은 여전히 원본 오디오를 들어 확인해야 할 수 있습니다.
알려진 화자의 참조 음성
문서화된 작업 흐름은 이름을 지정한 화자 참조 음성을 최대 네 개 입력받을 수 있습니다. 각 참조는 기본 업로드에서 지원하는 형식의 2–10초짜리 짧은 오디오 클립입니다. 구간을 알려진 화자와 연결할 수 있도록 이름과 참조 음성을 함께 제공합니다.
의도한 화자의 음성이 명확하게 담긴 참조를 준비하고, 전사에서 사용할 레이블과 이름을 일치시키세요. 인터뷰에서는 진행자의 참조 음성이 있으면 모든 참여자를 익명 레이블로 바꾸지 않고 화자 레이블이 있는 결과를 정리하는 데 도움이 됩니다. 참조 음성은 화자 귀속을 위한 입력이며, 일반적인 음성 복제 작업이나 개인의 신원 증명이 아닙니다.
화자에게 이름을 붙이는 일과 실제 발언을 편집하는 일을 혼동하지 마세요. 유용한 출력은 여전히 녹음의 내용과 실제 발언 순서를 보존해야 합니다.
구간 분할과 모델 한도
30초보다 긴 오디오에는 개발사가 구간 분할 전략을 요구합니다. 자동 분할이나 음성 활동 감지 설정을 사용할 수 있습니다. 이 요구 사항은 최대 녹음 시간이 아니며, 긴 입력을 처리용으로 나누는 방식을 설명합니다.
모델 카드에는 16,000토큰의 컨텍스트 창과 2,000토큰의 최대 출력이 명시되어 있습니다. 이는 모델 토큰 한도이며, 파일 작업 흐름의 25 MB 업로드 한도 및 분할 기준 시간과는 별개입니다. 모든 녹음에 적용되는 임의의 분 단위 시간으로 변환해서는 안 됩니다.
긴 전사를 조합하거나 살펴볼 때는 시간과 구간 식별 정보를 유지하세요. 제출 전에 녹음을 나눴다면 각 부분과 원본 오디오의 관계를 보관해, 부분 내 타임스탬프를 전체 대화의 위치와 혼동하지 않게 합니다.
확정된 구간 스트리밍하기
파일 전사 작업 흐름은 녹음을 처리하는 동안 텍스트를 스트리밍할 수 있습니다. 화자 레이블이 있는 스트리밍에서는 완료된 구간이 구간 이벤트를 생성합니다. 텍스트 델타에는 구간 식별자가 포함되지만 부분적인 화자 배정은 포함되지 않습니다. 화자는 구간이 확정될 때 배정됩니다.
이 차이는 화면 표시에 중요합니다. 모델이 구간을 완료하기 전에 불확실한 화자 레이블을 붙이지 말고, 임시 텍스트와 확정된 화자 발언을 서로 다른 상태로 표시하세요. 이후 편집이나 분석에 전사가 필요하다면 완료된 결과를 보관합니다.
모델과 출력의 범위
이 프로필은 화자 분리 모델이며, 일반 GPT-4o 전사, Mini 전사, 음성 합성, 실시간 대화 모델과 구분됩니다. 전사 프롬프트는 지원하지 않습니다. 용어 검토나 수정은 원본 오디오와 대조하는 별도의 단계로 유지하세요. 개발사 인터페이스는 녹음된 오디오를 텍스트로 전사합니다. 음성 응답을 생성하거나 별도의 오디오 번역 작업 흐름을 통해 녹음을 번역하지 않습니다.
내용과 화자 구조가 모두 필요한 전사에 사용하세요. 이름, 전문 용어, 숫자, 발언 차례의 경계, 화자 귀속을 녹음과 대조합니다. 오디오, 선택한 결과 형식, 참조 음성, 완료된 전사를 보관해 구체적인 구절 하나나 화자 배정을 대상으로 수정할 수 있게 하세요.
Ailoot Ultra · 음성 인식 POST /v1/audio/transcriptions openai/gpt-4o-transcribe-diarize
openai/gpt-4o-transcribe-diarize
openai/gpt-4o-transcribe-diarize시작하기
GPT-4o Transcribe Diarize는 녹음된 발화를 화자 레이블과 시간이 표시된 구간을 갖춘 텍스트로 변환합니다. 누가 언제 말했는지 보여 주는 전사가 필요한 회의, 인터뷰, 여러 사람이 참여한 녹음에 적합하며, 알려진 화자를 위한 짧은 음성 참조를 선택적으로 제공할 수 있습니다.
- 허용 입력
- 오디오
- 결과
- transcription
Ailoot에서 사용 가능 · 입력 및 메서드
Ailoot Ultra · 음성 인식 POST /v1/audio/transcriptions
- 입력
audio- 출력
transcription- 출력 형식
- json
| 필드 | 유형 | 요건 | 값과 한도 | 기본값 |
|---|---|---|---|---|
필드model | 유형string | 요건필수 | 값과 한도 openai/gpt-4o-transcribe-diarize | 기본값— |
필드file | 유형file | 요건필수 | 값과 한도 최대 바이트 수: 26,214,400 MIME 유형: audio/mpeg 파일 확장자: .mp3 최대 길이(초): 30 | 기본값— |
필드response_format | 유형string | 요건필수 | 값과 한도 diarized_json | 기본값— |
입력 자료 조합
diarized_transcription
메서드 매개변수와 수명 주기
| 매개변수 | 명세 |
|---|---|
매개변수content_type | 명세multipart/form-data |
매개변수required | 명세model, file, response_format |
매개변수file_formats | 명세mp3 |
매개변수max_audio_seconds | 명세30 |
매개변수max_bytes | 명세26214400 |
매개변수response_format | 명세diarized_json |
매개변수other_options | 명세false |
매개변수material_types | 명세audio |
매개변수additional_properties | 명세false |
매개변수form_string_maximum_bytes | 명세256 |
메서드 별칭: /audio/transcriptions
수명 주기: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · 실제로 반환된 task_id 또는 미디어 라이브러리 기록
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
실제 녹음과 일치하는 형식을 사용하세요.
전사문 전체, 구간, 화자 ID 및 시간 정보를 보존하세요.
요금
요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.
- 빠른 모드
- 미지정 빠른 모드를 선택한 경우
- Flex 모드
- 미지정 flex 모드를 선택한 경우
- 최대 추론 수준
- 미지정 최대 추론 수준에 default 조정값을 적용하는 경우
Ailoot 요금
설정별 가격
각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.
| 설정 | 요금표 | 과금 단위 | 요금 |
|---|---|---|---|
| 설정기본 토큰 요금 | 요금표기본 요금 | 과금 단위— | 요금 입력 · 입력 토큰 — / 1K 토큰 출력 · 출력 토큰 — / 1K 토큰 입력 · 캐시 읽기 — / 1K 토큰 입력 · 캐시 쓰기 — / 1K 토큰 입력 · 캐시 쓰기, 1시간 — / 1K 토큰 |
| 설정Ultra | 요금표— | 과금 단위/ 1K 오디오 토큰 | 요금 입력 · 오디오 입력 토큰 $0.012 / 1K 오디오 토큰 |
| 설정Ultra | 요금표— | 과금 단위/ 1K 오디오 토큰 | 요금 출력 · 오디오 출력 토큰 $0.02 / 1K 오디오 토큰 |
Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. 금액 확보와 정산 방식 →
요청 예제
Ailoot Ultra · 음성 인식
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_AUDIO_FILE:?Set the path to your actual MP3 recording}"
export AILOOT_AUDIO_FILE
python3 - <<'PY_REQUEST'
import os
from pathlib import Path
p=Path(os.environ["AILOOT_AUDIO_FILE"])
if not p.is_file() or p.suffix.lower()!=".mp3":raise SystemExit("Choose an existing MP3 recording")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $AILOOT_API_KEY" \
--form-string model=openai/gpt-4o-transcribe-diarize -F "file=@$AILOOT_AUDIO_FILE" --form-string response_format=diarized_json \
-D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text())))
PY_RESULT
결과 수신 및 저장
Ailoot Ultra · 음성 인식
json
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
기타 콘텐츠 조회
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path('result.json').read_text())
urls=[]
if isinstance(r.get('asset_url'),str) and r['asset_url']:urls.append(('transcript',r['asset_url']))
for label,path in urls:
u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)
if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')
target=Path('owned-'+label+'.bin')
subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)
print('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')
PY_ASSETS
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-assets.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_MEDIA_TASK_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_MEDIA_TASK_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/tasks/$resource_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-task.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-task.json").read_text())))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_ASSET_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_ASSET_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/assets/$resource_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-asset.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-asset.json").read_text())))
PY_RESULT
완료된 결과 모두 보관
반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.
텍스트만이 아니라 JSON 전체를 보존하세요. 사용 가능한 모든 구간/화자/타임스탬프와 실제 작업/자산 식별자를 유지하세요.
원래 응답을 확인해야 할 경우
다시 제출하지 말고 정산 대조를 위해 최초 operation_id/X-Client-Request-ID를 보관하세요. 전용 오디오 폴링 라우트는 없습니다.
응답 필드
| 필드 | 유형 |
|---|---|
필드text | 유형string |
필드segments[] | 유형object |
필드task_id | 유형string |
필드asset_url | 유형string |
필드usage | 유형object |
필드segments[].speaker | 유형string |
필드segments[].start | 유형number |
필드segments[].end | 유형number |
오류와 다음 단계
| 응답 | 조건 | 다음 단계 |
|---|---|---|
응답400 · invalid_request_error | 조건필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음 | 다음 단계새 생성 요청 전에 표시된 필드를 수정하세요. |
응답server_error | 조건반환된 응답에 작업 또는 결과 확인이 필요하다고 표시되어 있습니다 | 다음 단계최초로 반환된 작업/태스크 ID, 요청 헤더와 응답을 보관하고, 지원되는 조회 방식으로 해당 최초 작업을 계속 조회하세요. 생성 요청을 다시 제출하지 마세요. |
별칭
모델 별칭
Ailoot Ultra openai/gpt-4o-transcribe-diarize
메서드 경로 별칭
/audio/transcriptions
관련 호출용 ID
FAQ · gpt-4o-transcribe-diarize
- 어떤 입력과 결과를 사용할 수 있나요?
POST /v1/audio/transcriptions·openai/gpt-4o-transcribe-diarize:audio→transcription- 요청은 어떤 필드를 사용하나요?
POST /v1/audio/transcriptions·openai/gpt-4o-transcribe-diarize:model,file,response_format