[NCP] Clova Speech & Clova Studio API 활용 해보기
[NCP] Clova Speech & Clova Studio API 활용 해보기
[NCP] Clova Speech & Clova Studio API 활용 해보기
개요
빠르게 성장 중인 Naver Cloud Platform의 Clova AI API를 활용하여 음성 → 텍스트 → 요약 과정을 하나의 파이프라인으로 구성해보는 실습 가이드입니다.
💡 Clova Speech: 음성 파일을 텍스트로 변환하는 STT API
💡 Clova Studio (요약): 장문 텍스트를 간결하게 요약하는 AI 서비스
- Language: Python 3.11.7 (Flask 3.0.2)
- 참고 가이드:
🧩 작업 순서 요약
- Object Storage 생성 및 Clova Speech API 테스트
- Clova Studio 요약 API 테스트
- 두 API를 하나의 흐름으로 통합
- 웹 인터페이스(Flask 기반)에서 파일 업로드 및 결과 확인 기능 구현
1. Object Storage & Clova Speech API 테스트
- Object Storage 생성 → 음성 파일 업로드 (권한: 전체 공개)
- Clova Speech 도메인 생성 후 API 호출 준비
1
2
3
4
5
6
7
8
9
10
# Clova Speech API
import requests
CLOVA_SPEECH_SECRET_KEY = ''
CLOVA_SPEECH_INVOKE_URL = ''
def convert_speech_to_text(file_url):
headers = {'X-CLOVASPEECH-API-KEY': CLOVA_SPEECH_SECRET_KEY}
data = {'url': file_url, 'language': 'ko-KR', 'completion': 'sync'}
response = requests.post(f'{CLOVA_SPEECH_INVOKE_URL}/recognizer/url', headers=headers, json=data)
return response.json()
2. Clova Studio 요약 API 테스트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Clova Studio 요약 API
import json, http.client
class CompletionExecutor:
def __init__(self, host, api_key, api_key_primary_val, request_id):
self._host = host
self._api_key = api_key
self._api_key_primary_val = api_key_primary_val
self._request_id = request_id
def execute(self, completion_request):
headers = {
'Content-Type': 'application/json; charset=utf-8',
'X-NCP-CLOVASTUDIO-API-KEY': self._api_key,
'X-NCP-APIGW-API-KEY': self._api_key_primary_val,
'X-NCP-CLOVASTUDIO-REQUEST-ID': self._request_id
}
conn = http.client.HTTPSConnection(self._host)
conn.request('POST', '/testapp/v1/api-tools/summarization/v2/', json.dumps(completion_request), headers)
result = json.loads(conn.getresponse().read().decode('utf-8'))
conn.close()
return result['result']['text'] if result['status']['code'] == '20000' else 'Error'
3. 통합 테스트: 음성 파일 → 텍스트 변환 → 요약
1
2
3
4
5
# 통합 테스트 코드
file_url = 'Object Storage 경로'
speech_text = convert_speech_to_text(file_url).get('text', '')
summary = CompletionExecutor(...).execute({"texts": [speech_text], ...})
print(summary)
4. Flask 웹 애플리케이션 구현
사용자가 업로드한 음성 파일을 Clova Speech로 변환 → 변환된 텍스트를 Clova Studio로 요약해 화면에 출력
디렉토리 구성:
1
2
3
4
5
├── app.py
├── templates/
│ ├── index.html
│ └── result.html
└── uploads/
app.py 주요 코드 요약
1
2
3
4
5
6
7
8
9
10
11
12
from flask import Flask, request, render_template
...
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
file_url = request.form.get('file_url')
voice_file = request.files.get('voice_file')
...
text = convert_speech_to_file(file_path or file_url)
summary = summarization_executor.execute({...})
return render_template('result.html', text=text, summary=summary)
return render_template('index.html')
파일 또는 URL을 통해 음성파일을 제출하고, 변환 및 요약 결과를 출력합니다.
결과 예시
웹 화면
- 파일 업로드
- 음성 파일 URL 입력
- 요약 결과 출력
📎 전체 소스코드는 GitHub에서 확인 가능합니다:
https://github.com/wookja-0/Clova-API
감사합니다 🙌
This post is licensed under CC BY 4.0 by the author.

