CLOVA Speech API

CLOVA Speech 서비스의 장문 인식 개발 관련 내용


1. VPC >  Object Storage > Bucket Management 메뉴 클릭  버킷 생성
2. VPC > CLOVA Speech > Domain 메뉴 클릭  장문 인식 도메인 생성
3. Storage 설정 > 1번에 생성한 버킷 경로 추가
4. Bucket Management - 음성 파일 업로드 


build.gradle 추가
// CLOVA Speech 
implementation 'org.apache.httpcomponents:httpclient:4.5.12'
implementation 'org.apache.httpcomponents:httpmime:4.3.1'
implementation 'com.google.code.gson:gson:2.8.5'


public class ClovaSpeechToTextAPI {
    // Clova Speech secret key
    private static final String CLOVA_SPEECH_SECRET_KEY = "Clova Speech secret key";
    // Clova Speech invoke URL
    private static final String CLOVA_SPEECH_INVOKE_URL = "Clova Speech invoke URL";

    public static JSONObject convertSpeechToText(String fileUrl) throws IOException, InterruptedException {
        HttpClient client = HttpClient.newHttpClient();

        JSONObject requestBody = new JSONObject();
        requestBody.put("url", fileUrl);
        requestBody.put("language", "ko-KR");
        requestBody.put("completion", "sync");

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(CLOVA_SPEECH_INVOKE_URL + "/recognizer/url"))
                .header("X-CLOVASPEECH-API-KEY", CLOVA_SPEECH_SECRET_KEY)
                .header("Content-Type", "application/json")
                .POST(HttpRequest.BodyPublishers.ofString(requestBody.toString()))
                .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        return new JSONObject(response.body());
    }

    public static void main(String[] args) {
        // Object Storage 음성 파일 경로 설정
        // 권한 관리 - 전체 공개로 변경
        String fileUrl = "업로드한 음성 파일 URL"; // 버킷에서 확인
        try {
            JSONObject response = convertSpeechToText(fileUrl);
            System.out.println(response.toString(4));
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}


------
 결과값
------

"speakers": [
        {
            "edited": false,
            "name": "A",
            "label": "1"
        },
        {
            "edited": false,
            "name": "B",
            "label": "2"
        }
    ],
"progress": 100,
"text": " 안녕하세요. 수고 많으십니다. OO은행 김OO 대리라고 하는데요.담당자분 혹시 통화 가능하실까요? 지금 법인 담당하시는 분이 오늘 휴가셔가지고 그러시군요.
 


speakers를 통해서 누가 말했는지 표시를 해주면 좋을거 같다는 생각이 들었다. 추가해보자!

CLOVA Speech Docs

https://api.ncloud-docs.com/docs/ai-application-service-clovaspeech-example01