让你的龙虾员工一人一个声线,全语音交流(完全免费,mac和win都能用)

0 阅读4分钟

很多朋友装完龙虾后,觉得不能语音交流,总归是差点儿意思,小孩子用起来也不够方便。今天教大家如何不花钱,让你的龙虾愿意听你说话,还能开口说话。

如何让龙虾听懂语音

方案:

你对着手机说话->OpenClaw下载音频,使用本地ASR模型转录->发给模型文字,后面的流程照旧。

OpenClaw原生支持很多种方案,比如sherpa-onnx-offline,whisper等。据我实测,区别不大,树莓派上可能安装sherpa-onnx更适合。本文以whisper为例,虽然OpenClaw会检测whisper命令并做一些便捷处理,但是自己写脚本的话更灵活。

macOS用户

macOS上我们用优化的mlx-whisper。把下面这几段命令,一一复制到终端里面执行即可。

brew install ffmpeg
# 从镜像下载模型
export HF_ENDPOINT="https://hf-mirror.com"

# 建立工程目录
mkdir -p ~/.openclaw/my-scripts/asr
cd ~/.openclaw/my-scripts/asr
python3 -m venv .venv
source .venv/bin/activate
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn
pip install mlx-whisper

# 方便OpenClaw调用的脚本
cat > mlx-whisper-transcribe.sh <<EOF
#!/usr/bin/env bash
SCRIPT_DIR=\$(cd \`dirname \$0\`;pwd)
source \${SCRIPT_DIR}/.venv/bin/activate

python3 -c "
import mlx_whisper, sys
result = mlx_whisper.transcribe(
    sys.argv[1],
    language='zh',
    path_or_hf_repo='mlx-community/whisper-base-mlx'
)
print(result['text'])
" "\$1" 2>/dev/null
EOF

# 准备一个音频文件,触发一次模型下载
bash mlx-whisper-transcribe.sh path_to_your.mp3

# OpenClaw的配置
openclaw config set tools.media.audio '{
  "enabled": true,
  "scope": { "default": "allow" },
  "models": [{
    "type": "cli",
    "command": "bash",
    "args": [
      "${HOME}/.openclaw/my-scripts/mlx-whisper-transcribe.sh",
      "{{MediaPath}}"
    ]
  }]
}'

Windows

先装python和pipx,把它们加到PATH变量中。然后执行以下命令

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn
[Environment]::SetEnvironmentVariable("HF_ENDPOINT", "https://hf-mirror.com", "User")

winget install Gyan.FFmpeg
pip install faster-whisper

# 准备一个音频文件,触发一次模型下载
whisper your_path.mp3 --model base --language zh

# OpenClaw配置,注意改成自己的目录
openclaw config set tools.media.audio '
{
        "enabled": true,
        "scope": {
          "default": "allow"
        },
        "models": [
          {
            "type": "cli",
            "command": "python",
            "args": [
              "C:\\Users\\换成自己的路径\\.openclaw\\my-scripts\\whisper-transcribe.py",
              "{{MediaPath}}"
            ]
          }
        ]
   }
'

在 C:\Users\换成自己的路径\.openclaw\my-scripts\ 新建 whisper-transcribe.py,将以下内容一行不差全部复制进去,然后重启OpenClaw测试即可。

# -*- coding: utf-8 -*-

import sys
import io
import codecs
from faster_whisper import WhisperModel

# 强制使用UTF-8编码输出
if sys.platform == "win32":
    # Windows控制台编码设置
    import ctypes
    ctypes.windll.kernel32.SetConsoleOutputCP(65001)

# 确保stdout使用UTF-8编码
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')

model = WhisperModel("base", device="cpu", compute_type="int8")

segments, info = model.transcribe(sys.argv[1], language="zh")

# 输出结果
for segment in segments:
    print(segment.text)

重启一下龙虾,你就能在飞书(或者其它Channel)直接给它发语音了,而且它能看懂,但是此时它还不能开口说话。

如何让龙虾开口说话

方案:

SKILL来规训龙虾,在飞书场景回复用户语音的时候,使用特殊的脚本,EdgeTTS先合成,再ffmpeg转码,最后发送到飞书服务器。

开口说话确实复杂一点,不同的 Channel 方法都不一样。要完美都要花一点功夫。而且话说在前面,这种方法后面肯定会被官方(大概率是OpenClaw来做,因为OpenClaw做这个工作量比较低)以更优雅的方式替代掉,我们现在可能只是纯折腾,尝尝鲜。

选 EdgeTTS,是因为它免费,支持很多音色,其中就有小帅和小美,作为日常使用已经足够了。

虽然 OpenClaw 内置支持 EdgeTTS,但是以飞书为例,如果仅仅是按照官网执行/tts on的话,Agent返回的语音实际上是听不了的:

除此之外,我还希望每个龙虾员工,使用不同的音色。

最终我希望实现的效果:

如果你还没有多个Agent和飞书机器人,可以先参考这个文章,为每个Agent配置不同的飞书账户(不是必须,如果你没有音色区分agent的需求可以跳过):

安装edge-tts

macOS、Windows用户操作相同

pip install edge-tts

github.com/For-Backup/…

为每个飞书账户添加一个voice字段:

编辑openclaw.json。具体有哪些声音可以看上面下载的这两个文件夹的SKILL.md.

  "channels": {
    "feishu": {
      "enabled": true,
      .......省略........
      "voice": "zh-CN-XiaoxiaoNeural", //默认
      "streaming": "true",
      "accounts": {
        "wangerchui": {
          "botName": "贴身秘书王二锤",
          "voice": "zh-CN-XiaoxiaoNeural" //专属
        },

然后与你的Agent对话,让它们学习新安装的send-voice-to-feishu技能。

技巧

  1. 如果你配置的声音(channels.feishu.accounts.*.voice),和agent实际使用的语音不符,你可以告诉agent在用这个技能的时候别传voice参数。
  2. 你可以告诉Agent换音色

有什么不懂的可以进群(新群没什么人,但有一只小蜜蜂勤劳地回答你的问题):

广告部分:

同时自己写的 macOS 软件 MagicToy 1.3.0 马上发布了,如果你不习惯macOS上没有右键新建文件,没有方便的剪切板管理软件,没有置顶窗口的,想自动切换输入法的,都可以试一试,如果帮到你了,可以支持一下作者,感谢,叩首!

下面这个菜单是能改名的:

App Store 商店链接:

apps.apple.com/cn/app/magi…