Path: blob/master/examples/cpptflite/src/MelGenerateTF.cpp
1559 views
#include <iostream>1#include "MelGenerateTF.h"23MelGenData MelGenerateTF::infer(const std::vector<int32_t> inputIds)4{56MelGenData output;78int32_t idsLen = inputIds.size();910std::vector<std::vector<int32_t>> inputIndexsShape{ {1, idsLen}, {1}, {1}, {1}, {1} };1112int32_t shapeI = 0;13for (auto index : inputIndexs)14{15interpreter->ResizeInputTensor(index, inputIndexsShape[shapeI]);16shapeI++;17}1819TFLITE_MINIMAL_CHECK(interpreter->AllocateTensors() == kTfLiteOk);2021int32_t* input_ids_ptr = interpreter->typed_tensor<int32_t>(inputIndexs[0]);22memcpy(input_ids_ptr, inputIds.data(), int_size * idsLen);2324int32_t* speaker_ids_ptr = interpreter->typed_tensor<int32_t>(inputIndexs[1]);25memcpy(speaker_ids_ptr, _speakerId.data(), int_size);2627float* speed_ratios_ptr = interpreter->typed_tensor<float>(inputIndexs[2]);28memcpy(speed_ratios_ptr, _speedRatio.data(), float_size);2930float* speed_ratios2_ptr = interpreter->typed_tensor<float>(inputIndexs[3]);31memcpy(speed_ratios2_ptr, _f0Ratio.data(), float_size);3233float* speed_ratios3_ptr = interpreter->typed_tensor<float>(inputIndexs[4]);34memcpy(speed_ratios3_ptr, _enegyRatio.data(), float_size);3536TFLITE_MINIMAL_CHECK(interpreter->Invoke() == kTfLiteOk);3738TfLiteTensor* melGenTensor = interpreter->tensor(ouptIndex);3940for (int i=0; i<melGenTensor->dims->size; i++)41{42output.melShape.push_back(melGenTensor->dims->data[i]);43}4445output.bytes = melGenTensor->bytes;4647output.melData = interpreter->typed_tensor<float>(ouptIndex);4849return output;50}5152