需在skill.yaml中配置speech_recognition:true、权限及意图模式,注册asr.result事件监听,适配第三方ASR引擎,声明音频采集参数,并设置触发条件与超时机制。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
如果您希望在OpenClaw平台中启用语音转文字功能,但当前Skill未正确配置或无法触发语音输入,则可能是由于技能参数、权限声明或事件绑定缺失所致。以下是完成OpenClaw语音输入技能完整接入的具体方法:
一、配置Skill基础元信息
需在skill.yaml文件中明确定义语音识别相关能力标识,使OpenClaw运行时能识别该Skill支持语音输入交互模式。
1、打开项目根目录下的
文件。
2、在
字段下添加
条目。
3、在
字段中加入
和
两项权限声明。
4、确保
中至少包含一条以语音唤醒词为前缀的匹配规则,例如
或
。
二、实现语音事件监听与回调注册
OpenClaw通过事件总线分发ASR结果,Skill必须主动订阅
事件并注册处理函数,否则无法接收识别文本。
1、在Skill主类的
方法末尾添加
。
2、定义
方法,接收参数
,从中提取
获取识别结果。
3、在该方法内调用
进行即时反馈验证。
4、确认事件监听器在Skill启动时已激活,可通过日志输出
辅助排查。
三、集成第三方ASR引擎适配层
当OpenClaw默认ASR服务不可用时,需手动接入外部语音识别API,Skill须构造符合其协议的HTTP请求并解析响应。
1、在
中添加对应SDK依赖,如
或
。
2、创建
模块,在其中封装
函数。
OpenClaw
开源的自托管AI智能体助手,曾用名Clawdbot、Moltbot
下载
3、使用
接口提交音频数据,Header中设置
。
4、从JSON响应的
路径提取识别文本,并捕获
或
状态码异常。
四、声明音频采集策略与采样参数
语音输入质量直接受音频采集配置影响,Skill需在初始化阶段向OpenClaw音频管理器声明所需采样率、通道数及缓冲区大小。
1、在Skill初始化代码中调用
申请单声道16kHz流式音频。
2、监听
事件,在回调中启动本地VAD(语音活动检测)逻辑。
3、当检测到有效语音段时,调用
获取原始PCM帧。
4、将连续5帧以上非静音数据打包为WAV格式字节流,作为ASR输入源,注意写入合法RIFF头和
子块。
五、配置语音输入触发条件与超时机制
避免误触发或长时间无响应,Skill需设定明确的语音输入激活边界,包括唤醒方式、静音阈值和最大持续时间。
1、在
中添加
指定双模触发。
2、设置
,表示连续800毫秒无语音即终止采集。
3、配置
,限制单次语音输入最长15秒。
4、若使用按键触发,需监听
事件,并在300毫秒内调用
,否则视为无效操作。
skill.yamlcapabilitiesspeech_recognition: truepermissionsmicrophone_accessspeech_to_textintent_patterns"我要听.*""把.*转成文字"asr.result__init__self.add_event("asr.result", self.on_asr_result)on_asr_resultmessagemessage.data.get("text")self.speak("已收到:"+text)self.log.info("ASR listener registered")requirements.txtrequests==2.31.0pyaudio==0.2.13asr_adapter.pytranscribe_audio(wav_bytes)POST /v1/recognizeAuthorization: Bearer YOUR_API_KEYresult.text401429self.audio_manager.request_stream(16000, 1, 1024)audio.stream.startself.audio_manager.capture_chunk()fmt skill.yamltrigger_mode: "hotword_or_button"silence_threshold_ms: 800max_duration_sec: 15input.button.pressedself.start_listening()