安全扫描
OpenClaw
可疑
medium confidence该技能的声称目的(通过 SiliconFlow/SenseVoice 实现语音转文本)合理,但运行指令要求 API 密钥、局部配置文件和 ffmpeg 二进制文件,而这些在技能元数据中未声明,这些不匹配之处令人担忧。
评估建议
["安装前,请注意:(1) 预计音频将上传到 https://api.siliconflow.cn — 除非信任该服务,否则不要发送敏感音频。 (2) SKILL.md 期望您提供 API 密钥(如 sk-xxx),通过 ~/.openclaw/openclaw.json 或 SILICONFLOW_API_KEY 环境变量,但技能元数据未声明这一点 — 确认如何提供和保护该密钥。 (3) 确保 ffmpeg 安装并可用于 PATH(技能指令使用 ffmpeg,但元数据未声明)。 (4) 推荐将提供商密钥存储在安全的秘密存储中,而不是明文文件。 (5) 如果需要更高的保证,请要求发布者更新技能元数据,以列出所需的环境变量和二进制文件,并在生产环境中使用前提供硅基流动和技能仓库的来源和主页。"]...详细分析 ▾
⚠ 用途与能力
技能描述指出使用 SiliconFlow (SenseVoice) 进行转录,这合理地需要 API 密钥和网络访问。然而,注册元数据未列出任何所需的环境变量或配置路径,而 SKILL.md 明确指示在 ~/.openclaw/openclaw.json 中存储 API 密钥和/或设置 SILICONFLOW_API_KEY。未声明凭证/配置是一个不一致性:转录技能理应需要提供商 API 密钥,但技能元数据应已声明这一点。
⚠ 指令范围
SKILL.md 包含具体的运行时操作:使用 ffmpeg 将音频转换为 /tmp/audio.mp3,从 ~/.openclaw/openclaw.json 或 SILICONFLOW_API_KEY 环境变量读取 API 密钥,并将音频 POST 到 https://api.siliconflow.cn/v1/audio/transcriptions。上传音频到第三方 API 与声明的目的相符,但指令还引用了未在技能元数据中声明的本地代理配置路径 (~/.openclaw/openclaw.json) 和环境变量 — 这是范围蔓延/未声明的本地配置访问。
ℹ 安装机制
该技能仅有指令(无安装规格,无代码文件),风险较低。然而,指令依赖于 ffmpeg 的安装和可用性;技能元数据未声明此必需的二进制文件。这种疏漏是一个不一致性(未暴露的操作要求)。
⚠ 凭证需求
SKILL.md 需要 API 密钥(示例密钥:sk-xxx),建议将其存储在 ~/.openclaw/openclaw.json 或 SILICONFLOW_API_KEY 中,但元数据中的 requires.env 为空。请求 API 凭证与任务成比例,但未声明它们是一个红旗,因为代理/平台和用户不会被提示或审计该秘密访问。该技能将传输用户音频到第三方端点(隐私影响) — 预期用于云转录,但应在元数据中明确说明。
✓ 持久化与权限
该技能不请求 always:true,不包含写入持久二进制的安装步骤,也不声称修改其他技能或系统范围设置。它仅指示如何格式化调用和放置 API 密钥;这在正常范围内。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.12026/2/26
更新语音消息处理 bash 示例,API Key 现在通过环境变量 SILICONFLOW_API_KEY 读取,提升安全性;移除流程中硬编码 API Key;其他内容未改动。
● 无害
安装命令 点击复制
官方npx clawhub@latest install speech-recognition
镜像加速npx clawhub@latest install speech-recognition --registry https://cn.clawhub-mirror.com
技能文档
使用硅基流动 SenseVoice API 进行语音识别,支持多种音频格式。
激活条件
| 触发场景 | 说明 |
|---|---|
| 用户发送语音消息 | .ogg / .mp3 / .wav / .m4a 文件 |
| 用户要求转录音频 | "转录这个音频"、"语音转文字" |
| 音频文件处理 | 需要提取音频中的文字内容 |
配置
API Key
在~/.openclaw/openclaw.json 中配置:
{ "providers": { "siliconflow": { "apiKey": "sk-xxx" } } }
API 端点
POST https://api.siliconflow.cn/v1/audio/transcriptions
支持的模型
| 模型 | 说明 |
|---|---|
FunAudioLLM/SenseVoiceSmall | 默认,中文效果好 |
使用方法
方法一:直接调用 API
import requests
api_key = "sk-xxx"
with open("/path/to/audio.mp3", "rb") as f:
audio_data = f.read()
response = requests.post(
"https://api.siliconflow.cn/v1/audio/transcriptions",
headers={"Authorization": f"Bearer {api_key}"},
files={"file": ("audio.mp3", audio_data, "audio/mpeg")},
data={"model": "FunAudioLLM/SenseVoiceSmall"},
timeout=60
)
print(response.json().get("text", ""))
方法二:处理用户语音消息
当用户发送.ogg 语音消息时:
# 1. 转换格式(如果是 ogg)
ffmpeg -i /path/to/audio.ogg -ar 16000 -ac 1 /tmp/audio.mp3 -y
# 2. 调用硅基流动 API(API Key 从环境变量读取)
python3 -c "
import requests
import os
api_key = os.environ.get('SILICONFLOW_API_KEY')
if not api_key:
raise ValueError('请设置 SILICONFLOW_API_KEY 环境变量')
with open('/tmp/audio.mp3', 'rb') as f:
audio_data = f.read()
response = requests.post(
'https://api.siliconflow.cn/v1/audio/transcriptions',
headers={'Authorization': f'Bearer {api_key}'},
files={'file': ('audio.mp3', audio_data, 'audio/mpeg')},
data={'model': 'FunAudioLLM/SenseVoiceSmall'},
timeout=60
)
print(response.json().get('text', ''))
""支持的音频格式
格式 扩展名 说明 MP3 .mp3推荐,兼容性好 OGG .oggTelegram/Signal 语音格式,需转换 WAV .wav无压缩,文件大 M4A .m4aiOS 录音格式 FLAC .flac无损压缩
格式转换
如果音频不是 MP3 格式,用 FFmpeg 转换:
bash
# OGG → MP3
ffmpeg -i input.ogg -ar 16000 -ac 1 output.mp3 -y
# WAV → MP3
ffmpeg -i input.wav -ar 16000 -ac 1 output.mp3 -y
# M4A → MP3
ffmpeg -i input.m4a -ar 16000 -ac 1 output.mp3 -y
``
参数说明:
-ar 16000: 采样率 16kHz(语音识别推荐)
-ac 1: 单声道(减少文件大小)
-y: 覆盖已存在的文件错误处理
错误 原因 解决 401 Unauthorized API Key 无效 检查配置 413 Payload Too Large 文件太大 压缩或分割音频 timeout 网络超时 重试或检查网络 Invalid audio format 格式不支持 用 FFmpeg 转换
注意事项
- 文件大小限制:建议 < 10MB
- 时长限制:建议 < 5 分钟
- 语言支持:中文效果最好,英文也支持
- 隐私:音频会上传到硅基流动服务器
相关 Skills
Skill 说明 douyin-video 抖音视频语音提取 cosyvoice-tts` 文字转语音
版本:1.0.0
创建于:2026-02-26
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制