FunASR/runtime/onnxruntime/third_party/kaldi/util/const-integer-set-test.cc
Yabin Li 702ec03ad8
Dev new (#1065)
* add hotword for deploy_tools

* Support wfst decoder and contextual biasing (#1039)

* Support wfst decoder and contextual biasing

* Turn on fstbin compilation

---------

Co-authored-by: gongbo.gb <gongbo.gb@alibaba-inc.com>

* mv funasr/runtime runtime

* Fix crash caused by OOV in hotwords list

* funasr infer

* funasr infer

* funasr infer

* funasr infer

* funasr infer

* fix some bugs about fst hotword; support wfst for websocket server and clients; mv runtime out of funasr; modify relative docs

* del onnxruntime/include/gflags

* update tensor.h

* update run_server.sh

* update deploy tools

* update deploy tools

* update websocket-server

* update funasr-wss-server

* Remove self loop propagation

* Update websocket_protocol_zh.md

* Update websocket_protocol_zh.md

* update hotword protocol

* author zhaomingwork: change hotwords for h5 and java

* update hotword protocol

* catch exception for json_fst_hws

* update hotword on message

* update onnx benchmark for ngram&hotword

* update docs

* update funasr-wss-serve

* add NONE for LM_DIR

* update docs

* update run_server.sh

* add whats-new

* modify whats-new

* update whats-new

* update whats-new

* Support decoder option for beam searching

* update benchmark_onnx_cpp

* Support decoder option for websocket

* fix bug of CompileHotwordEmbedding

* update html client

* update docs

---------

Co-authored-by: gongbo.gb <35997837+aibulamusi@users.noreply.github.com>
Co-authored-by: gongbo.gb <gongbo.gb@alibaba-inc.com>
Co-authored-by: 游雁 <zhifu.gzf@alibaba-inc.com>
2023-11-07 18:34:29 +08:00

146 lines
4.7 KiB
C++

// util/const-integer-set-test.cc
// Copyright 2009-2011 Microsoft Corporation
// See ../../COPYING for clarification regarding multiple authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
// WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
// MERCHANTABLITY OR NON-INFRINGEMENT.
// See the Apache 2 License for the specific language governing permissions and
// limitations under the License.
#include "util/const-integer-set.h"
#include <set> // for baseline.
#include <cassert>
#include <cstdlib>
#include <iostream>
#include "util/kaldi-io.h"
namespace kaldi {
template<class Int> void TestSetOfNumbers(bool binary) {
std::set<Int> baseline_set;
size_t n_in_set = (Rand() % 3) * 50 + (Rand() % 4); // may be less than this.
size_t max = (Int) (Rand() % 100) + 1;
for (size_t i = 0; i < n_in_set; i++) {
Int to_add((Int) (Rand() % max));
baseline_set.insert(to_add);
}
std::vector<Int> vector_set;
for (typename std::set<Int>::iterator iter = baseline_set.begin();
iter!= baseline_set.end();iter++)
vector_set.push_back(*iter);
if (vector_set.size() != 0) {
for (size_t i = 0;i < 10;i++) // randomize order.
std::swap(vector_set[Rand()%vector_set.size()],
vector_set[Rand()%vector_set.size()]);
}
ConstIntegerSet<Int> my_set1(baseline_set);
ConstIntegerSet<Int> my_set2(vector_set);
ConstIntegerSet<Int> my_set3;
my_set3.Init(baseline_set);
ConstIntegerSet<Int> my_set4;
my_set4.Init(vector_set);
{
my_set4.Write(Output("tmpf", binary).Stream(), binary);
}
ConstIntegerSet<Int> my_set5;
{
bool binary_in;
Input ki("tmpf", &binary_in);
my_set5.Read(ki.Stream(), binary_in);
}
// if (enable_iterators) {
size_t sz = baseline_set.size(), sz1 = my_set1.size(), sz2 = my_set2.size(),
sz3 = my_set3.size(), sz4 = my_set4.size(), sz5 = my_set5.size();
KALDI_ASSERT(sz == sz1 && sz == sz2 && sz == sz3 && sz == sz4 && sz == sz5);
// }
for (size_t i = 0;i < 100;i++) {
Int some_int;
if (i%2 == 0 && vector_set.size() != 0)
some_int = vector_set[Rand()%vector_set.size()];
else
some_int = Rand() % max;
bool in_baseline = (baseline_set.count(some_int) != 0);
bool in_my_set1 = (my_set1.count(some_int) != 0);
bool in_my_set2 = (my_set2.count(some_int) != 0);
bool in_my_set3 = (my_set3.count(some_int) != 0);
bool in_my_set4 = (my_set4.count(some_int) != 0);
bool in_my_set5 = (my_set5.count(some_int) != 0);
if (in_baseline) {
KALDI_ASSERT(in_my_set1&&in_my_set2&&in_my_set3&&in_my_set4&&in_my_set5);
} else {
KALDI_ASSERT(!in_my_set1&&!in_my_set2&&!in_my_set3&&!in_my_set4&&
!in_my_set5);
}
}
// if (enable_iterators) {
typename std::set<Int>::iterator baseline_iter = baseline_set.begin();
typename ConstIntegerSet<Int>::iterator my_iter1 = my_set1.begin();
typename ConstIntegerSet<Int>::iterator my_iter2 = my_set2.begin();
typename ConstIntegerSet<Int>::iterator my_iter3 = my_set3.begin();
typename ConstIntegerSet<Int>::iterator my_iter4 = my_set4.begin();
typename ConstIntegerSet<Int>::iterator my_iter5 = my_set5.begin();
while (baseline_iter != baseline_set.end()) {
KALDI_ASSERT(my_iter1 != my_set1.end());
KALDI_ASSERT(my_iter2 != my_set2.end());
KALDI_ASSERT(my_iter3 != my_set3.end());
KALDI_ASSERT(my_iter4 != my_set4.end());
KALDI_ASSERT(my_iter5 != my_set5.end());
KALDI_ASSERT(*baseline_iter == *my_iter1);
KALDI_ASSERT(*baseline_iter == *my_iter2);
KALDI_ASSERT(*baseline_iter == *my_iter3);
KALDI_ASSERT(*baseline_iter == *my_iter4);
KALDI_ASSERT(*baseline_iter == *my_iter5);
baseline_iter++;
my_iter1++;
my_iter2++;
my_iter3++;
my_iter4++;
my_iter5++;
}
KALDI_ASSERT(my_iter1 == my_set1.end());
KALDI_ASSERT(my_iter2 == my_set2.end());
KALDI_ASSERT(my_iter3 == my_set3.end());
KALDI_ASSERT(my_iter4 == my_set4.end());
KALDI_ASSERT(my_iter5 == my_set5.end());
// }
}
} // end namespace kaldi
int main() {
using namespace kaldi;
for (size_t i = 0;i < 10;i++) {
TestSetOfNumbers<int>(Rand()%2);
TestSetOfNumbers<unsigned int>(Rand()%2);
TestSetOfNumbers<int16>(Rand()%2);
TestSetOfNumbers<int16>(Rand()%2);
TestSetOfNumbers<char>(Rand()%2);
TestSetOfNumbers<unsigned char>(Rand()%2);
}
std::cout << "Test OK.\n";
}