재우니의 블로그

 

 

CLOVA Speech Recognition은 사람의 목소리를 텍스트로 변환하는 네이버 클라우드 플랫폼의 서비스입니다. CLOVA Speech Recognition 서비스에서는 비서 애플리케이션, 챗봇, 음성 메모 등에 활용하는 다양한 음성 인식 기능에 대한 API를 RESTful 형태로 제공합니다. 모바일 환경에서는 사용자의 음성 입력을 전달받기 위해 Android와 iOS SDK 형태로 API를 제공합니다

 

네이버는 15초당 4원으로 15초 단위로 계산하게 됩니다.
 

NAVER 시간대별 금액

시간 금액
1 시간 960원
10 시간 9,600원
30 시간 28,800원
100 시간 96,000원
1,000 시간 960,000원
10,000 시간 9,600,000원

 

 

naver speech to text api 주소입니다.

https://www.ncloud.com/product/aiService/csr

 

NAVER CLOUD PLATFORM

cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

www.ncloud.com

 

 

 

 

 

CLOVA Speech Recognition (CSR) STT (Speech-to-Text) API를 사용하는 예제를 소개합니다.

STT (Speech-to-Text) API

음성 인식에 사용할 언어와 음성 데이터를 입력받아, 그 인식 결과를 텍스트로 변환하는 STT (Speech-to-Text) API 예제를 설명합니다.

Java

Java 기반의 STT (Speech-to-Text) API 예제 코드는 다음과 같습니다.

 

 

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class Main {

    public static void main(String[] args) {
        String clientId = "YOUR_CLIENT_ID";             // Application Client ID";
        String clientSecret = "YOUR_CLIENT_SECRET";     // Application Client Secret";

        try {
            String imgFile = "음성 파일 경로";
            File voiceFile = new File(imgFile);

            String language = "Kor";        // 언어 코드 ( Kor, Jpn, Eng, Chn )
            String apiURL = "https://naveropenapi.apigw.ntruss.com/recog/v1/stt?lang=" + language;
            URL url = new URL(apiURL);

            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            conn.setUseCaches(false);
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestProperty("Content-Type", "application/octet-stream");
            conn.setRequestProperty("X-NCP-APIGW-API-KEY-ID", clientId);
            conn.setRequestProperty("X-NCP-APIGW-API-KEY", clientSecret);

            OutputStream outputStream = conn.getOutputStream();
            FileInputStream inputStream = new FileInputStream(voiceFile);
            byte[] buffer = new byte[4096];
            int bytesRead = -1;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            outputStream.flush();
            inputStream.close();
            BufferedReader br = null;
            int responseCode = conn.getResponseCode();
            if(responseCode == 200) { // 정상 호출
                br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            } else {  // 오류 발생
                System.out.println("error!!!!!!! responseCode= " + responseCode);
                br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            }
            String inputLine;

            if(br != null) {
                StringBuffer response = new StringBuffer();
                while ((inputLine = br.readLine()) != null) {
                    response.append(inputLine);
                }
                br.close();
                System.out.println(response.toString());
            } else {
                System.out.println("error !!!");
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

 

Python

Python 기반의 STT (Speech-to-Text) API 예제 코드는 다음과 같습니다.

 

import sys
import requests
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
lang = "Kor" # 언어 코드 ( Kor, Jpn, Eng, Chn )
url = "https://naveropenapi.apigw.ntruss.com/recog/v1/stt?lang=" + lang
data = open('음성 파일 경로', 'rb')
headers = {
    "X-NCP-APIGW-API-KEY-ID": client_id,
    "X-NCP-APIGW-API-KEY": client_secret,
    "Content-Type": "application/octet-stream"
}
response = requests.post(url,  data=data, headers=headers)
rescode = response.status_code
if(rescode == 200):
    print (response.text)
else:
    print("Error : " + response.text)

 

 

PHP

PHP 기반의 STT (Speech-to-Text) API 예제 코드는 다음과 같습니다.

 

<?php

$curl = curl_init();
$file_path = "음성 파일 경로";

$lang = "Kor";  // 언어 코드 ( Kor, Jpn, Eng, Chn )
$client_id = "YOUR_CLIENT_KEY";
$client_secret = "YOUR_CLIENT_SECRET";

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://naveropenapi.apigw.ntruss.com/recog/v1/stt?lang=".$lang,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_POST => 1,
  CURLOPT_POSTFIELDS => file_get_contents($file_path),
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/octet-stream",
    "X-NCP-APIGW-API-KEY-ID: ".$client_id,
    "X-NCP-APIGW-API-KEY: ".$client_secret
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

?>

 

 

JavaScript

JavaScript 기반의 STT (Speech-to-Text) API 예제 코드는 다음과 같습니다.

 

const fs = require('fs');
const request = require('request');

const clientId = 'YOUR_CLIENT_ID';
const clientSecret = 'YOUR_CLIENT_SECRET';

// language => 언어 코드 ( Kor, Jpn, Eng, Chn )
function stt(language, filePath) {
    const url = `https://naveropenapi.apigw.ntruss.com/recog/v1/stt?lang=${language}`;
    const requestConfig = {
        url: url,
        method: 'POST',
        headers: {
            'Content-Type': 'application/octet-stream',
            'X-NCP-APIGW-API-KEY-ID': clientId,
            'X-NCP-APIGW-API-KEY': clientSecret
        },
        body: fs.createReadStream(filePath)
    };

    request(requestConfig, (err, response, body) => {
        if (err) {
            console.log(err);
            return;
        }

        console.log(response.statusCode);
        console.log(body);
    });
}

stt('Kor', '음성 파일 경로 (ex: ./test.wav)');

 

 

C#

C# 기반의 STT (Speech-to-Text) API 예제 코드는 다음과 같습니다.

 

using System;
using System.Net;
using System.Text;
using System.IO;
using System.Collections.Generic;
using System.Collections.Specialized;

namespace NaverAPI_Guide
{
    class APIExamSTT
    {
        static void Main(string[] args)
        {
            string FilePath = "YOUR_FILE_NAME";
            FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read);
            byte[] fileData = new byte[fs.Length];
            fs.Read(fileData, 0, fileData.Length);
            fs.Close();

            string lang = "Kor";    // 언어 코드 ( Kor, Jpn, Eng, Chn )
            string url = $"https://naveropenapi.apigw.ntruss.com/recog/v1/stt?lang={lang}";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Headers.Add("X-NCP-APIGW-API-KEY-ID", "YOUR_CLIENT_ID");
            request.Headers.Add("X-NCP-APIGW-API-KEY", "YOUR_CLIENT_SECRET");
            request.Method = "POST";
            request.ContentType = "application/octet-stream";
            request.ContentLength = fileData.Length;
            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(fileData, 0, fileData.Length);
                requestStream.Close();
            }
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream stream = response.GetResponseStream();
            StreamReader reader = new StreamReader(stream, Encoding.UTF8);
            string text = reader.ReadToEnd();
            stream.Close();
            response.Close();
            reader.Close();
            Console.WriteLine(text);
        }
    }
}

 

 

 

https://api.ncloud-docs.com/docs/ai-naver-clovaspeechrecognition-stt-api-example

 

STT (Speech-to-Text) 예제

 

api.ncloud-docs.com