본문 바로가기
NCloud(NCP)

[Naver Cloud Platform] Ncloud API Service Pack Series - 1 CLOVA Recognition(Face, Speech)

by 간식주인 2023. 8. 28.

이번에는 Naver Cloud Platform API 관련 서비스 중 CLOVA Recognition 서비스를 다뤄보도록 하겠습니다. 🐻


 

목차

  1. CLOVA Face Recognition 서비스
  2. CLOVA Face Recognition API 사용예제
  3. CLOVA Face Recognition 실행결과
  4. CLOVA Speech Recognition 서비스
  5. CLOVA Speech Recognition API 사용예제
  6. CLOVA Speech Recognition 실행결과

1. CLOVA Face Recognition 서비스 

CLOVA Face Recognition 서비스란?

얼굴과 관련된 다양한 정보를 제공하는 얼굴 감지 및 인식 API를 제공하며 유명인 얼굴인식과 얼굴 감지를 제공하고 있습니다.

 

서비스 특징

  • 정확한 얼굴 감지 및 인식 기능네이버가 보유한 방대한 이미지 DB를 기반으로 정확한 얼굴 감지 기능을 제공합니다. 특히 국내에서 가장 뛰어난 유명인 얼굴 인식 기능도 제공하여 얼굴 감지 기능과 함께 두 가지 기능으로 컴퓨터 비전(Vision) 정보를 활용하여 새로운 인터페이스로 사용할 수도 있습니다.
  • 지속적인 성능 개선네이버에 축적되는 풍부한 데이터를 스스로 학습하고 성능을 자동으로 개선하는 머신 러닝(Machine Learning) 방법이 적용되어 서비스 성능이 지속적으로 개선됩니다.
  • 얼굴 감지 및 인식 기능을 RESTful API로 제공하여 고객 서비스에 간편하게 적용하고 네이버 클라우드 플랫폼의 웹 콘솔에서 편리하게 사용할 수 있습니다.

2. CLOVA Face Recognition API 사용예제

API 특징

 - API version : v1, API Gateway 필요

 - POST 방식

 - 요청 헤더

 - 요청 바디

 

코드 작성

Clova Face Recognition의 경우 celebrity recognition과 face recognition 기능을 지원하므로 각 기능을 테스트할 수 있도록 함수로 작성합니다.

 

미리 생성 - 키 사용을 위한 API_Gateway_info.py

더보기
# API Gateway Info #
# NCP AI.NAVER API 

def get_client_id():
    # Client ID : (X-NCP-APIGW-API-KEY-ID)
    client_id = "적어놓은 client ID"
    return client_id

def get_client_secret():
    # Client Secret (X-NCP-APIGW-API-KEY)
    client_secret = "적어놓은 client Secret"
    return client_secret

 

CLOVA_Face_Recognition.py

import os
import requests
import API_Gateway_info

# NCP CLOVA Face Recognition
# v1 , API Gateway 필요
# 입력된 비전 데이터를 통해 얼굴을 인식하거나 얼굴 감지를 이용한 애플리케이션을 만들 때 유용한 API 서비스
# 이미지 속의 얼굴과 가장 닮은 유명인을 찾거나, 얼굴의 윤곽과 눈/코/입 위치, 표정 값을 얻을 수 있습니다.
def celebrity_recognition(path):
    client_id = API_Gateway_info.get_client_id()
    client_secret = API_Gateway_info.get_client_secret()
    url = "https://naveropenapi.apigw.ntruss.com/vision/v1/celebrity" # 유명인 얼굴인식
    files = {'image': open(path, 'rb')}
    headers = {
        "X-NCP-APIGW-API-KEY-ID": client_id,
        "X-NCP-APIGW-API-KEY": client_secret,
        #"Content-Type": "multipart/form-data"
    }
    response = requests.post(url,  files=files, headers=headers)
    rescode = response.status_code
    if(rescode == 200):
        print (response.text)
    else:
        print("Error : " + response.text)

def face_recognition(path):
    client_id = API_Gateway_info.get_client_id()
    client_secret = API_Gateway_info.get_client_secret()
    url = "https://naveropenapi.apigw.ntruss.com/vision/v1/face" # 얼굴 감지
    files = {'image': open(path, 'rb')}
    headers = {
        "X-NCP-APIGW-API-KEY-ID": client_id,
        "X-NCP-APIGW-API-KEY": client_secret,
        #"Content-Type": "multipart/form-data"
    }
    response = requests.post(url,  files=files, headers=headers)
    rescode = response.status_code
    if(rescode == 200):
        print (response.text)
    else:
        print("Error : " + response.text)

# 얼굴 사진 경로
current_path = os.path.dirname(__file__)
file_name = "man_face.jpg"
file_path = os.path.join(current_path, file_name) # 현재 폴더와 파일을 합쳐서 절대 경로 받아오기
celebrity_recognition(file_path) # 유명인 얼굴 인식
face_recognition(file_path) # 얼굴 감지

이미지 파일이 존재하는 절대 경로를 인수로 전달하여 각 함수에서 해당 이미지를 사용하여 기능을 동작시킵니다.

 

3. CLOVA Face Recognition 실행결과

pixabay 같은 무료 이미지 사이트를 통해 얼굴 사진을 구한뒤, 코드를 실행시킵니다.

 

실행결과 닮은 유명인으로는 "메시"로 나왔으며, 사진 속 얼굴의 성별과 나이에 대한 값을 확인할 수 있었습니다.

닮은 유명인에 대해서는 잘 모르겠지만 나이와 성별, 포즈에 대한 정확도는 비교적 정확하게 나온 것 같습니다. :)

 

4. CLOVA Speech Recognition 서비스

CLOVA Speech Recognition 서비스란?

가장 뛰어난 한국어 음성 인식률을 가진 음성 인식 API로 사람 목소리를 텍스트로 변환하여 결과물로 제공하는 서비스로 챗봇, 비서 서비스 등에 적용할 수 있습니다.

 

서비스 특징

  • 다양한 언어를(한국어, 영어, 일어, 중국어(간체) 지원하며, 특히 한국어는 수년간 지속해온 네이버의 연구를 바탕으로 가장 뛰어난 인식률을 자랑합니다.
  • 네이버에 축적되는 풍부한 데이터를 스스로 학습하고 성능을 자동으로 개선하는 머신 러닝(Machine Learning) 방법이 적용되어 서비스 성능이 지속적으로 개선됩니다.
  • 개인정보보호법, 정보통신망 이용 촉진 및 정보보호 등에 관한 법률 등 국내 개인 정보보호법령을 준수하여 음성 인식 과정에서 입력하는 정보를 안전하게 보호합니다.
  • 모바일 SDK와 REST API 방식을 모두 제공하여 모바일, 서버 등 다양한 환경에서 폭넓게 이용할 수 있습니다. 특히 네이버 클라우드 플랫폼 웹 콘솔에서 서비스 등록, 변경 삭제, 이용량 상한선 설정 등 관리 작업도 수월하게 처리할 수 있습니다.

5. CLOVA Speech Recognition API 사용예제

API 특징

 - API version : v1, API Gateway 필요

 - POST 방식

 - 요청 헤더

 - 요청 바디

 

코드 작성

음성 파일을 'rb'(read binary) 형식으로 저장하여 사용합니다.

 

CLOVA_Speech_Recognition.py

import os
import requests
import API_Gateway_info

# NCP CLOVA_Speech_Recognition
# v1 , API Gateway 필요
# 사람 목소리를 텍스트로 변환
def speech_to_text(path):
    client_id = API_Gateway_info.get_client_id()
    client_secret = API_Gateway_info.get_client_secret()
    lang = "Kor" # 언어 코드 ( Kor, Jpn, Eng, Chn )
    url = "https://naveropenapi.apigw.ntruss.com/recog/v1/stt?lang=" + lang
    data = open(path, '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)

# 텍스트로 변환할 음성 파일 경로
current_path = os.path.dirname(__file__)
file_name = "voice_sample.mp3"
file_path = os.path.join(current_path, file_name) # 현재 폴더와 파일을 합쳐서 절대 경로 받아오기
speech_to_text(file_path)

음성 파일이 존재하는 절대 경로를 인수로 전달하여 해당 함수에서 음성 파일을 사용할 수 있게 합니다.

 

6. CLOVA Speech Recognition 실행결과

음성 파일의 경우 무료 파일을 사용하였지만 잡음이 심할 경우 인식이 잘되지 않으므로 직접 목소리를 녹음하여 실행시켰습니다.

(목소리가 좋지 않아 공개는 하지 않겠습니다 ㅠㅠ..)

 

음성파일의 길이에 따라 시간이 다소 시간이 소요되며, 아래와 같이 녹음한 파일에 대한 높은 인식률을 보여주었습니다.

 

 

[여담]

이번에는 Naver Cloud Platform의 CLOVA Face Recognition, CLOVA Speech Recognition 서비스를 사용해보았는데요, 서비스 퀄리티가 너무나도 좋았던 것 같습니다. (인식률이 높아 다양한 방면으로 활용할 수 있을 것 같습니다.)

 

앞으로도 더욱 다양한 API 관련 서비스들을 소개드리도록 하겠습니다 :)