Sirius 빌드

Sirius은 주로 미시간 대학의 Clarity lab 팀이 개발하는 오픈 소스 지적 개인 도우미 (IPA) 서비스입니다. 음성 질문에 대한 답변과 업로드된 이미지의 일치 결과를 자연어로 반환합니다. 음성인식, 화상인식, 자연언어처리, 질문응답시스템 등의 기술을 조합하여 구현하고 있습니다.

Siriusの機能構成

Sirius는 Github에서 개발 중입니다.

서버 준비



Sirius는 윤택한 자원이 필요합니다. 시도한 범위에서 메모리는 8GB 정도, 디스크는 40GB 이상이 필요합니다. 이러한 윤택한 리소스를 사용할 수 없는 경우 클라우드에 서버를 준비합시다. 이번에는 SoftLayer 위에 다음과 같은 환경을 구축했습니다.
  • CPU: 1코어
  • 메모리: 8GB
  • 디스크: 100GB
  • OS: Ubuntu 14.04 64bit
  • $ sl vs create --hourly --datacenter=dal09 --cpu=1 --memory=8192 --os=UBUNTU_14_64 --disk=100 --key=yourkey --hostname=yourhost --domain=yourdomain.com
    

    빌드



    Sirius를 git clone하여 빌드합니다. 여기의 절차는 거의 공식 사이트대로입니다.
    $ apt-get update; apt-get upgrade
    $ apt-get install git software-properties-common # git and apt tools
    $ git clone https://github.com/jhauswald/sirius.git
    $ cd sirius/sirius-application
    $ ./get-dependencies.sh # 必要なソフトウェアのapt-get
    $ ./get-kaldi.sh # 音声認識ソフトウェアKaldiのビルド
    $ ./get-opencv.sh # 画像処理ライブラリOpenCVのビルド
    $ ./compile-sirius-servers.sh # Sirius本体のビルド
    
    $ export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH} # すでに設定されていれば不要
    $ mkdir ~/log # サーバプロセスログ用のディレクトリを作成
    

    여기까지 로그에 에러를 확인할 수 없으면 OK입니다. 빌드에 필요한 시간은 합계로 약 1시간 정도입니다. (이번에는 Dallas의 SoftLayer 인스턴스에서 빌드하기 때문에 통신에 거의 시간이 걸리지 않습니다.)

    음성 인식 (ASR)



    먼저 음성 인식 서버를 백그라운드에서 시작합니다.
    $ cd ~/sirius/sirius-application/run-scripts
    $ ./start-asr-server.sh > ~/log/asr.log 2>~/log/asr-error.log < /dev/null &
    

    테스트용 오디오 파일을 던져 봅니다.
    $ ./sirius-asr-test.sh ../inputs/questions/what.is.the.population.of.france.wav 
    

    인식 결과가 반환되었습니다.
    Your audio file is:
    ../inputs/questions/what.is.the.population.of.france.wav
    Sending request to server localhost:8081/ ...
     what is the population of france
    ***********************************************
    

    질문 응답 (QA)



    그런 다음 질문 응답 시스템을 테스트합니다.
    질문 응답 시스템을 사용하기 전에 wikipedia 기반 지식 데이터베이스를 다운로드해야 합니다. 이 아카이브는 11GB 정도의 크기로 되어 있으므로, 통신 환경이나 회선에 주의합시다.
    $ wget http://web.eecs.umich.edu/~jahausw/download/wiki_indri_index.tar.gz
    $ tar xzvf wiki_indri_index.tar.gz -C ~/sirius/sirius-application/question-answer/
    

    서버를 백그라운드 시작합니다.
    $ cd ~/sirius/sirius-application/run-scripts
    $ ./start-qa-server.sh > ~/log/qa.log 2>~/log/qa-error.log < /dev/null &
    

    질문을 던져 보겠습니다.
    $ ./sirius-qa-test.sh "what is the speed of light" 
    

    1코어 8GB 메모리에서는 30~40초 안에 다음과 같이 대답이 반환되었습니다.
    (1) Your query text is:
    what is the speed of light
    (2) Sending request to server...
    299,792,458 meters per second
    ***********************************************
    

    음성 질문 응답 (ASR + QA)



    위의 ASR과 QA 서버를 시작한 상태에서 음성으로 질문 응답을 테스트 할 수도 있습니다. (음성 인식 서버에 던져 반환 결과를 그대로 질문 응답 서버에 던지는 간단한 구현입니다)
    $ ./sirius-asr-qa-test.sh ../inputs/questions/what.is.the.population.of.france.wav 
    

    다음과 같은 결과가 반환되었습니다.
    Your voice search (text) is:
    ../inputs/questions/what.is.the.population.of.france.wav
    Sending request to ASR server...
    Sending request to QA server...
    2013, 66,394,000
    ***********************************************
    

    이미지 매칭(IMM)



    마지막으로 이미지 매칭입니다. 이미지 매칭을 사용하기 전에 샘플로 저장된 랜드마크 이미지의 데이터베이스를 구성합니다.
    $ cd ~/sirius/sirius-application/image-matching
    $ ./make-db.py landmarks matching/landmarks/db/
    

    이제 이미지 매칭 서버를 백그라운드로 시작합니다.
    $ cd ~/sirius/sirius-application/run-scripts
    $ ./start-imm-server.sh > ~/log/imm.log 2>~/log/imm-error.log < /dev/null &
    

    이미지를 던져 매칭합니다.
    $ ./sirius-imm-test.sh ../image-matching/matching/landmarks/query/query.jpg
    

    답변이 반환되었습니다.
    (1) Your image file is:
    ../image-matching/matching/landmarks/query/query.jpg
    Image data: tower pisa
    

    좋은 웹페이지 즐겨찾기