当前位置: 首页 > news >正文

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 python=3.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; codecs=opus) | /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,帮我识别成文字。

http://www.jsqmd.com/news/487010/

相关文章:

  • Kotlin协程异常捕获:别让try-catch“翻车”了!
  • C#学习笔记——委托
  • Ai8051 独立按键控制LED实验
  • 福宝的「熵减日记」:从「记忆混乱」到「响应如飞」的72小时进化史 [特殊字符][特殊字符]
  • Thinkphp和Laravel框架都支持基于微信小程序的公开课选课打卡管理系统的设计与实现-
  • 2026年企业健身房规划方案,打造健康办公新生态
  • AC 双链路备份与冷热备核心知识点总结
  • qt PlotJuggler
  • 对量化交易未来的思考
  • 老品牌为什么在 AI 推荐里比较里靠后:一次公开表达收口排查
  • 小程序制作平台有哪些?SaaS模板类平台评测
  • 测试文章发布 - 编辑版本1773572369633
  • 专注AI优化的服务商
  • 嘎嘎降AI vs 零感AI vs 率零:3款降AI工具深度横评
  • MySQL锁机制:从懵逼到入门,我花了三年
  • Oracle数据库降低水位线
  • RedisSearch 和 Elasticsearch 的 HNSW向量索引对比
  • 计算机毕设云服务器部署避坑指南:从本地到阿里云/腾讯云,一键部署不踩雷
  • If the existence of a group in which one lives is meaningless.
  • 从0开始数据仓库--数据表范式
  • 聚焦民生就医需求 陪诊行业规范提质 北京守嘉陪诊引领行业高质量发展 - 品牌排行榜单
  • 游戏相关AI技术
  • Ozon卖家醒醒吧!别再“手动搬砖”了,你的对手已经在用AI“开挂”了
  • 跨境电商选品师口碑如何?网上教你做电商的可信吗?
  • 世界读书日|与AI共舞,在阅读中寻找你的不可替代性
  • 人工智能之数字生命--“骨架真相”
  • 产品经理工作坊
  • CopyOnWriteArrayList源码学习
  • 拓宽视野:AI领域的非技术岗位全景图(产品、运营、销售等)
  • MySQL 中 MVCC 和锁的关系与配合