Fix TTS for Unreal Engine (#2349)
Unreal Engine has its own memory management, so we cannot return a struct containing a std::vector object.
This commit is contained in:
@@ -419,6 +419,19 @@ GeneratedAudio OfflineTts::Generate(const std::string &text,
|
|||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<GeneratedAudio> OfflineTts::Generate2(
|
||||||
|
const std::string &text, int32_t sid /*= 0*/, float speed /*= 1.0*/,
|
||||||
|
OfflineTtsCallback callback /*= nullptr*/, void *arg /*= nullptr*/) const {
|
||||||
|
auto audio = Generate(text, sid, speed, callback, arg);
|
||||||
|
|
||||||
|
GeneratedAudio *ans = new GeneratedAudio;
|
||||||
|
ans->samples = std::move(audio.samples);
|
||||||
|
ans->sample_rate = audio.sample_rate;
|
||||||
|
|
||||||
|
return std::shared_ptr<GeneratedAudio>(ans,
|
||||||
|
[](GeneratedAudio *p) { delete p; });
|
||||||
|
}
|
||||||
|
|
||||||
KeywordSpotter KeywordSpotter::Create(const KeywordSpotterConfig &config) {
|
KeywordSpotter KeywordSpotter::Create(const KeywordSpotterConfig &config) {
|
||||||
struct SherpaOnnxKeywordSpotterConfig c;
|
struct SherpaOnnxKeywordSpotterConfig c;
|
||||||
memset(&c, 0, sizeof(c));
|
memset(&c, 0, sizeof(c));
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#ifndef SHERPA_ONNX_C_API_CXX_API_H_
|
#ifndef SHERPA_ONNX_C_API_CXX_API_H_
|
||||||
#define SHERPA_ONNX_C_API_CXX_API_H_
|
#define SHERPA_ONNX_C_API_CXX_API_H_
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -433,6 +434,13 @@ class SHERPA_ONNX_API OfflineTts
|
|||||||
OfflineTtsCallback callback = nullptr,
|
OfflineTtsCallback callback = nullptr,
|
||||||
void *arg = nullptr) const;
|
void *arg = nullptr) const;
|
||||||
|
|
||||||
|
// Like Generate, but return a smart pointer.
|
||||||
|
//
|
||||||
|
// See also https://github.com/k2-fsa/sherpa-onnx/issues/2347
|
||||||
|
std::shared_ptr<GeneratedAudio> Generate2(
|
||||||
|
const std::string &text, int32_t sid = 0, float speed = 1.0,
|
||||||
|
OfflineTtsCallback callback = nullptr, void *arg = nullptr) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit OfflineTts(const SherpaOnnxOfflineTts *p);
|
explicit OfflineTts(const SherpaOnnxOfflineTts *p);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user