Committed by
GitHub
Fix TTS for Unreal Engine (#2349)
Unreal Engine has its own memory management, so we cannot return a struct containing a std::vector object.
正在显示
2 个修改的文件
包含
21 行增加
和
0 行删除
| @@ -419,6 +419,19 @@ GeneratedAudio OfflineTts::Generate(const std::string &text, | @@ -419,6 +419,19 @@ GeneratedAudio OfflineTts::Generate(const std::string &text, | ||
| 419 | return ans; | 419 | return ans; |
| 420 | } | 420 | } |
| 421 | 421 | ||
| 422 | +std::shared_ptr<GeneratedAudio> OfflineTts::Generate2( | ||
| 423 | + const std::string &text, int32_t sid /*= 0*/, float speed /*= 1.0*/, | ||
| 424 | + OfflineTtsCallback callback /*= nullptr*/, void *arg /*= nullptr*/) const { | ||
| 425 | + auto audio = Generate(text, sid, speed, callback, arg); | ||
| 426 | + | ||
| 427 | + GeneratedAudio *ans = new GeneratedAudio; | ||
| 428 | + ans->samples = std::move(audio.samples); | ||
| 429 | + ans->sample_rate = audio.sample_rate; | ||
| 430 | + | ||
| 431 | + return std::shared_ptr<GeneratedAudio>(ans, | ||
| 432 | + [](GeneratedAudio *p) { delete p; }); | ||
| 433 | +} | ||
| 434 | + | ||
| 422 | KeywordSpotter KeywordSpotter::Create(const KeywordSpotterConfig &config) { | 435 | KeywordSpotter KeywordSpotter::Create(const KeywordSpotterConfig &config) { |
| 423 | struct SherpaOnnxKeywordSpotterConfig c; | 436 | struct SherpaOnnxKeywordSpotterConfig c; |
| 424 | memset(&c, 0, sizeof(c)); | 437 | memset(&c, 0, sizeof(c)); |
| @@ -6,6 +6,7 @@ | @@ -6,6 +6,7 @@ | ||
| 6 | #ifndef SHERPA_ONNX_C_API_CXX_API_H_ | 6 | #ifndef SHERPA_ONNX_C_API_CXX_API_H_ |
| 7 | #define SHERPA_ONNX_C_API_CXX_API_H_ | 7 | #define SHERPA_ONNX_C_API_CXX_API_H_ |
| 8 | 8 | ||
| 9 | +#include <memory> | ||
| 9 | #include <string> | 10 | #include <string> |
| 10 | #include <vector> | 11 | #include <vector> |
| 11 | 12 | ||
| @@ -433,6 +434,13 @@ class SHERPA_ONNX_API OfflineTts | @@ -433,6 +434,13 @@ class SHERPA_ONNX_API OfflineTts | ||
| 433 | OfflineTtsCallback callback = nullptr, | 434 | OfflineTtsCallback callback = nullptr, |
| 434 | void *arg = nullptr) const; | 435 | void *arg = nullptr) const; |
| 435 | 436 | ||
| 437 | + // Like Generate, but return a smart pointer. | ||
| 438 | + // | ||
| 439 | + // See also https://github.com/k2-fsa/sherpa-onnx/issues/2347 | ||
| 440 | + std::shared_ptr<GeneratedAudio> Generate2( | ||
| 441 | + const std::string &text, int32_t sid = 0, float speed = 1.0, | ||
| 442 | + OfflineTtsCallback callback = nullptr, void *arg = nullptr) const; | ||
| 443 | + | ||
| 436 | private: | 444 | private: |
| 437 | explicit OfflineTts(const SherpaOnnxOfflineTts *p); | 445 | explicit OfflineTts(const SherpaOnnxOfflineTts *p); |
| 438 | }; | 446 | }; |
-
请 注册 或 登录 后发表评论