在使用OpenClaw的过程中我想通过语音给OpenClaw发消息有好几种方式语音转文本在发送之前就通过飞书识别好了内容把文本发给OpenClaw直接发送语音文件让OpenClaw识别语音文件一次偶然使用了第二种OpenClaw告诉我不能识别。我就想让OpenClaw增加识别语音的能力。于是我就开始动工了。启动语音识别的后台FunASR使用之前搭建的FunASR服务让OpenClaw调用FunASR服务将音频转为文字。参考本地部署通义FunASR服务进行语音识别, 本地部署通义FunASR服务中由于我用的websocket服务并且修改了部分服务端代码。我将最新的代码上传到这里https://github.com/tinygone/FunASR。修改内容FunASR\runtime\python\websocket\funasr_wss_server.py主要增加日志方便调试部分代码有微调FunASR\runtime\python\websocket\funasr_wss_client.py主要为了调试可以不用启动准备工作conda create -n faenv python3.12.9 conda activate faenv git clone https://github.com/tinygone/FunASR.git cd FunASR conda activate faenv pip3 install -e ./ # 安装必要的组件如果已经安装了就可以忽略 # 安装modelscope自动下载模型 pip install modelscope # 设置环境变量MODELSCOPE_CACHE目标地址 # 安装pytorch特别的加上了torchaudio pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130 # 更新transformers pip install -U transformers pip install tiktoken pip install websockets pip install pyaudio # 安装ffmpeg不是一行命令就能搞定参考之前的材料启动服务器这样服务器就启动好了# host 可以换成服务器的ip但还是建议用0.0.0.0这样能在tailscale环境下使用 python .\funasr_wss_server.py --host 0.0.0.0 --port 10095构建识别流程飞书发送音频文件时gog格式如果直接给FunASR识别识别不出来。所以要先转换为wav格式。给OpenClaw增加相关的Skill和处理脚本。文件地址在https://github.com/tinygone/openclaw-feishu-voice-skill包括2部分内容voice-handle skill要放到~/.openclaw/skills/目录speech-to-text 处理脚本要放到~/.openclaw/middleware/目录下确保Agent能够识别Skill并且OpenClaw所在的环境已经启动。如果没有配置好Skill此时可以通过飞书发送语音消息给OpenClaw的Agent。会受到类似的消息下面是收到一个16秒的音频文件。[media attached: /home/band/.openclaw/media/inbound/xxx.ogg (audio/ogg; codecsopus) | /home/band/.openclaw/media/inbound/7c570ea2-4b9a-4105-a8c9-26d8e7047a24.ogg] To send an image back, prefer the message tool (media/path/filePath). If you must inline, use MEDIA:[https://example.com/image.jpg](https://example.com/image.jpg) (spaces ok, quote if needed) or a safe relative path like MEDIA:./image.jpg. Avoid absolute paths (MEDIA:/...) and ~ paths — they are blocked for security. Keep caption in the text body. ou_xxx: {file_key:file_xxx,duration:16000}如果Skill已经配置好且客户端OpenClaw所在的电脑、FunASR服务端均正确运行就会受到类似下面的消息。实测下来GLM-5模型、Ollama本地运行的qwen3.5:9b均能正常运行。有了FunASR服务未来只要有音频都可以交给OpenClaw帮我识别成文字。
OpenClaw+FunASR识别飞书发来的音频文件
在使用OpenClaw的过程中我想通过语音给OpenClaw发消息有好几种方式语音转文本在发送之前就通过飞书识别好了内容把文本发给OpenClaw直接发送语音文件让OpenClaw识别语音文件一次偶然使用了第二种OpenClaw告诉我不能识别。我就想让OpenClaw增加识别语音的能力。于是我就开始动工了。启动语音识别的后台FunASR使用之前搭建的FunASR服务让OpenClaw调用FunASR服务将音频转为文字。参考本地部署通义FunASR服务进行语音识别, 本地部署通义FunASR服务中由于我用的websocket服务并且修改了部分服务端代码。我将最新的代码上传到这里https://github.com/tinygone/FunASR。修改内容FunASR\runtime\python\websocket\funasr_wss_server.py主要增加日志方便调试部分代码有微调FunASR\runtime\python\websocket\funasr_wss_client.py主要为了调试可以不用启动准备工作conda create -n faenv python3.12.9 conda activate faenv git clone https://github.com/tinygone/FunASR.git cd FunASR conda activate faenv pip3 install -e ./ # 安装必要的组件如果已经安装了就可以忽略 # 安装modelscope自动下载模型 pip install modelscope # 设置环境变量MODELSCOPE_CACHE目标地址 # 安装pytorch特别的加上了torchaudio pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130 # 更新transformers pip install -U transformers pip install tiktoken pip install websockets pip install pyaudio # 安装ffmpeg不是一行命令就能搞定参考之前的材料启动服务器这样服务器就启动好了# host 可以换成服务器的ip但还是建议用0.0.0.0这样能在tailscale环境下使用 python .\funasr_wss_server.py --host 0.0.0.0 --port 10095构建识别流程飞书发送音频文件时gog格式如果直接给FunASR识别识别不出来。所以要先转换为wav格式。给OpenClaw增加相关的Skill和处理脚本。文件地址在https://github.com/tinygone/openclaw-feishu-voice-skill包括2部分内容voice-handle skill要放到~/.openclaw/skills/目录speech-to-text 处理脚本要放到~/.openclaw/middleware/目录下确保Agent能够识别Skill并且OpenClaw所在的环境已经启动。如果没有配置好Skill此时可以通过飞书发送语音消息给OpenClaw的Agent。会受到类似的消息下面是收到一个16秒的音频文件。[media attached: /home/band/.openclaw/media/inbound/xxx.ogg (audio/ogg; codecsopus) | /home/band/.openclaw/media/inbound/7c570ea2-4b9a-4105-a8c9-26d8e7047a24.ogg] To send an image back, prefer the message tool (media/path/filePath). If you must inline, use MEDIA:[https://example.com/image.jpg](https://example.com/image.jpg) (spaces ok, quote if needed) or a safe relative path like MEDIA:./image.jpg. Avoid absolute paths (MEDIA:/...) and ~ paths — they are blocked for security. Keep caption in the text body. ou_xxx: {file_key:file_xxx,duration:16000}如果Skill已经配置好且客户端OpenClaw所在的电脑、FunASR服务端均正确运行就会受到类似下面的消息。实测下来GLM-5模型、Ollama本地运行的qwen3.5:9b均能正常运行。有了FunASR服务未来只要有音频都可以交给OpenClaw帮我识别成文字。