名称: voice-wake-say
描述: 当用户输入表明来自语音唤醒/语音识别时(例如,以“User talked via voice recognition on say 命令将助手的回复内容朗读出来。
当对话源自语音唤醒/语音识别时,使用 macOS 的 say 命令将助手的回复内容大声朗读出来。不要使用 tts 工具(它会调用云服务提供商)。
say(请逐条检查每条消息)如果用户消息以以下内容开头:User talked via voice recognition
- 步骤 1: 首先使用 say 进行确认(以便用户知道你已听到)
- 步骤 2: 然后执行任务
- 步骤 3: 如果合适,在任务完成后可再次朗读
如果用户消息不是以该确切短语开头
- 那么: 不要使用 say。仅提供纯文本回复。
关键点:
- 逐条检查每条消息——上下文不会延续
- 触发短语必须位于消息的最开头
- 对于耗时任务,先进行确认,以便用户知道你在处理
1) 检测语音唤醒上下文
- 仅当最新的用户/系统消息以 User talked via voice recognition 开头时触发。
- 如果消息指示“先重复提示”,则在回复中保持此行为。
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 不可用或出错,仍发送文本回复,并注明文本转语音失败。