NCP_AI(clova) - AI기술과 클라우드(CLOVA Speech)

Pass by

원래 보안쪽에 관심이 있어 공부하다가, 클라우드쪽에 관심이 생겨 네이버클라우드에대해 공부하던 중

블로그 댓글 중 네이버클라우드에서 " 이달의 Nclouder " 이라는 기회를 소개 시켜주어서

8월 전략주제 #AI(CLOVA)와 #Security라 하여 한번 알아보고, 어떻게 적용되는지 알아보려고 해요.

https://blog.naver.com/n_cloudplatform/223173672657

 

[8월 모집 중] 이달의 Nclouder🏆에 도전해 보세요! (네이버클라우드 기술 콘텐츠 리워드 프로그램)

기술 블로그 작성 / 기술 영상 제작에 관심있거나 네이버 클라우드 플랫폼 (Ncloud) 잘 ~ 쓰고 계신 분들 ...

blog.naver.com

네이버 클라우드 플랫폼과 인공지능기술 CLOVA

 

소개

현대에서는 인공지능과 클라우드 컴퓨팅은 중요한부분이고 서로 긴밀하게 연관되어 있다.

 

AI에 대해서 배우면, 약한인공지능과 강한인공지능에대해서 배우게되는데 CLOVA는

음성인식,자연어 처리, 이미지 분석 등 다양한 분야에서 활용되어서 두가지의 요소들을 포함하고 있는 경우이다.

* CLOVA 가 "CLOud Virtual Assistant"의 약자라는것을 알고 있었나요?

 

여기서, 클라우드 기반 AI는 인공지능 기술을 클라우드 환경에서 제공하는것을 의미하는데

클라우드 컴퓨팅의 유연성을 활용해서 AI모델의 훈련,배포,실행을 보다 효율적으로 수행할 수 있다.

 

CLOVA가 하는 주요 역할 몇가지

음성인식

자연어 처리

이미지 분석

감정 분석

머신 러닝 모델 개발 및 배포

음성 합성

AI 기반 서비스 구축

 

실제로 본인도 집에서 IoT를 이용하는데 AI로 편리하고 재미있는 삶을 살고있다.

"매일 아침 6시 알람맞춰줘"

 

네이버 클라우드에서 지원하는 AI서비스중 하나를 꼽아서,

어떻게 네이버 클라우드플랫폼과 연계되어 사용되는지 알아보자

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

CLOVA Speech

 

출처 : https://www.ncloud.com/product/aiService/clovaSpeech

집에서 음성인식 서비스를 쓰는만큼, 어떻게 작동이 되는지 궁금해져서 CLOVA Speech에 대해 상세히 알아보려고 한다.

 

 

 

CLOVA Speech를 활용한 실습

1. CLOVA Speech API 등록 및 설정

Speech 사용가이드 참조 : https://guide-fin.ncloud-docs.com/docs/clovaspeech-clovaspeech

도메인 생성시 Object Storage가 필수로 연동되어야만 사용가능하다

Object Storage를 이용신청

 

1-1. Bucket 생성 해주자.

 

Step1)
Step2)
Step3)
생성완료

1-2. CLOVA Speech 도메인 생성

 

도메인생성 완료

Free 도메인 유형은 매월 일정 인식시간을 무료로 이용할 수 있다. (1계정당 1개의 Free 도메인만 생성 가능)

이후 우측의 "빌더실행" 버튼으로 CLOVA 빌더를 실행할 수 있다.

빌더 실행 후 좌측 - 설정
시크릿 키 생성과 URL 확인

이후 CLOVA Speech 엔진에 API작업을 요청할때 시크릿키와 URL이 필요하니 따로 적어두자

* 원본파일이 Object storage에 있을땐 파일의 위치를, 외부 URL일경우 해당 경로의 파일을 받아서 엔진에 요청

GUI 환경에서 파일업로드

 

2. 음성 명령 인식 애플리케이션 구현 (파이썬 코드 예제)

참조문서 : CLOVA Speech API (NCP)

 

Python으로 간단한 예제를 만들어보았다.

import requests
import sounddevice as sd
import io
import wave
import json

class ClovaSpeechClient:
    # Clova Speech invoke URL
    invoke_url = '본인의 Invoke url'
    # Clova Speech secret key
    secret = '본인의 secret key'

    # 로컬의 파일 업로드해서 요청
    def req_upload(self, file, completion, callback=None, userdata=None, forbiddens=None, boostings=None,
                   wordAlignment=True, fullText=True, diarization=None):
        request_body = {
            'language': 'ko-KR',
            'completion': completion,
            'callback': callback,
            'userdata': userdata,
            'wordAlignment': wordAlignment,
            'fullText': fullText,
            'forbiddens': forbiddens,
            'boostings': boostings,
            'diarization': diarization,
        }
        headers = {
            'Accept': 'application/json;UTF-8',
            'X-CLOVASPEECH-API-KEY': self.secret
        }
        print(json.dumps(request_body, ensure_ascii=False).encode('UTF-8'))
        files = {
            'media': open(file, 'rb'),
            'params': (None, json.dumps(request_body, ensure_ascii=False).encode('UTF-8'), 'application/json')
        }
        response = requests.post(headers=headers, url=self.invoke_url + '/recognizer/upload', files=files)
        return response

if __name__ == '__main__':
    # 녹음 설정
    fs = 16000  # 샘플링 레이트 (Hz)
    duration = 5  # 녹음 길이 (초)

    print("녹음시작")
    audio_data = sd.rec(int(fs * duration), samplerate=fs, channels=1, dtype="int16")
    sd.wait()
    print("녹음완료")

    # 녹음된 오디오 데이터를 WAV 형식으로 저장
    wav_filename = "recorded_audio.wav"
    with wave.open(wav_filename, "wb") as wf:
        wf.setnchannels(1)
        wf.setsampwidth(2)
        wf.setframerate(fs)
        wf.writeframes(audio_data.tobytes())

    # ClovaSpeechClient 인스턴스 생성
    clova_client = ClovaSpeechClient()

    # 음성 파일 업로드 및 API 호출
    response = clova_client.req_upload(file=wav_filename, completion='sync')

    # 결과 처리
    if response.status_code == 200:
        try:
            result = response.json()
            if "text" in result:
                converted_text = result["text"]
                print("Converted Text:", converted_text)
            else:
                print("Conversion failed. Response:", result)
        except requests.exceptions.JSONDecodeError:
            print("JSON decoding failed. Response content:", response.content)
    else:
        print("API request failed. Status code:", response.status_code)

코드 진행 결과 

API의 응답결과를 잘 받아오는것을 볼 수 있다.

 

마무리

간단한 실습으로 CLOVA Speech API를 활용하여 다양한 분야에서 사용될 수 있음을 확인했다.

"ex) if 헤이 클로바 if 불꺼줘"같은? ㅋㅋㅋ

 

음성 명령 및 제어 시스템을 통해 기기를 간편하게 제어하는 것부터 시작해, 더 나아가 

의료, 교육, 보안 분야 등에서도 활용할 수 있는 창의적이고 혁신적인 애플리케이션을 

개발하고 있는 사례들도 있고. 잠깐 생각해봐도 여러 분야에서 사용될 수 있을 것 같다는 생각이 들었습니다.

 

CLOVA AI 기술은 CLOVA Speech API와 더불어 다양한 다른 서비스도 제공하고 있는데

한국을 대표하는 기업이 개발한 서비스라서 그런지 한국어 지원에서도 높은 품질을 유지하고 있는 것이 흥미로웠어요.

 

네이버 클라우드 플랫폼은 기업과 개인 모두에게 인공지능과 클라우드 기술을 활용한 다양한 기회를 제공하는게

신기했고 미래 산업 발전에 기여하는 듯한 느낌을 받았고..

앞으로도 이러한 기술들이 계속해서 발전하여 생활과 사회에 더 큰 가치를 제공할 것으로 기대됩니다

 

언젠간 저도 이러한 기술들을 기여하는 사람으로 거듭나고 싶네요