Audio Reply 是一个用于生成语音回复的技能,底层使用 MLX Audio 的 TTS 能力,具体模型为 chatterbox-turbo。它的目标是把文字内容或对话回复转成可播放的音频。
用途与触发方式 该技能通过特定短语触发。常见触发词包括:
- “read it to me [URL]”:抓取指定网址的内容并朗读出来。
- “talk to me [topic/question]”:针对某个话题或问题生成口语化的语音回复。
- “speak”“say it”“voice reply”:将回复转换为音频。
主要能力
- 读取网址内容:使用 WebFetch 抓取 URL 内容,提取可读文本(去除 HTML、聚焦正文),再通过 TTS 生成音频,播放后删除文件。
- 对话式语音回复:生成自然、口语化的回复,保持简洁,转换为音频后播放并删除文件。
使用方式 核心 TTS 命令如下:
uv run mlx_audio.tts.generate
--model mlx-community/chatterbox-turbo-fp16
--text "Your text here"
--play
--file_prefix /tmp/audio_reply
关键参数:
- --model mlx-community/chatterbox-turbo-fp16:快速、自然的语音。
- --play:自动播放生成的音频。
- --file_prefix:保存到临时位置以便清理。
- --exaggeration 0.3:可选,增加表现力(0.0-1.0)。
- --speed 1.0:可选,调整语速。
文本准备建议 “read it to me”模式:用 WebFetch 抓取 URL;提取正文,去除导航、广告和模板内容;如果内容很长(超过 500 词)则进行摘要,保留关键点;用句号和逗号添加自然停顿。 “talk to me”模式:以口语方式书写,像说话一样;使用缩写(I'm、you're、it's);少量使用填充词以增加自然感([chuckle]、um、anyway);回复控制在 200 词以内以获得最佳质量;除非需要解释,否则避免技术术语。
音频生成与清理 播放后务必删除音频文件,因为内容已经存在于聊天记录中。示例:
OUTPUT_FILE="/tmp/audio_reply_$(date +%s)"
uv run mlx_audio.tts.generate
--model mlx-community/chatterbox-turbo-fp16
--text "Your response text"
--play
--file_prefix "$OUTPUT_FILE"
rm -f "${OUTPUT_FILE}"*.wav 2>/dev/null
错误处理 如果 TTS 失败:检查模型是否已下载(首次运行会下载约 500MB);确保 uv 已安装并在 PATH 中;回退到文本回复并致歉。
示例工作流 示例 1:读取 URL 用户:read it to me https://blog.example.com/new-feature 助手操作:WebFetch 该 URL;提取文章内容;生成 TTS;删除音频文件;确认“Done reading the article to you.”。
示例 2:对话 用户:talk to me about what you can help with 助手操作:生成对话式回复文本;生成 TTS;删除音频文件;无需文本输出,音频即为回复。
适用场景 适合需要把网页内容或对话回复以语音形式呈现的场景,例如朗读文章、语音化问答等。
限制与注意事项 首次运行可能因模型下载(约 500MB)而较慢;音频质量以英语最佳,其他语言可能有所差异;长内容建议分块为多个音频片段;--play 使用系统音频,需确保音量已打开。