集成其他TTS方案

MediaPipe4USpeech 将 TTS 功能抽象为 ITTSSolution 接口,通过实现这个接口,你可以将其他的 TTS 方案整合到 MediaPipe4USpeech 中。 例如,可以实现一个调用 Microsoft Azure 语音接口的方案。

class MEDIAPIPESPEECH_API ITTSSolution
{
	GENERATED_BODY()

	// Add interface functions to this class. This is the class that will be inherited to implement this interface.
public:
	virtual int GetSpeakerId() = 0;
	virtual int32 GetSampleRate() =0;

	virtual  bool TextToSpeech(const FString& Sentence, FWavClip& OutWav) = 0;
	
	virtual void RaiseWavChunkReceivedEvent(TSharedRef<FWaveChunk> InWavChunk) = 0;
	virtual void RaiseInferenceCompletedEvent(const FGuid& SentenceId, ESpeechState State) = 0;

	virtual FTTSInferenceCompletedEvent& GetInferenceCompletedEvent() = 0;
	virtual FTTSWavChunkReceivedEvent& GetWavChunkReceivedEvent() = 0;

	virtual void SetDebugLogEnabled(bool bEnabled) = 0;
};

函数说明

TextToSpeech

执行文本转语音,并且输出一个 PCM 数据块。

GetSpeakerId

获取默认的发音人 id,id 必须为数字,如果你的 TTS 方案发音人不是数字,你需要自己制作发音人字典,如果你没有发音人(只有一个发音人),可以返回 -1。

GetSampleRate

获取 TTS 采样率。

GetInferenceCompletedEvent

返回 TTS 文本处理完成的事件。

GetWaveChunkReceivedEvent

返回 TTS 分句片段执行完成的事件,如果你的 TTS 不支持分句,你仅在完成时触发一次该事件即可。

RaiseWaveChunkReceivedEvent

触发一个分句 TTS 片段完成的事件。

RaiseInferenceCompletedEvent

触发整个文本 TTS 完成的事件。

SetDebugLogEnabled

设置是否启用调试日志。


Table of contents