双模型协作:OpenClaw同时调用Qwen3.5-9B与Whisper处理会议录音

1. 为什么需要双模型协作处理会议录音

作为一个小团队的负责人,我每周要参加至少5场会议。每次会后整理纪要、提取行动项、同步到协作平台的工作,至少要耗费1小时。直到我发现OpenClaw可以同时调用多个模型,形成自动化流水线。

传统方案要么用Whisper转写后人工整理,要么用大模型直接处理原始音频——前者效率低,后者成本高。而OpenClaw的独特价值在于:

  • 模型分工:Whisper专注高精度语音转文本,Qwen3.5专注语义理解与结构化输出
  • 本地化处理:敏感会议内容无需上传第三方服务
  • 端到端自动化:从音频输入到Notion同步全流程无需人工干预

2. 环境准备与模型部署

2.1 基础环境配置

我的设备是M1 MacBook Pro(16GB内存),先通过Homebrew安装必要依赖:

brew install ffmpeg python@3.10
pip install openclaw whisper-cpp

特别注意:

  • ffmpeg用于音频格式转换
  • whisper-cpp是Whisper的C++移植版,比原版更省内存
  • Python 3.10是OpenClaw的推荐版本

2.2 模型服务部署

~/.openclaw/openclaw.json中配置双模型服务:

{
  "models": {
    "providers": {
      "qwen-local": {
        "baseUrl": "http://localhost:5000/v1",
        "apiKey": "sk-no-key-required",
        "api": "openai-completions",
        "models": [
          {
            "id": "qwen3.5-9b",
            "name": "Qwen3.5-9B Local",
            "contextWindow": 32768
          }
        ]
      },
      "whisper-local": {
        "baseUrl": "http://localhost:9000",
        "api": "whisper",
        "models": [
          {
            "id": "whisper-medium",
            "name": "Whisper Medium"
          }
        ]
      }
    }
  }
}

启动服务时遇到的两个坑:

  1. Whisper服务需要额外指定语言参数,否则会误判中文为英文
  2. Qwen3.5的API地址需要包含/v1后缀才能兼容OpenAI协议

3. 构建自动化流水线

3.1 音频处理阶段

通过OpenClaw的audio-process技能处理录音文件:

openclaw run \
  --model whisper-local \
  --task "transcribe meeting.mp3 to text with timestamp" \
  --params '{"language":"zh"}'

关键改进点:

  • 添加--output-format srt参数获取带时间戳的字幕
  • 设置temperature=0.2降低转写随机性
  • 通过initial_prompt参数提供参会者姓名列表提升识别准确率

3.2 文本分析阶段

将Whisper输出传给Qwen3.5进行结构化处理:

openclaw run \
  --model qwen-local \
  --task "extract action items from meeting transcript" \
  --input-file transcript.json \
  --params '{
    "template": "notion",
    "speaker_roles": {"张伟":"CTO","李娜":"PM"}
  }'

特别设计的Prompt结构:

  1. 先让模型区分"事实记录"与"决策项"
  2. 对每个行动项强制要求包含[负责人][截止时间]
  3. 输出为Notion API兼容的Markdown格式

4. 与Notion的深度集成

4.1 凭证配置

在环境变量中设置Notion集成密钥:

export NOTION_TOKEN='secret_xxx'
export NOTION_DATABASE_ID='yyy'

4.2 自动同步实现

通过OpenClaw的notion-sync技能(社区版)实现一键同步:

// skills/notion-sync/index.js
module.exports = {
  execute: async ({ transcript, actions }) => {
    const { Client } = require('@notionhq/client');
    const notion = new Client({ auth: process.env.NOTION_TOKEN });
    
    await notion.pages.create({
      parent: { database_id: process.env.NOTION_DATABASE_ID },
      properties: {
        '会议主题': { title: [{ text: { content: transcript.title }}] },
        '日期': { date: { start: new Date().toISOString() } }
      },
      children: actions.map(item => ({
        paragraph: { 
          rich_text: [{ text: { content: `@${item.owner} ${item.text}` }}] 
        }
      }))
    });
  }
}

5. 实际效果与优化建议

经过两周的持续使用,这套方案:

  • 平均处理时长从60分钟缩短到8分钟(含3分钟人工复核)
  • 行动项遗漏率比人工记录降低42%(抽样检查20场会议)
  • 团队成员对责任分工的清晰度显著提升

遇到的典型问题及解决方案:

  1. 长音频内存溢出 → 改用whisper.cpp的流式处理模式
  2. 专业术语误识别 → 在initial_prompt中添加术语表
  3. 时区不一致 → 在Notion同步代码中强制指定UTC+8

对于想尝试的开发者,我的建议是:

  • 从小型会议(30分钟以内)开始验证流程
  • 先单独测试每个模型的表现,再组合成流水线
  • 一定要保留人工复核环节,特别是涉及跨部门承诺的事项

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐