名称: voice-wake-say
描述: 当用户输入表明来自语音唤醒/语音识别时(例如,以“User talked via voice recognition on say 命令将回复内容朗读出来。
当对话来自语音唤醒/语音识别时,使用 macOS 的 say 命令将助手的回复内容大声朗读出来。不要使用 tts 工具(它会调用云服务提供商)。
say(逐条检查每条消息)如果 用户消息以以下内容开头:User talked via voice recognition on m3
- 步骤 1: 首先使用 say 进行确认(以便用户知道你已听到)
- 步骤 2: 然后执行任务
- 步骤 3: 如果合适,任务完成后可再次朗读
如果 用户消息不是以该确切短语开头
- 那么: 不要使用 say。仅提供纯文本回复。
关键点:
- 逐条检查每条消息——上下文不会延续
- 触发短语必须位于消息的最开头
- 对于耗时任务,先进行确认,以便用户知道你在处理
1) 检测语音唤醒上下文
- 仅当最新的用户/系统消息以 User talked via voice recognition on m3 开头时触发
- 如果消息指示“先重复提示”,则在回复中保持此行为。
2) 准备朗读文本
- 以最终回复文本为基础。
- 去除 Markdown/代码块;如果回复较长或代码较多,则朗读简短摘要并说明详细信息在屏幕上。
3) 使用 say 朗读(本地 macOS 文本转语音)
printf '%s' "$SPOKEN_TEXT" | say
可选控制(仅在设置时使用):
printf '%s' "$SPOKEN_TEXT" | say -v "$SAY_VOICE"
printf '%s' "$SPOKEN_TEXT" | say -r "$SAY_RATE"
say 不可用或出错,仍发送文本回复并注明文本转语音失败。