-1.8 C
Seoul
수요일, 11월 27, 2024

spot_img

음성인식 (STT) 빨리 시작하기 – 카카오 OpenAPI

 

카카오에서는 음성인식(STT, Speech-To-Text)을 무료로 제공하고 있습니다.

1일 무료 허용량

 

 

하루에 음성인식은 20,000건 / 5,400초(90분)를 무료로 제공하고 있습니다.

빠르게 살펴보겠습니다.

 

<< 순서 >>

Step 1)사전준비

– 음성 인식 사용 여부 체크

– rest api key 찾기

Step 2)구현

Step 1) 사전 준비

1-1) 음성 사용 On

– 내 애플리케이션 > 설정 > 음성 > [ON] 으로 설정 변경

 

 

1-2) REST API 키 확인

 

 

Step 2) 구현 (Quick Start)

 

ㅁ 음성 파일 준비

 

 

용어정리
– sample rate : 현실 세계의 아날로그 소리를 잘게 쪼갠 비율(속도). 잘게 쪼개진 하나를 샘플이라 부른다.
== 1초당 추출되는 샘플 개수 ex:) 44100 Hz – 1초당 44100개의 샘플
– channel : 스피커 수와 연관 있다.
– bits per sample : 하나의 샘플을 표현하기 위해 사용되는 bit 수.
– bit rate : 1초당 비트 전송 수. (sample rate * channel * bits per sample)
– RAW PCM 포맷 :  PCM(Pulse code modulation)로 표현한 오디오 데이터를 압축하지 않은 RAW 형태(wav 등)

카카오톡 샘플 오디오 파일 다운로드하기 (“헤이 카카오”라고 녹음 되어 있습니다)

 

– 해당 형식에 맞춰 오디오 파일을 준비합니다.

ㅁ 소스코드

import requests
import json
kakao_speech_url = "https://kakaoi-newtone-openapi.kakao.com/v1/recognize"

rest_api_key = '<YOUR REST API KEY>'

headers = {
    "Content-Type": "application/octet-stream",
    "X-DSS-Service": "DICTATION",
    "Authorization": "KakaoAK " + rest_api_key,
}

with open('heykakao.wav', 'rb') as fp:
    audio = fp.read()

res = requests.post(kakao_speech_url, headers=headers, data=audio)

ㅁ 결과

이런 재밌는 결과가 나왔네요~!

print(res.text)
# ------newtonemQRqgAYxWY2ZhLN2
# Content-Type: application/json; charset=UTF-8
# 
# {"type":"beginPointDetection","value":"BPD"}
# ------newtonemQRqgAYxWY2ZhLN2
# Content-Type: application/json; charset=UTF-8
# 
# {"type":"partialResult","value":"he"}
# ------newtonemQRqgAYxWY2ZhLN2
# Content-Type: application/json; charset=UTF-8
# 
# {"type":"partialResult","value":"헤이 카카오"}
# ------newtonemQRqgAYxWY2ZhLN2
# Content-Type: application/json; charset=UTF-8
# 
# {"type":"endPointDetection","value":"EPD"}
# ------newtonemQRqgAYxWY2ZhLN2
# Content-Type: application/json; charset=UTF-8
# Speech-Length: 2
# 
# {"type":"finalResult","value":"헤이 카카오","nBest":[{"value":"헤이 카카오","score":88},{"value":"헤이 카카오야","score":0}]}
# ------newtonemQRqgAYxWY2ZhLN2--

# beginPointDetection # 사용자가 말하기 시작하는 것으로 판단되었을 때
# partialResult       # 사용자가 말을 끝내기 전에 음성의 중간 인식 결과가 나왔을 때로, value에 중간 결과가 담김. 여러 번 발생할 수 있음
# endPointDetection   # 사용자가 말하는 것을 끝마친 것으로 판단되었을 때
# finalResult         # 사용자가 말한 음성의 최종 인식 결과가 나왔을 때로, value에 최종 인식 결과가 담김
# errorCalled         # 음성 인식이 실패 했을 때로, value에 에러 메시지가 담김

 

(참고) finalResult 를 추출하는 방법

result_json_string = res.text[res.text.index('{"type":"finalResult"'):res.text.rindex('}')+1]
result = json.loads(result_json_string)
print(result)
print(result['value'])
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

Related Articles

Stay Connected

18,393FansLike
128,393FollowersFollow
81,934SubscribersSubscribe

Latest Articles