$ tar zxvf make-4.1.tar.gz
$ cd make-4.1
$ ./configure
$ make
$ sudo make install

Ubuntu 기반 플랫폼에 기가지니인사이드 SDK 설치 및 테스트

기가지니 SDK를 Ubuntu에 설치하여 테스트 하기 위해 하기 링크된 KT 문서를 바탕으로 실행하였다.

참고로 본인 PC에 Vmware(WORKSTATION 15.5 Pro)를 이용 Ubuntu를 설치하여 테스트를 실시하였다. ( 환경 : ubuntu-20.04-desktop-amd64 / cmake v3.16.3 / gcc v9.3.0 / GNU Make 4.2.1)

https://github.com/gigagenie/sample-client-linux-grpc

 

gigagenie/sample-client-linux-grpc

G-INSIDE Linux Sample Client (using gRPC Device SDK) - gigagenie/sample-client-linux-grpc

github.com

위의 설명대로 작업은 크게 다음과 같이 나누어 볼수 있다.

  • 인사이드 클라이언트 키 발급
  • 개발 환경 설정 
  • 필수 라이브러리 및 파일 소스
  • 디렉토리(src/) 내 파일 구성 
  • Linux용 Sample 빌드
  • Sample App 실행

이 중에서 "인사이드 클라이언트 키 발급"은 위에 링크된 KT 문서를 참고로 하면 되므로 Pass하고 나머지 주제들로 글을 써본다.

개발 환경 설정

  • Build Tool 설치

위의 내용을 참고하면 먼저 Build Tool을 설치해야 한다.

$ sudo apt-get install build-essential autoconf automake libtool pkg-config curl make cmake g++ unzip git

Ubuntu에서 Terminal 창을 열고 다음과 같이 위의 cmd를 입력하여 실행하면 쉽게 설치할 수 있다.

설치가 완료되면 하기와 같이 g++ version(Ubuntu gcc)을 확인할 수 있다.

$ g++ -v

 

  • gPRC v1.20.0 및 protobuf 설치

Setup 환경을 하기와 같이 먼저 실행한다.

$ export MY_INSTALL_DIR=$HOME/.local
$ mkdir -p $MY_INSTALL_DIR
$ export PATH="$PATH:$MY_INSTALL_DIR/bin"

Git에서 gRPC v.1.20.0을 받는다.

$ git clone --recurse-submodules -b v1.20.0 https://github.com/grpc/grpc
$ cd grpc
$ make

하지만 여기서 make error가 발생한다.

오류 : error: ambiguating new declaration of ‘long int gettid()’
이유 : GCC 9 리드
솔루션 출처 : 
Github에서 / GRPC : # 20043
해결 방법 : 
src/core/lib/gpr/log_linux.ccsrc/core/lib/gpr/log_posix.ccsrc/core/lib/iomgr/ev_epollex_linux.cc이 파일은
gettid() --> local_gettid() 변경

다시 make를 실행하면 다음과 같이 Error가 또 발생.

Error 내용은 모든 warning을 Error로 처리하면서 발생하는 문제이다.

이 warning을 수정하는게 정석이지만, 일단은 다음과 같이 컴파일러 옵션을 추가하여 문제를 해결한다.

$ export CFLAGS=-Wno-error
$ export CXXFLAGS=-Wno-error

다시 make를 실행하면 문제 없이 compile 될것이다. 

$ make
$ sudo make install
$ cd third_party/protobuf
$ sudo make install

그 다음 위와 같이 make한 결과물을 install 하기 위해 sudo make install을 실행한다.

protobuf를 install 하기 위해 cd third_party/protobuf로 이동 후 sudo make install을 실행한다.

그 다음으로 make install을 입력을 해야하는데, sudo make install이라고 입력을 해야 한다.

그러면 이번 절의 모든 작업이 완료 된다.

 

  • cJSON 설치
$ git clone https://github.com/DaveGamble/cJSON
$ cd cJSON
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=$MY_INSTALL_DIR ..
$ make
$ sudo make install

다음과 같이 위의 cmd를 차례대로 실행한다.

그 다음은 make install 명령어를 실행해야 하지만, Error를 회피하기 위해서 sudo make install로 실행을 해야 한다.

  • OpenSSL
$ sudo apt install libssl-dev

하기와 같이 cmd를 실행한다.

  • ALSA library

하기 명령어를 실행하여, 호출어/음성인식을 위한 voice recording 및 미디어 재생을 위해 ALSA 라이브러리를 설치한다.

$ sudo apt-get install libasound2-dev libasound2

 

필수 라이브러리 및 파일

  • SDK 라이브러리

하기 KT의 Ubuntu 라이브러리 링크에서 libginiside.so, libKwsRnet.so 파일을 다운로드 한다.

github.com/gigagenie/ginside-sdk/tree/master/g-sdk-linux/lib/ubuntu-x86_64

 

gigagenie/ginside-sdk

GiGA Genie INSIDE(G-INSIDE) SDK. Contribute to gigagenie/ginside-sdk development by creating an account on GitHub.

github.com

  • SDK 헤더파일

하기 KT의 Ubuntu SDK 헤더파일 링크에서 ginisde.h, ginsidedef.h 파일을 다운로드 한다.

github.com/gigagenie/ginside-sdk/tree/master/g-sdk-linux/include

 

gigagenie/ginside-sdk

GiGA Genie INSIDE(G-INSIDE) SDK. Contribute to gigagenie/ginside-sdk development by creating an account on GitHub.

github.com

  • 호출어 모델파일

하기 KT 링크에서 모델파일을 다운로드 한다.

github.com/gigagenie/ginside-sdk/tree/master/g-sdk-linux/conf

 

gigagenie/ginside-sdk

GiGA Genie INSIDE(G-INSIDE) SDK. Contribute to gigagenie/ginside-sdk development by creating an account on GitHub.

github.com

 

소스 디렉토리(src/) 내 파일 구성

하기 KT 링크에서 sample-client-linux-grpc를 다운로드 후 src/ 로 이동 한다.

github.com/gigagenie/sample-client-linux-grpc

 

gigagenie/sample-client-linux-grpc

G-INSIDE Linux Sample Client (using gRPC Device SDK) - gigagenie/sample-client-linux-grpc

github.com

위의 "필수 라이브러리 및 파일" 섹션에서 다운로드한 파일들을 다음 설명을 참고로 src 폴더 안에 Sub 폴더(conf, include, lib)에 위치 시킨다.

나머지 설명은 참고 사항이다.

  • conf/ : 호출어 모델 파일 저장 위치
  • include/ : SDK용 헤더파일 저장 위치 (ginside.h, ginsidedef.h)
  • lib/ : SDK 라이브러리 저장 위치 (libginside.so, libKwsRnet.so)
  • key.txt : API Link에서 발급받은 개발키 정보를 저장
  • server_info.txt : G-INISDE 개발 서버 정보 저장
  • test_sample.cpp : sample app main 소스

 

Linux용 Sample 빌드

  • sample-client-linux-grpc를 다운로드 후 src/ 로 이동
  • Makefile에서 lpthread, lcjson, lasound 라이브러리와 헤더파일의 위치를 수정한다.
1. cJSON
  - 변경 전
    CFG_INC = -I./include -I/usr/include -I/usr/local/include -I/usr/local/include/cjson
  - 변경 후
    CFG_INC = -I./include -I/usr/include -I/usr/local/include -I/home/mskim/cJSON
  • SDK 라이브러리, 헤더파일, 호출어 모델 파일 등을 lib/, include/, conf/ 디렉토리에 각각 복사하고 Makefile에서 경로 정보를 수정한다.
  • 실제 발급받은 클라이언트 키값을 key.txt 파일에 하기 설명 부분을 지우고 동일한 자리에 입력한다.
YOUR-CLIENT-ID
YOUR-CLIENT-KEY
YOUR-CLIENT-SECRET
  • make 명령어 실행 전에 test_sample.cpp 파일에서 다음 header 파일의 위치를 수정 해야 한다.
#include  "../include/ginside.h"
#include  "../include/ginsidedef.h"
  • $ export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH; 입력 후 make를 하면 문제 없이 컴파일 완료
$ export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH; 
$ make
  • 컴파일한 실행파일을 실행하는 방법은 다음과 같다.
$ export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH;
$ ./test_sample

파일을 실행 후 "지니야"를 호출하면 정상적으로 동작하는 것을 확인 할 수 있다.

물론 마이크와 스피커가 있는 상태에서 말이다. 본인은 우분투 설정에서 노트북 마이크/스피커 설정 후 테스트 함.

- 끝

+ Recent posts