Skip to content

긴 음성 변환하기

1. 소개

최대 4시간 길이의 긴 음성 데이터를 텍스트로 변환하여 제공하는 서비스입니다. 이 API는 비동기화 방식이 사용되어 동작하며, 이를 통해 음성 데이터에서 얻은 텍스트를 활용하여 응용 프로그램을 개발하거나 자동 음성 텍스트 변환 서비스를 구축할 수 있습니다.

WARNING

⚠️ 노래 음원 혹은 배경음악이 크게 들리는 오디오는 텍스트 변환을 지원하지 않습니다.

2. 예제

아래는 간단한 사용 예제입니다. 이 예제에서는 긴 음성 파일을 API에 전송하고, API는 해당 음성을 텍스트로 변환하여 응답합니다.

POST

shell
curl -X POST 'https://apis.daglo.ai/stt/v1/async/transcripts' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API_TOKEN>' \
--data '{
    "audio": {
        "source": {
            "url": "https://storage.googleapis.com/bkt-actionpower-examples/audio/actionpower_hello.wav"
        }
    }
}'
text
{"rid":"12345678-abcd-efgh-1234-abcdefghijkl"}

GET

shell
curl 'https://apis.daglo.ai/stt/v1/async/transcripts/<RID>' \
  --header 'Authorization: Bearer <API_TOKEN>'
text
{
    "rid": "12345678-abcd-efgh-1234-abcdefghijkl",
    "status": "transcribed",
    "sttResults": [
        {
            "transcript": "안녕하세요. 액션 파워입니다. 음성 인식의 선두주자 액션 파워의 기술을 만나보세요. ",
            "words": [
                {
                    "word": "안녕하세요. ",
                    "startTime": {
                        "nanos": 60000000,
                        "seconds": "0"
                    },
                    "endTime": {
                        "nanos": 860000000,
                        "seconds": "0"
                    },
                    "segmentId": "1"
                },
                {
                    "word": "액션 ",
                    "startTime": {
                        "nanos": 820000000,
                        "seconds": "0"
                    },
                    "endTime": {
                        "nanos": 419999999,
                        "seconds": "1"
                    },
                    "segmentId": "2"
                },
                {
                    "word": "파워입니다. ",
                    "startTime": {
                        "nanos": 379999999,
                        "seconds": "1"
                    },
                    "endTime": {
                        "nanos": 20000000,
                        "seconds": "2"
                    },
                    "segmentId": "2"
                },
                {
                    "word": "음성 ",
                    "startTime": {
                        "nanos": 990000000,
                        "seconds": "1"
                    },
                    "endTime": {
                        "nanos": 509999999,
                        "seconds": "2"
                    },
                    "segmentId": "3"
                },
                {
                    "word": "인식의 ",
                    "startTime": {
                        "nanos": 470000000,
                        "seconds": "2"
                    },
                    "endTime": {
                        "nanos": 830000000,
                        "seconds": "2"
                    },
                    "segmentId": "3"
                },
                {
                    "word": "선두주자 ",
                    "startTime": {
                        "nanos": 790000000,
                        "seconds": "2"
                    },
                    "endTime": {
                        "nanos": 150000000,
                        "seconds": "4"
                    },
                    "segmentId": "3"
                },
                {
                    "word": "액션 ",
                    "startTime": {
                        "nanos": 110000000,
                        "seconds": "4"
                    },
                    "endTime": {
                        "nanos": 669999999,
                        "seconds": "4"
                    },
                    "segmentId": "3"
                },
                {
                    "word": "파워의 ",
                    "startTime": {
                        "nanos": 629999999,
                        "seconds": "4"
                    },
                    "endTime": {
                        "nanos": 950000000,
                        "seconds": "4"
                    },
                    "segmentId": "3"
                },
                {
                    "word": "기술을 ",
                    "startTime": {
                        "nanos": 950000000,
                        "seconds": "4"
                    },
                    "endTime": {
                        "nanos": 879999999,
                        "seconds": "5"
                    },
                    "segmentId": "3"
                },
                {
                    "word": "만나보세요. ",
                    "startTime": {
                        "nanos": 839999999,
                        "seconds": "5"
                    },
                    "endTime": {
                        "nanos": 479999999,
                        "seconds": "6"
                    },
                    "segmentId": "3"
                }
            ],
            "keywords": null
        }
    ]
}

3. 사용법

1) API Key 발급하기

  • API Console에 접속하여 회원가입 후 로그인합니다.
  • 토큰 메뉴에 들어가 새로운 토큰을 발급합니다.
  • 발급한 토큰 정보를 복사해 요청 시 인증 토큰 정보로 사용합니다.

2) 요청하기

  • 지정된 엔드포인트로 필요한 파라미터 정보를 포함해 요청합니다.
  • 보다 자세한 API 파라미터 정보는 API Reference를 참고해주세요.

a. POST Send long audio to transcribe

  • Endpoint
shell
POST https://apis.daglo.ai/stt/v1/async/transcripts

b. GET Get long audio transcription

  • Endpoint
shell
GET https://apis.daglo.ai/stt/v1/async/transcripts/{rid}

c. Callback으로 응답받기

  • 요청후 Callback으로 처리를 하는 경우, 서버에서 작업이 완료된 후 지정된 URL로 완료 상태를 전송합니다. 보다 자세한 내용은 Get(Polling)과 Callback 문서를 참고해주세요.

3) 지원 포맷

  • 파일 크기: 최대 2GB 이내
  • 파일 재생 시간: 4시간 이내
  • 지원 파일 포맷

🔊 오디오

.3gp, .3gpp .ac3, .aac, .aiff, .amr, .au, .flac, .m4a, .mp3, .mxf, .opus, .ra, .wav, .weba

📹 비디오

.asx, .avi, .ogm, .ogv, .m4v, .mov, .mp4, .mpeg, .mpg, .wmv

WARNING

⚠️ 포맷이 같더라도 실제 내용(인코딩)이 다를 경우 받아쓰기가 진행되지 않을 수 있습니다.

4) 응답받기

a. POST Send long audio to transcribe

  • Success
응답 코드 보기
  • 200
  • 204
    • No Content. 요청은 성공하였으나 반환한 결과가 없습니다.
    • 받아쓰기의 경우 받아쓰기는 완료되었으나, 결과가 비어있습니다.
  • Error
응답 코드 보기
  • 400: Bad Request. 요청 형식이 잘못 되었습니다.
  • 401: Unauthorized.
  • 403: Forbidden. 허용되지 않은 접근입니다.
  • 413: Payload Too Large. 요청이 너무 큽니다.
  • 415: Unsupported Media Type.
  • 429: Too Many Requests.
  • 500: Internal Server Error. 서버 오류입니다.
  • 503: 너무 많은 요청을 처리하고 있어 일시적으로 응답이 불가능한 상태입니다. 잠시 후 다시 시도해주세요.

b. GET Get long audio transcription

  • Endpoint

    shell
    GET https://apis.daglo.ai/stt/v1/async/transcripts/{rid}
  • Success

응답 코드 보기
  • 200
    • ai_requested: 요청이 시작되었습니다.
    • uploaded: 파일 업로드가 완료되었습니다.
    • file_processing: 파일을 전처리 중 입니다.
    • transcribing: 받아쓰기 중 입니다.
    • post_processing: 후처리 중 입니다.
    • transcribed: 받아쓰기가 완료되었습니다.
    • transcript_error: 받아쓰기 중 오류가 발생하였습니다. 잠시 기다렸다가 다시 요청해 주세요.
    • file_error: 파일에 오류가 있습니다. 파일 확인 후 다시 요청해 주세요.
  • 204
    • No Content. 요청은 성공하였으나 반환한 결과가 없습니다.
    • 받아쓰기의 경우 받아쓰기는 완료되었으나, 결과가 비어있습니다.
  • Error
응답 코드 보기
  • 401: Unauthorized.
  • 403: Forbidden. 허용되지 않은 접근입니다.
  • 404: Not Found.
  • 429: Too Many Requests.
  • 500: Internal Server Error. 서버 오류입니다.

c. Callback 으로 응답받기

요청 후 Callback으로 처리를 하는 경우, 서버에서 작업이 완료된 후 지정된 URL로 완료 상태를 전송합니다. 보다 자세한 내용은 Get(Polling)과 Callback 문서를 참고해주세요.

업데이트 이력

  • 20240902 ver1.0 API 문서가 작성되었습니다.