Skip to main content
AgentScope Java 提供了完整的 TTS 能力支持,让 Agent 不仅能思考和回复,还能开口说话。相比于纯文本的场景,语音是更自然的交互方式,适用于 智能客服、车载助手,以及边生成边朗读的实时对话场景。

选择合适的模型

非实时模型:适合对音频质量要求高、可以接受几秒延迟的场景,例如播客、有声书、短视频配音等。使用 DashScopeTTSModelqwen3-tts-flash 模型,一次性发送完整文本,等待服务器处理完整个音频后返回,模型可以全局优化整段话的重音、语调和情感,获得最佳的音频质量。 实时模型:适合对响应速度要求高、需要边生成边播放的场景,例如 AI 助手、实时翻译等。使用 DashScopeRealtimeTTSModelqwen3-tts-flash-realtime 模型,流式发送文本块片段,服务器实时返回音频块,延迟更低。虽然是分块合成,但模型也会保留上下文窗口来维持自然度。

使用方式

AgentScope 提供三种使用 TTS 的方式: ReActAgent 集成:通过在 ReActAgent 中添加 TTSHook,可以实现 Agent 所有回复的自动朗读,只需添加 TTSHook 就能实现边生成边播放的效果。 独立使用 TTSModel:不依赖 Agent,直接调用 TTSModel 进行独立语音合成,可以灵活使用,适合需要单独进行语音转换的场景。 作为工具使用 DashScopeMultiModalTool:将 TTS 作为多模态工具提供给 Agent,Agent 可以自行判断在需要时将文字转成语音。

方式一:ReActAgent 集成

通过在 ReactAgent 添加 TTSHook 的方式,支持 ReactAgent 在回复时自动朗读。 工作原理
  • 事件监听机制:TTSHook 实现了 Hook 接口,监听 Agent 执行过程中的事件。当 Agent 开始推理时触发 PreReasoningEvent,生成文本块时触发 ReasoningChunkEvent,推理完成时触发 PostReasoningEvent
  • 实时流式合成:在实时模式下,TTSHook 监听 ReasoningChunkEvent,每当 Agent 生成一个文本块时,立即通过 WebSocket 推送到 TTS 模型进行语音合成。这样实现了”边生成边播放”的效果,用户几乎感觉不到延迟。
  • 会话生命周期管理:在第一次收到文本块时,TTSHook 会启动 TTS 会话(建立 WebSocket 连接)并订阅音频流。当 Agent 推理完成时,调用 finish() 提交剩余文本并关闭会话,确保所有音频都被合成和播放。
  • 音频分发机制:生成的音频块通过三种方式分发:1) 发送到响应式流(audioSink),供 SSE/WebSocket 前端订阅;2) 调用 audioCallback 回调函数,用于自定义处理;3) 通过 AudioPlayer 本地播放,适用于 CLI/桌面应用。
  • 播放中断处理:当新的推理开始时(PreReasoningEvent),TTSHook 会中断当前正在播放的音频,关闭旧的 TTS 会话,确保新回复的音频能够立即开始播放,避免音频混乱。

本地播放模式(CLI/桌面应用)

使用 WebSocket 实时流式合成,支持边生成边播放:

服务器模式(Web/SSE)

在 Web 应用中,音频需要发送到前端播放,可以将音频通过 SSE 发送到前端,或者使用响应式流,完整的代码可以参考 agentscope-examples/documentation/chat-tts 模块,包含前后端交互。

方式二:独立使用 TTSModel

不依赖 Agent,直接调用 TTS 模型进行语音合成。

2.1 非实时模式

适合一次性返回完整音频:

2.2 实时模式 - 增量输入(Push/Finish 模式)

适用于 LLM 流式输出场景,边接收文本边合成:

SessionMode 说明


方式三:DashScopeMultiModalTool(作为 Agent 工具)

Agent 通过工具方式调用 TTS,Agent 自行判断在需要时将文字转成语音

完整示例

  • 快速开始:agentscope-examples/documentation/quickstart/TTSExample.java
  • 完整示例:agentscope-examples/documentation/chat-tts 模块,包含前后端交互

核心组件配置参数

DashScopeRealtimeTTSModel

DashScopeTTSModel

TTSHook