You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.3 KiB

  1. // Copyright (c) 2020 Mobvoi Inc (Binbin Zhang)
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. #ifndef UTILS_UTILS_H_
  15. #define UTILS_UTILS_H_
  16. #ifndef FST_LOG_H_
  17. #include "fst/log.h"
  18. #endif
  19. #include <cstdint>
  20. #include <limits>
  21. #include <vector>
  22. namespace wenet {
  23. #define WENET_DISALLOW_COPY_AND_ASSIGN(Type) \
  24. Type(const Type&) = delete; \
  25. Type& operator=(const Type&) = delete;
  26. const float kFloatMax = std::numeric_limits<float>::max();
  27. // kSpaceSymbol in UTF-8 is: ▁
  28. const char kSpaceSymbol[] = "\xe2\x96\x81";
  29. // Return the sum of two probabilities in log scale
  30. float LogAdd(float x, float y);
  31. template <typename T>
  32. void TopK(const std::vector<T>& data, int32_t k, std::vector<T>* values,
  33. std::vector<int>* indices);
  34. } // namespace wenet
  35. #endif // UTILS_UTILS_H_