音频处理指南
本指南涵盖如何设置不同的音频输入方法,以将音频数据馈送到您的唇形同步生成器。请确保在继续之前已完成设置指南。
音频输入处理
您需要设置一种方法来处理音频输入。根据您的音频源,有几种方法可以实现。
- 麦克风(实时)
- 麦克风(回放)
- 文本转语音(本地)
- 文本转语音(外部 API)
- 从音频文件/缓冲区
- 流式音频缓冲区
此方法在对着麦克风说话时实时执行唇形同步:
- 标准模型
- 真实感模型
- 支持情绪的真实感模型
- 使用 Runtime Audio Importer 创建一个 Capturable Sound Wave
- 在开始捕获音频之前,绑定到
OnPopulateAudioData
委托 - 在绑定的函数中,从您的 Runtime Viseme Generator 调用
ProcessAudioData
- 开始从麦克风捕获音频
这种方法从麦克风捕获音频,然后通过唇形同步进行回放:
- 标准模型
- 真实模型
- 情绪启用的真实模型
- 使用 Runtime Audio Importer 创建一个 Capturable Sound Wave
- 开始从麦克风捕获音频
- 在回放可捕获音波之前,绑定到其
OnGeneratePCMData
委托 - 在绑定的函数中,调用来自 Runtime Viseme Generator 的
ProcessAudioData
- 常规
- 流式处理
此方法使用本地 TTS 从文本合成语音并执行唇形同步:
- 标准模型
- 真实模型
- 情绪启用的真实模型
- 使用 Runtime Text To Speech 从文本生成语音
- 使用 Runtime Audio Importer 导入合成的音频
- 在播放导入的声波之前,绑定到其
OnGeneratePCMData
委托 - 在绑定的函数中,调用来自 Runtime Viseme Generator 的
ProcessAudioData
由于 ONNX 运行时冲突,Runtime Text To Speech 插件提供的本地 TTS 目前不支持常规真实模型。对于使用常规真实模型的文本转语音,请考虑:
- 使用外部 TTS 服务(ElevenLabs、OpenAI 等)
- 使用外部本地 TTS 解决方案(基于 Python 的 TTS、系统 TTS API 或其他非 ONNX 本地解决方案)
- 改用标准模型或情绪启用的真实模型,它们支持 Runtime Text To Speech 插件
- 使用 Runtime Text To Speech 从文本生成语音
- 使用 Runtime Audio Importer 导入合成的音频
- 在播放导入的声波之前,绑定到其
OnGeneratePCMData
委托 - 在绑定的函数中,调用来自 Mood-Enabled Lip Sync Generator 的
ProcessAudioData
- 根据文本内容或期望的情感表达配置情绪设置
带情绪集成的 TTS:
- 在 TTS 生成之前或期间设置适当的情绪
- 调整情绪强度以匹配文本的情感基调
- 对较长文本内容的不同部分使用不同的情绪
此方法使用流式文本转语音合成与实时唇形同步:
- 标准模型
- 真实模型
- 支持情绪的真实模型
- 使用 Runtime Text To Speech 从文本生成流式语音
- 使用 Runtime Audio Importer 导入合成音频
- 在播放流式声波之前,绑定到其
OnGeneratePCMData
委托 - 在绑定的函数中,从您的 Runtime Viseme Generator 调用
ProcessAudioData
由于 ONNX 运行时冲突,Runtime Text To Speech 插件提供的本地 TTS 目前不支持常规真实模型。如需在常规真实模型中使用文本转语音,请考虑:
- 使用外部 TTS 服务(ElevenLabs、OpenAI 等)
- 使用外部本地 TTS 解决方案(基于 Python 的 TTS、系统 TTS API 或其他非 ONNX 本地解决方案)
- 改用标准模型或支持情绪的真实模型,它们支持 Runtime Text To Speech 插件
- 使用 Runtime Text To Speech 从文本生成流式语音
- 使用 Runtime Audio Importer 导入合成音频
- 在播放流式声波之前,绑定到其
OnGeneratePCMData
委托 - 在绑定的函数中,从您的 Mood-Enabled Lip Sync Generator 调用
ProcessAudioData
- 如有需要,在流式处理期间动态调整情绪设置
- 常规
- 流式传输
此方法使用 Runtime AI Chatbot Integrator 插件从 AI 服务(OpenAI 或 ElevenLabs)生成合成语音并执行唇形同步:
- 标准模型
- 真实模型
- 情绪启用的真实模型
- 使用 Runtime AI Chatbot Integrator 通过外部 API(OpenAI、ElevenLabs 等)从文本生成语音
- 使用 Runtime Audio Importer 导入合成的音频数据
- 在播放导入的声波之前,绑定到其
OnGeneratePCMData
委托 - 在绑定的函数中,调用来自 Runtime Viseme Generator 的
ProcessAudioData
此方法使用 Runtime AI Chatbot Integrator 插件从 AI 服务(OpenAI 或 ElevenLabs)生成合成的流式语音并执行唇形同步:
- 标准模型
- 真实模型
- 情绪启用真实模型
- 使用 Runtime AI Chatbot Integrator 连接到流式 TTS API(如 ElevenLabs 流式 API)
- 使用 Runtime Audio Importer 导入合成的音频数据
- 在播放流式声波之前,绑定到其
OnGeneratePCMData
委托 - 在绑定的函数中,从您的 Runtime Viseme Generator 调用
ProcessAudioData
此方法使用预录制的音频文件或音频缓冲区进行唇形同步:
- 标准模型
- 真实模型
- 情绪启用的真实模型
- 使用 Runtime Audio Importer 从磁盘或内存导入音频文件
- 在播放导入的声波之前,绑定到其
OnGeneratePCMData
委托 - 在绑定的函数中,调用 Runtime Viseme Generator 的
ProcessAudioData
- 播放导入的声波并观察唇形同步动画
对于来自缓冲区的流式音频数据,您需要:
- 标准模型
- 真实模型
- 情绪启用的真实模型
- 来自流式源的浮点 PCM 格式音频数据(浮点样本数组)(或使用 Runtime Audio Importer 以支持更多格式)
- 采样率和声道数
- 当音频块可用时,使用这些参数调用 Runtime Viseme Generator 的
ProcessAudioData
注意: 使用流媒体音频源时,请确保适当管理音频播放时序以避免播放失真。更多信息请参阅流媒体声波文档。
处理性能提示
-
块大小:如果您希望以更小的块处理音频数据以获得更灵敏的口型同步,请调整
SetNumSamplesPerChunk
函数中的计算。例如,将采样率除以150(约每6.67毫秒流式传输一次)而不是100(每10毫秒流式传输一次)将提供更频繁的口型同步更新。 -
缓冲区管理:情绪启用模型以320样本帧(16kHz下为20毫秒)处理音频。确保您的音频输入时序与此对齐以获得最佳性能。
-
生成器重建:对于真实模型的可靠操作,在每次想要在非活动期后输入新音频数据时,请重新创建生成器。
后续步骤
设置好音频处理后,您可能希望: