2019년 7월 15일 월요일

음성인식 메모(kaldi) 25 - 내부에서 사용하는 데이터의 형태

「原作者へ」

連絡先を存じ上げませんでしたので、不本意ながら無断で翻訳しました。 
正式に翻訳を許可されたいです。 
gogyzzz@gmail.comでご連絡ください。

아래 포스트의 번역입니다.

http://work-in-progress.hatenablog.com/entry/2018/09/15/121225


프로그램 내에서 사용하는 데이터의 자릿수에 관한 메모.

디폴트로 컴파일하면 「float」형이 된다.

kaldi/configure at master · kaldi-asr/kaldi · GitHub

configure 내용 중

# Default configuration
double_precision=false

(snip)

if $double_precision; then
  echo "DOUBLE_PRECISION = 1" >> kaldi.mk
else
  echo "DOUBLE_PRECISION = 0" >> kaldi.mk
fi

DOUBLE_PRECISION이 「0」이라면, 템플릿 부분은 float형으로 컴파일된다.

matrix/kaldi-matrix.cc

template<typename Real>
void Matrix<Real>::Read(std::istream & is, bool binary, bool add) {

    Real r;
    is >> r;

사용하는 머신에 double형 연산을 지원하는 회로가 있다면 double형으로 하는 쪽이 빨라질지도 모른다.

아래는 데이터의 읽기에 관한 메모.

아래와 같은 지수표기로 쓰여진 텍스트 파일이 있다면,

-6.93889018e-18 -5.55112e-17 ...

아래의 코드를 통해 읽을 수 있다.

float r;
is >> r;

댓글 없음:

댓글 쓰기