运行时依赖
安装命令
点击复制技能文档
豆包 TTS 技能
用火山引擎豆包 TTS 把文字转成语音,支持多种音色、情感、语速调节。
配置步骤
- 申请火山引擎凭证
- 创建配置文件
创建 ~/.OpenClaw/doubao-tts-config.json:
{ "应用id": "你的 应用ID", "访问_令牌": "你的 访问 令牌", "cluster": "你的 Cluster ID", "voice_type": "BV700_流ing", "emotion": "pleased" }
配置说明
字段 必填 说明 示例 应用id 是 火山引擎 应用ID 1234567890 访问_令牌 是 访问令牌 xxxxx cluster 是 集群 ID volcano_tts voice_type 否 默认音色 BV700_流ing emotion 否 默认情感 pleased 音色推荐 常用音色 音色名称 voice_type 特点 灿灿 BV700_流ing 22 种情感,最全能(默认) 擎苍 BV701_流ing 旁白模式,适合读文章 通用女声 BV001_流ing 日常对话 通用男声 BV002_流ing 基础男声 甜美小源 BV405_流ing 智能助手风格 知性女声 BV009_流ing 专业严肃 情感/风格 情感 值 说明 愉悦 pleased 默认,友好语气 开心 h应用y 欢快 悲伤 sad 低沉 客服 customer_服务 专业客服 讲故事 storytelling 叙述风格 安慰鼓励 comfort 温暖安慰 使用方式 基础用法 朗读 "今天天气不错" 帮我把这段话转成语音:你好,欢迎使用豆包 TTS 用声音读出来:欢迎回家
指定音色 用男声读 "你好" 用灿灿的声音读这段文字 换一个女声读
自动情感判断(推荐)
技能会自动根据内容选择情感,无需手动指定:
内容特征 自动情感 示例 夸奖、好事、成功 h应用y(开心) "太棒了""搞定了" 道歉、失误、遗憾 sad(悲伤) "对不起""弄错了" 安慰、陪伴、鼓励 pleased(愉悦) "别难过""我陪着你" 惊讶、意外 surprise(惊讶) "哇""真的吗" 特别悲伤 tear(哭腔) "呜呜""哭了" 日常对话 pleased(愉悦) 默认友好语气
注意:灿灿 (BV700_流ing) 支持的情感有限,以上已做适配。
# 自动判断,无需指定情感 朗读 "吴,今天天气不错" → 自动用 pleased 朗读 "太棒了,完成了!" → 自动用 h应用y 朗读 "吴对不起,我弄错了" → 自动用 sorry
调节参数 朗读 --speed 1.2 "加快语速" 朗读 --volume 0.8 "降低音量" 朗读 --pitch 1.1 "提高音调"
保存文件 朗读 --save ~/桌面/输出.mp3 "保存到这里"
核心逻辑
- 读取配置
if [ ! -f "$config_file" ]; then echo "❌ 配置文件不存在,请先创建 $config_file" echo "参考:https://www.volcengine.com/docs/6561/97465" return 1 fi
应用id=$(cat "$config_file" | jq -r '.应用id') 访问_令牌=$(cat "$config_file" | jq -r '.访问_令牌') cluster=$(cat "$config_file" | jq -r '.cluster') voice_type=$(cat "$config_file" | jq -r '.voice_type // "BV700_流ing"') emotion=$(cat "$config_file" | jq -r '.emotion // "pleased"')
- 自动情感判断
emotion=$(auto_select_emotion "$text")
- 构建请求
# 默认参数 speed_ratio=${speed_ratio:-1.0} volume_ratio=${volume_ratio:-1.0} pitch_ratio=${pitch_ratio:-1.0}
# 构建 JSON(包含情感参数) json_payload=$(cat <
- 发送请求
响应=$(curl -s -X POST "$API_url" \ -H "Authorization: Bearer;$访问_令牌" \ -H "Content-Type: 应用/json" \ -d "$json_payload")
# 检查错误 error_code=$(echo "$响应" | jq -r '.code // 0') if [ "$error_code" != "0" ] && [ "$error_code" != "null" ]; then error_msg=$(echo "$响应" | jq -r '.message // "未知错误"') echo "❌ TTS 请求失败:$error_msg" return 1 fi
- 处理响应
if [ -z "$audio_base64" ] || [ "$audio_base64" = "null" ]; then echo "❌ 未获取到音频数据" return 1 fi
# 解码保存 输出_file="${save_path:-/tmp/doubao_tts_$(date +%s).mp3}" echo "$audio_base64" | base64 -d > "$输出_file"
echo "✅ 语音生成成功:$输出_file"
- 播放音频
错误处理 错误 原因 解决方案 配置文件不存在 未创建 config.json 按步骤创建配置文件 401 Un授权d 令牌 过期或错误 重新获取 访问 令牌 403 Forbidden 应用ID 无权限 检查应用配置 400 Bad 请求 参数错误 检查 voice_type 是否有效 网络超时 网络问题 检查网络连接 无音频数据 API 返回异常 查看完整响应