반응형
apidocs.ncloud.com/ko/ai-naver/clova_speech_recognition/stt/
stt (Speech-To-Text)
- Clova Speech Recognition REST API (이하 CSR REST API)는 HTTP 기반의 REST API로 제공하는 음성인식 API로, 인식에 사용할 언어와 음성 데이터를 입력받고, 그에 맞는 인식 결과를 텍스트로 반환합니다.
- 입력 음성데이터 포맷은 mp3, aac, ac3, ogg, flac, wav을 지원합니다.
요청
MethodRequest URI
POST | https://naveropenapi.apigw.ntruss.com/recog/v1/stt |
요청 파라미터
파라미터 이름타입설명필수 여부
lang | string | 음성인식에 사용할 언어 - Kor: 한국어 - Jpn: 일본어 - Chn: 중국어 - Eng: 영어 |
필수 |
요청 헤더
헤더명설명
X-NCP-APIGW-API-KEY-ID | 앱 등록 시 발급받은 Client ID X-NCP-APIGW-API-KEY-ID:{Client ID} |
X-NCP-APIGW-API-KEY | 앱 등록 시 발급 받은 Client Secret X-NCP-APIGW-API-KEY:{Client Secret} |
Content-Type | application/octet-stream으로 고정 Content-Type: application/octet-stream |
요청 바디
필드명필수 여부타입제약 사항설명
image | Yes | mp3, aac, ac3, ogg, flac, wav | 바이너리 사운드 데이터 (최대 60초) | 음성 파일 |
응답
응답 바디
필드 이름데이터 타입설명
text | string | 음성에 대한 Text |
예시
요청 예시
HTTP
Copy[HTTP Request URL] https://naveropenapi.apigw.ntruss.com/recog/v1/stt?lang=Kor [HTTP Request Body] --- binary sound data ---
응답 예시
JSON
Copy{ "text": "안녕하세요" }
API 예제
다음은 각 언어별 CSR API 구현 예제입니다
JAVASCRIPT
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)');
python
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)
C#
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);
}
}
}
반응형
'프로그래밍 > Architect' 카테고리의 다른 글
코로나, 뉴노멀, 언택트 시대... (0) | 2020.09.11 |
---|---|
슈퍼리더십, 셀프리더십 (0) | 2020.09.11 |
'버추얼 3D 부동산 박람회' 한경이 국내 최초로 엽니다 (0) | 2020.09.02 |
집코노미 언택트 박람회 4~6일 개최‥K-VINA 해외부동산 부스 및 강연 (0) | 2020.09.02 |
개발자 몰리는 '네카라쿠배'...'R&D 퍼스트' 확산 (0) | 2020.08.24 |