Skip to main content

일반 STT

일반 STT API는 음성 파일을 텍스트로 변환할 수 있는 API입니다. 일반 STT API의 경우, HTTP 기반의 REST API로 구현되어 있습니다.

지원 포맷

tip

일반 STT API는 음성 파일 포맷 mp4, m4a, mp3, amr, flac, wav 을 지원하고 있습니다.

인증 토큰 발급

일반 STT API는 인증 가이드를 통해 토큰을 발급받은 뒤 사용하실 수 있습니다.


API 목록

MethodURLDescription
POST/v1/transcribe파일 전사 요청
GET/v1/transcribe/{TRANSCRIBE_ID}파일 전사 결과 조회

1) [POST] /v1/transcribe

저장된 음성 파일에 대해 전사를 요청하는 API입니다.

HTTP 요청

POST https://openapi.vito.ai/v1/transcribe

요청 헤더

Authorization: bearer {YOUR_JWT_TOKEN}
  • scheme: bearer
  • bearerFormat: JWT

요청 바디 (Request body)

content-type: multipart/form-data

FieldTypeRequired
configRequestConfigrequired
fileBinaryrequired

RequestConfig

NameDescTypeRequiredValueDefault
use_diarization화자 분리 사용 여부booleanoptionalfalse
diarization.spk_count화자수integeroptional
use_multi_channel다중 채널 파일 처리 옵션 여부booleanoptionalfalse
use_itn영어/숫자/단위 변환 여부booleanoptionaltrue
use_disfluency_filter간투어 필터 사용 여부booleanoptionaltrue
use_profanity_filter비속어 필터 사용 여부booleanoptionalfalse
use_paragraph_splitter문단 나누기 사용 여부booleanoptionaltrue
paragraph_splitter.max문단의 최대 문자 길이integeroptional1 이상의 정수50
domain음성파일의 종류stringoptionalGENERAL도메인 설정
use_word_timestamp단어별 Timestamp 사용 여부booleanoptionalfalse
keywords키워드 부스팅용 단어 리스트arrayoptional키워드 부스팅
caution

일반 STT API의 경우 아래와 같은 제약 사항이 있습니다.
최대 인식파일 크기: 2GB, 최대 인식가능 시간: 4시간.

샘플 코드 1


curl -X "POST" \
"https://openapi.vito.ai/v1/transcribe" \
-H "accept: application/json" \
-H "Authorization: Bearer ${YOUR_JWT_TOKEN}" \
-H "Content-Type: multipart/form-data" \
-F "file=@sample.wav" \
-F 'config={}'

샘플 코드 2


curl -X "POST" \
"https://openapi.vito.ai/v1/transcribe" \
-H "accept: application/json" \
-H "Authorization: Bearer ${YOUR_JWT_TOKEN}" \
-H "Content-Type: multipart/form-data" \
-F "file=@sample.wav" \
-F 'config={
"use_diarization": true,
"diarization": {
"spk_count": 2
},
"use_multi_channel": false,
"use_itn": false,
"use_disfluency_filter": false,
"use_profanity_filter": false,
"use_paragraph_splitter": true,
"paragraph_splitter": {
"max": 50
}
}'

응답 바디 (Response Body)

응답이 성공한 경우 HTTP Status 200과 함께 아래와 같은 응답을 내려줍니다.

{
"id": "{TRANSCRIBE_ID}"
}

오류 코드

HTTP StatusCodeNotes
400H0001잘못된 파라미터 요청
400H0010지원하지 않는 파일 포맷
401H0002유효하지 않은 토큰
413H0005파일 사이즈 초과
413H0006파일 길이 초과
429A0001사용량 초과
500E500서버 오류

아래는 응답이 실패한 경우 가운데 하나의 예시입니다.

{
"code": "H0001",
"msg": "unexpected end of JSON input"
}

2) [GET] /v1/transcribe/{TRANSCRIBE_ID}

  • 음성 파일의 전사 결과를 조회하는 API입니다. 전사 요청 API에서 응답받은 TRANSCRIBE_ID를 사용하여 전사 결과를 조회할 수 있습니다.

HTTP 요청

GET https://openapi.vito.ai/v1/transcribe/{TRANSCRIBE_ID}

요청 헤더

Authorization: bearer {YOUR_JWT_TOKEN}
  • scheme: bearer
  • bearerFormat: JWT

샘플 코드


curl -X "GET" \
"https://openapi.vito.ai/v1/transcribe/${TRANSCRIBE_ID}" \
-H "accept: application/json" \
-H "Authorization: Bearer ${YOUR_JWT_TOKEN}"

응답 바디 (Response Body)

응답이 성공한 경우 HTTP Status 200과 함께 아래와 같은 응답을 내려줍니다.

NameDescTypeValue
idtranscribe idstring
status전사 결과 상태stringtranscribing, completed, failed
results.utterances발화 정보array
results.utterances.start_at발화 시작 시각 (ms)integer
results.utterances.duration발화 duration (ms)integer
results.utterances.msg발화 텍스트string
results.utterances.spk화자/채널 IDinteger
tip

일반 STT API의 경우, 긴 음성 파일도 지원하기 위하여 Polling 방식으로 구현되어 있습니다. 전사 요청 API에서 응답받은 {TRANSCRIBE_ID}의 상태 값이 transcribing인 경우, 최종 상태(completed 또는 failed)가 될 때까지 주기적으로 조회하여 변환 결과를 확인할 수 있습니다. 권장하는 Polling 주기는 5초입니다.

status: transcribing

{
"id": "{TRANSCRIBE_ID}",
"status": "transcribing"
}

status: completed

{
"id": "{TRANSCRIBE_ID}",
"status": "completed",
"results": {
"utterances": [
{
"start_at": 4737,
"duration": 2360,
"msg": "안녕하세요.",
"spk": 0
},
{
"start_at": 8197,
"duration": 3280,
"msg": "네, 안녕하세요? 반갑습니다.",
"spk": 1
}
]
}
}

오류 코드

HttpStatusCodeNotes
400H0001잘못된 파라미터 요청
401H0002유효하지 않은 토큰
403H0003권한 없음
404H0004전사 결과 없음
410H0007전사 결과 만료됨
500E500서버 오류

아래는 응답이 실패한 경우 가운데 하나의 예시입니다.

{
"code": "H0004",
"msg": "not found"
}