OpenClaw 语音工作流:听写、合成、通话一条龙

68次阅读

OpenClaw 语音工作流:听写、合成、通话一条龙

打字太慢?OpenClaw 的语音技能让你说话就能输入,AI 语音回复,甚至实现语音通话。本文带你搭建完整的语音交互工作流。


01 语音工作流的价值

什么场景需要语音?

OpenClaw 语音三件套:

  • 🎤 Whisper — 语音转文字(STT)

  • 🔊 SAG — 文字转语音(TTS)

  • 📞 Voice Call — 语音通话


02 环境准备

安装依赖

SAG (ElevenLabs TTS)

# macOS (使用 Homebrew)
brew install steipete/tap/sag

# Linux / 其他平台
# 从 GitHub Releases 下载二进制
curl -L https://github.com/steipete/sag/releases/latest/download/sag-linux-amd64 -o sag
chmod +x sag
sudo mv sag /usr/local/bin/

# 验证安装
sag --version

💡 注意: steipete/tap/sag 是 macOS 的 Homebrew tap。Linux 用户请直接从 GitHub Releases 下载二进制文件。

配置 API Key

# Whisper (OpenAI)
export OPENAI_API_KEY="sk-xxxxxxxx"

# SAG (ElevenLabs)
export ELEVENLABS_API_KEY="ele_xxxxxxxx"

# 或写入 OpenClaw 配置
cat ~/.openclaw/openclaw.json
{
  "skills": {
    "entries": {
      "openai-whisper-api": {"apiKey": "sk-xxxxxxxx"},
      "sag": {"apiKey": "ele_xxxxxxxx"}
    }
  }
}

03 语音转文字(Whisper)

快速开始

# 转录音频文件
~/.nvm/versions/node/v22.17.0/lib/node_modules/openclaw/skills/openai-whisper-api/scripts/transcribe.sh /path/to/meeting.m4a

# 输出:meeting.m4a.txt

进阶用法

# 指定语言(提高准确率)~/.nvm/versions/node/v22.17.0/lib/node_modules/openclaw/skills/openai-whisper-api/scripts/transcribe.sh meeting.m4a --language zh

# JSON 输出(带时间戳)~/.nvm/versions/node/v22.17.0/lib/node_modules/openclaw/skills/openai-whisper-api/scripts/transcribe.sh meeting.m4a --json --out transcript.json

# 提示词(帮助识别专有名词)~/.nvm/versions/node/v22.17.0/lib/node_modules/openclaw/skills/openai-whisper-api/scripts/transcribe.sh meeting.m4a \
  --prompt "Speaker names: 张三, 李四, OpenClaw"

04 文字转语音(SAG)

快速开始

# 基础用法
sag " 你好,这是 OpenClaw 语音助手 "

# 指定声音
sag -v Roger "Hello there"

# 保存到文件
sag -o output.mp3 " 这段文字会被保存为音频文件 "

查看可用声音

sag voices

常用声音:Roger — 成熟男声 – Rachel — 清晰女声 – Clawd — OpenClaw 默认(lj2rcrvANS3gaWWnczSX)

情感标签(v3 模型)

# 耳语
sag "[whispers] 这是一个秘密 "

# 兴奋
sag "[excited] 太棒了!我们成功了!"

# 叹气
sag "[sighs] 今天真是漫长的一天 "

# 笑声
sag "[laughs] 这个笑话太好笑了 "

# 停顿
sag " 听我说 [short pause] 这很重要 [long pause] 请记住 "

05 实战演示

案例 1:会议录音自动转录

场景: 1 小时会议,需要文字记录

#!/bin/bash
# transcribe-meeting.sh

AUDIO_FILE="$1"
OUTPUT_DIR="./transcripts"
mkdir -p $OUTPUT_DIR

# 1. 转录
~/.nvm/versions/node/v22.17.0/lib/node_modules/openclaw/skills/openai-whisper-api/scripts/transcribe.sh \
  "$AUDIO_FILE" \
  --language zh \
  --out "$OUTPUT_DIR/meeting.txt"

# 2. 生成摘要(结合 summarize skill)echo " 会议摘要:"
cat "$OUTPUT_DIR/meeting.txt" | head -50

echo " 转录完成:$OUTPUT_DIR/meeting.txt"

输出示例:

[00:00] 张三:大家好,今天讨论 Q3 产品规划
[00:15] 李四:我建议优先做移动端适配
[00:32] 王五:资源方面,我们有两个开发人力
...

案例 2:语音回复消息

场景: 开车时收到消息,语音回复

# 生成语音回复
sag -v Roger -o /tmp/reply.mp3 " 我正在开车,稍后回复你 "

# 发送(通过 OpenClaw message 工具)message action="send" target="your-chat-id" media="/tmp/reply.mp3"

💡 说明: message 是 OpenClaw 工具调用,不是 CLI 命令。需要在 OpenClaw 环境中使用。


案例 3:播客批量转录

场景: 有 10 期播客需要转文字稿

#!/bin/bash
# batch-transcribe.sh

for audio in ~/Podcasts/*.mp3; do
  filename=$(basename "$audio" .mp3)
  echo " 转录: $filename"

  ~/.nvm/versions/node/v22.17.0/lib/node_modules/openclaw/skills/openai-whisper-api/scripts/transcribe.sh \
    "$audio" \
    --language zh \
    --out "~/Transcripts/${filename}.txt"
done

echo " 全部转录完成!"

案例 4:AI 语音助手(完整闭环)

场景: 语音输入 → AI 处理 → 语音输出

#!/bin/bash
# voice-assistant.sh

# 1. 录制语音(3 秒)echo " 请说话..."
rec -r 16000 -c 1 /tmp/input.wav trim 0 3

# 2. 转文字
TEXT=$(~/.nvm/versions/node/v22.17.0/lib/node_modules/openclaw/skills/openai-whisper-api/scripts/transcribe.sh \
  /tmp/input.wav --out /tmp/input.txt && cat /tmp/input.txt)

echo " 你说: $TEXT"

# 3. AI 处理(这里简化,实际调用 OpenClaw agent)RESPONSE=" 收到你的消息: $TEXT"

# 4. 语音回复
sag "$RESPONSE"

echo " 完成!"

案例 5:多语言实时翻译

场景: 英文会议,实时翻译成中文

#!/bin/bash
# live-translate.sh

AUDIO_FILE="$1"

# 1. 英文转录
~/.nvm/versions/node/v22.17.0/lib/node_modules/openclaw/skills/openai-whisper-api/scripts/transcribe.sh \
  "$AUDIO_FILE" \
  --language en \
  --out /tmp/english.txt

# 2. 翻译(结合其他工具)cat /tmp/english.txt | translate-en-to-zh > /tmp/chinese.txt

# 3. 中文语音输出
sag -v Rachel "$(cat /tmp/chinese.txt | head -1)"

06 进阶技巧

技巧 1:自定义语音角色

# 创建专属声音配置文件
cat > ~/.sagrc <<EOF
voice_id: your-custom-voice-id
model: eleven_v3
normalize: auto
lang: zh
EOF

技巧 2:批量生成有声书

#!/bin/bash
# audiobook-generator.sh

CHAPTERS=~/Book/chapter*.txt
for chapter in $CHAPTERS; do
  num=$(echo $chapter | grep -o '[0-9]*')
  echo " 生成第 $num 章..."

  sag -v Roger -o ~/Audiobook/chapter${num}.mp3 "$(cat $chapter)"
done

# 合并(使用 ffmpeg)ffmpeg -i "concat:$(echo ~/Audiobook/chapter*.mp3 | tr '''|')" -acodec copy book.mp3

技巧 3:语音通知系统

#!/bin/bash
# voice-alert.sh

# 检查系统状态
DISK_USAGE=$(df -h / | tail -1 | awk '{print $5}' | tr -d '%')

if ["$DISK_USAGE" -gt 90]; then
  sag "[excited] 警告!磁盘使用率超过 90%,请及时清理!"
fi

# 检查网站状态
if ! curl -s https://example.com > /dev/null; then
  sag "[sighs] 网站无法访问,请检查服务状态 "
fi

配合 cron:

# 每 30 分钟检查一次
*/30 * * * * /path/to/voice-alert.sh

技巧 4:播客风格开场白

sag "[excited] 欢迎收听本期节目![short pause] 我是主持人 Roger。[short pause] 今天我们要聊的是 OpenClaw 的语音工作流。"

07 常见问题

Q1: Whisper 转录中文准确率不高

优化:

# 明确指定语言
--language zh

# 添加提示词帮助识别
--prompt " 技术术语: OpenClaw, API, Gateway"

Q2: SAG 提示 API Key 无效

检查:

echo $ELEVENLABS_API_KEY
# 或
echo $SAG_API_KEY

Q3: 如何降低语音合成的成本?

策略: – 使用 eleven_flash_v2_5 模型(更快更便宜)– 批量生成,减少 API 调用次数 – 缓存常用语音片段

Q4: 支持哪些音频格式?

Whisper 支持: – mp3, mp4, mpeg, mpga, m4a, wav, webm

建议: – 使用 m4a(iPhone 录音默认格式)– 或 wav(无损,适合后期处理)


08 总结

下一步: – 尝试不同的声音和情感标签 – 结合手机节点实现真正的”口袋语音助手”– 探索 voice-call 技能实现语音通话


本文是 OpenClaw 进阶技能系列第 4 篇,下一篇:《OpenClaw 浏览器自动化:解放你的重复操作》

#OpenClaw #语音识别 #TTS #Whisper #ElevenLabs #语音助手

正文完