이해하기

Pado Speech는 영상 속 음성을 텍스트로 추출하여 자막 및 영상 편집 서비스를 만들 때 활용할 수 있는 음성 인식 API 서비스입니다. 음성 데이터는 API를 통해 Pado Speech API 엔진으로 전송되며, 해당 음성 데이터를 인식해서 텍스트로 변환하여 전달해줍니다. 입력 음성 데이터 포맷은 mp3, aac, ac3, ogg, flac, wav, avi, mp4, mov, wmv, flv, mkv를 지원합니다.

준비하기

ID와 API Key는 내 프로젝트에서 프로젝트를 등록해 발급받습니다.

새 프로젝트 등록하기

  • a. 내 프로젝트에서 Pado Speech 를 선택하고 필수 정보를 모두 입력하여 프로젝트를 추가합니다.
  • b. 등록한 프로젝트의 인증 정보 를 클릭해 ID와 API Key값을 확인합니다.

기존 프로젝트 확인하기

  • a. 내 프로젝트의 Pado Speech에서 등록된 프로젝트 중 사용할 프로젝트 설정 을 확인하고 필요시 정보를 수정합니다.
  • b. 등록한 프로젝트의 인증 정보 를 클릭해 ID와 API Key값을 확인합니다.

사용하기

Pado Speech API는 REST API이며, 음성인식할 음성 데이터를 HTTP 통신으로 음성인식 서버에 전달하면 됩니다. 음성인식 서버가 제공하는 REST API의 URI는 다음과 같으며 POST 방식으로 연결을 시도해야 합니다. Pado Speech API는 다음과 같은 방법으로 이용하실 수 있습니다.

API URL

Method
Request URI
POST
http://pado.rippleai.co/api/pado/speech/upload

요청

요청 헤더

헤더명
설명
Authorization
앱 등록시 발급받은 ID와 API Key를 base64로 encoding 한 후 앞에 basic을 붙여서 사용 ex) basic base64.encoding(`{id}:{api key}`)

요청 파라미터

파라미터명
데이터 타입
requirement
설명
타입
비고
media
file
required
분석 할 영상/음성 파일
multipart/form-data
speaker_seperation
boolean
optional
화자 분리 여부
application/json
default : false

응답

응답 파라미터

파라미터명
데이터 타입
설명
비고
texts
string
전체 음성 인식 결과
words
List<String>
전체 음성 인식 결과 단어 리스트
timestamps
List<List<Float>>
한글자 단위 시간 리스트
wordstamps
List<List<Float>>
한단어 단위 시간 리스트
confidences
List<Object>
인식 단위별 세부 결과(15초단위)

confidences

파라미터명
데이터 타입
설명
비고
seq
string
단위별 인식 결과
timestamps
List<List<Float>>
한글자 단위 시간 리스트
char_conf
List<Float>
글자별 신뢰도
sent_conf
Float
문장 신뢰도
현재 준비중

예시코드

Java
Python
JavaScript
//pom.xml
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>${version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>${version}</version>
</dependency>
</dependencies>
//java
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.io.IOException;
import java.util.Base64;
@RestController
public class ApiTest {
@PostMapping("/api_test")
public void testTest() {
String clientId = "${client_id}";
String apiKey = "${api_key}";
String filepath = "${file_path}";
String requestURI = "https://pado.rippleai.co/api/pado/speech/upload";
HttpClient client = HttpClientBuilder.create().build();
HttpPost request = new HttpPost(requestURI);
String beforeEncoding = clientId + ":" + apiKey;
String authorization = "basic " + Base64.getEncoder()
.encodeToString(beforeEncoding.getBytes());
request.addHeader("Authorization", authorization);
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
multipartEntityBuilder
.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
File file = new File(filepath);
FileBody body = new FileBody(file);
multipartEntityBuilder.addPart("media", body);
request.setEntity(multipartEntityBuilder.build());
try {
HttpResponse response = client.execute(request);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String body2 = responseHandler.handleResponse(response);
System.out.println("**************************************");
System.out.println(body2);
} catch (IOException e) {
System.out.println("api 통신 불가\ne.getMessage() = " + e.getMessage());
}
}
}

API 오류

confidences

HttpStatusCode
ErrorMessage
Description
AP001
400
요청헤더의 Authorization 값이 올바르지 않을 경우
AP002
404
해당 Authorization의 정보가 없을 경우
AP003
400
요청된 헤더 정보로 생성된 Project가 존재 하지 않을 경우
AP004
404
사용하는 project에 service url이 등록되어있지 않을경우
MP001
400
이용 정지인 경우
MP001
500
사용한 파일에 대한 분석이 불가한 경우(시스템 관리자 문의)
AP003
500
예기치 못한 에러(시스템 관리자에게 문의)
AP004
400
지원하지 않는 확장자의 파일을 넣었을 경우