コード例 #1
0
ファイル: Recognizer.cpp プロジェクト: Hebali/ciSpeech
void EventHandlerBasic::event(ps_decoder_t* decoder)
{
    char const* message = ps_get_hyp( decoder, NULL );

    if( mCb != nullptr && message != NULL && strlen( message ) > 0 )
        mCb( std::string( message ) );
}
コード例 #2
0
ファイル: DiskManager.cpp プロジェクト: SinSiXX/sirikata
void DiskManager::ScanRequest::execute() {
    std::tr1::shared_ptr<DirectoryListing> badResult;
    std::tr1::shared_ptr<DirectoryListing> dirListing(new DirectoryListing());

    if(!fs::exists(mPath)) {
        mCb(badResult);
        return;
    }

    for(fs::directory_iterator it(mPath); it != fs::directory_iterator(); it++) {
        Filesystem::PathInfo pi(it->path(), it->status());
        dirListing->push_back(pi);
    }

    mCb(dirListing);
}
コード例 #3
0
ファイル: DiskManager.cpp プロジェクト: SinSiXX/sirikata
void DiskManager::ReadRequest::execute() {
    std::tr1::shared_ptr<DenseData> badResult;

    if(!fs::exists(mPath)) {
        SILOG(transfer, warn, "File '" << mPath.file_string() << "' didn't exist in ReadRequest.");
        mCb(badResult);
        return;
    }

    if(!fs::is_regular_file(mPath)) {
        SILOG(transfer, warn, "File '" << mPath.file_string() << "' was not a regular file in ReadRequest.");
        mCb(badResult);
        return;
    }

    fs::ifstream file(mPath, fs::ifstream::in | fs::ifstream::binary);
    if(!file.is_open()) {
        SILOG(transfer, warn, "File '" << mPath.file_string() << "' was not open in ReadRequest.");
        mCb(badResult);
        return;
    }

    std::tr1::shared_ptr<DenseData> fileContents(new DenseData(Range(true)));
    char buff[5000];
    while(file.good()) {
        file.read(buff, 5000);
        if(file.fail() && file.eof() && !file.bad()) {
            //Read past EoF, so clear the fail bit
            file.clear(std::ios::goodbit | std::ios::eofbit);
        }
        if(file.gcount() > 0) {
            fileContents->append(buff, file.gcount(), true);
        }
    }

    if(file.bad() || file.fail()) {
        SILOG(transfer, warn, "File '" << mPath.file_string() << "' got error while reading in ReadRequest.");
        mCb(badResult);
        return;
    }

    file.close();

    mCb(fileContents);
}
コード例 #4
0
ファイル: Recognizer.cpp プロジェクト: Hebali/ciSpeech
void EventHandlerSegment::event(ps_decoder_t* decoder)
{
    std::vector<std::string> segments;

    ps_seg_t* iter = ps_seg_iter( decoder, NULL );

    while( iter != NULL ) {
        segments.push_back( std::string( ps_seg_word( iter ) ) );
        iter = ps_seg_next( iter );
    }

    if( ! segments.empty() )
        mCb( segments );
}
コード例 #5
0
ファイル: DiskManager.cpp プロジェクト: SinSiXX/sirikata
void DiskManager::WriteRequest::execute() {
    if(!mFileContents) {
        mCb(false);
        return;
    }

    fs::ofstream file(mPath, fs::ofstream::out | fs::ofstream::binary);
    if(!file.is_open() || !file.good()) {
        mCb(false);
        return;
    }

    file.write((const char *)mFileContents->data(), mFileContents->length());

    if(file.bad() || file.fail()) {
        mCb(false);
        return;
    }

    file.close();

    mCb(true);
}
コード例 #6
0
ファイル: Recognizer.cpp プロジェクト: Hebali/ciSpeech
void EventHandlerSegmentConfidence::event(ps_decoder_t *decoder)
{
    std::vector<std::pair<std::string,float> > segments;

    ps_seg_t* iter = ps_seg_iter( decoder, NULL );

    while( iter != NULL ) {
        int32 prob = ps_seg_prob( iter, NULL, NULL, NULL );
        segments.push_back( { std::string( ps_seg_word( iter ) ), logmath_exp( ps_get_logmath( decoder ), prob ) } );
        iter = ps_seg_next( iter );
    }

    if( ! segments.empty() )
        mCb( segments );
}