fix: SenseVoice推理张量类型错误 int64→int32

ONNX Runtime 报错 "Unexpected input data type. Actual: tensor(int64),
expected: tensor(int32)"。SenseVoice 模型的 x_length、language、text_norm
三个输入需要 int32 类型而非 int64。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Alvin Young 2026-05-12 20:17:46 +08:00
parent ecc79aaeb6
commit 32d3a8e986

View File

@ -318,24 +318,24 @@ RecognitionResult SenseVoiceEngine::infer(const std::vector<float>& samples,
int64_t xShape[] = {1, numFrames, kLFROutputDim}; int64_t xShape[] = {1, numFrames, kLFROutputDim};
auto memInfo = Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeCPU); auto memInfo = Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeCPU);
int64_t xLengthVal = numFrames; int32_t xLengthVal = numFrames;
int64_t xLengthShape[] = {1}; int64_t xLengthShape[] = {1};
int langCode = languageToInt(lang); int langCode = languageToInt(lang);
int64_t langVal = langCode; int32_t langVal = langCode;
int64_t langShape[] = {1}; int64_t langShape[] = {1};
int64_t textNormVal = kTextNormWithITN; int32_t textNormVal = kTextNormWithITN;
int64_t textNormShape[] = {1}; int64_t textNormShape[] = {1};
std::vector<Ort::Value> inputTensors; std::vector<Ort::Value> inputTensors;
inputTensors.push_back(Ort::Value::CreateTensor<float>( inputTensors.push_back(Ort::Value::CreateTensor<float>(
memInfo, lfrFeatures.data(), lfrFeatures.size(), xShape, 3)); memInfo, lfrFeatures.data(), lfrFeatures.size(), xShape, 3));
inputTensors.push_back(Ort::Value::CreateTensor<int64_t>( inputTensors.push_back(Ort::Value::CreateTensor<int32_t>(
memInfo, &xLengthVal, 1, xLengthShape, 1)); memInfo, &xLengthVal, 1, xLengthShape, 1));
inputTensors.push_back(Ort::Value::CreateTensor<int64_t>( inputTensors.push_back(Ort::Value::CreateTensor<int32_t>(
memInfo, &langVal, 1, langShape, 1)); memInfo, &langVal, 1, langShape, 1));
inputTensors.push_back(Ort::Value::CreateTensor<int64_t>( inputTensors.push_back(Ort::Value::CreateTensor<int32_t>(
memInfo, &textNormVal, 1, textNormShape, 1)); memInfo, &textNormVal, 1, textNormShape, 1));
// 4. 运行推理 // 4. 运行推理