Skip to content

在OpenClaw中使用ElevenLabs进行语音合成(TTS)、批量语音转文字(Scribe v2)和流式转录(Scribe v2 Realtime)。设置环境变量 ELEVENLABS_API_KEY 即可开始使用,默认TTS模型为 eleven_multilingual_v2,STT模型为 scribe_v2。流式转录需额外配置 voice-callgoogle-meet 插件的 streaming 块。Discord语音频道使用ElevenLabs流式TTS端点,播放延迟更低。

ElevenLabs TTS和STT配置步骤|在OpenClaw中设置语音合成与转录

OpenClaw使用ElevenLabs服务实现以下三种能力:

能力OpenClaw 使用场景默认模型
文本转语音 (TTS)messages.tts / talkeleven_multilingual_v2
批量语音转文字tools.media.audioscribe_v2
流式语音转文字Voice Call 流式或 Google Meet realtime.transcriptionProviderscribe_v2_realtime

认证设置

在环境变量中设置 ELEVENLABS_API_KEY。为了兼容已有 ElevenLabs 工具,XI_API_KEY 也可作为备用变量名。

bash
export ELEVENLABS_API_KEY="你的 API 密钥"

怎么配置文本转语音

在网关配置的 messages.tts 块中启用 ElevenLabs 作为 TTS 提供者:

json5
{
  messages: {
    tts: {
      providers: {
        elevenlabs: {
          apiKey: "${ELEVENLABS_API_KEY}",
          voiceId: "pMsXgVXv3BLzUgSXRplE",
          modelId: "eleven_multilingual_v2",
        },
      },
    },
  },
}

modelId 设为 eleven_v3 可以使用 ElevenLabs v3 TTS。OpenClaw 保持 eleven_multilingual_v2 作为已有安装的默认模型。

当 ElevenLabs 被选为 voice.tts / messages.tts 提供者时,Discord 语音频道会使用 ElevenLabs 的流式 TTS 端点。播放从返回的音频流直接开始,无需 OpenClaw 先下载完整音频文件再播放。

latencyTier 参数映射到 ElevenLabs 的 optimize_streaming_latency 查询参数(对支持该参数的模型有效);OpenClaw 会为 eleven_v3 模型省略此参数,因为该模型不接受它。

怎么配置语音转文字

对进入的音频附件和短录音片段,使用 Scribe v2:

json5
{
  tools: {
    media: {
      audio: {
        enabled: true,
        models: [{ provider: "elevenlabs", model: "scribe_v2" }],
      },
    },
  },
}

OpenClaw 将 multipart 音频发送到 ElevenLabs /v1/speech-to-text 端点,附带 model_id: "scribe_v2"。语言提示会映射到 language_code 参数。

怎么配置流式语音转文字

内置的 elevenlabs 插件为 Voice Call 和 Google Meet 智能体模式的流式转录注册了 Scribe v2 Realtime。

设置项配置路径默认值
API 密钥plugins.entries.voice-call.config.streaming.providers.elevenlabs.apiKey回退到 ELEVENLABS_API_KEY / XI_API_KEY
模型...elevenlabs.modelIdscribe_v2_realtime
音频格式...elevenlabs.audioFormatulaw_8000
采样率...elevenlabs.sampleRate8000
提交策略...elevenlabs.commitStrategyvad
语言...elevenlabs.languageCode(未设置)
json5
{
  plugins: {
    entries: {
      "voice-call": {
        config: {
          streaming: {
            enabled: true,
            provider: "elevenlabs",
            providers: {
              elevenlabs: {
                apiKey: "${ELEVENLABS_API_KEY}",
                audioFormat: "ulaw_8000",
                commitStrategy: "vad",
                languageCode: "en",
              },
            },
          },
        },
      },
    },
  },
}

Voice Call 从 Twilio 接收 8 kHz G.711 u-law 音频。ElevenLabs 流式提供者默认使用 ulaw_8000,因此电话帧可以直接转发,无需转码。

对于 Google Meet 智能体模式,将 plugins.entries.google-meet.config.realtime.transcriptionProvider 设为 "elevenlabs",并在 plugins.entries.google-meet.config.realtime.providers.elevenlabs 下配置相同的提供者块。

常见问题

配置了 ELEVENLABS_API_KEY 但 ElevenLabs TTS 不生效,怎么排查?

检查环境变量是否在 OpenClaw 进程启动前正确导出。确认 messages.ttsvoice.tts 配置块中的 providers.elevenlabs 对象存在且 apiKey 引用了环境变量。验证 API 密钥有效:在命令行运行 curl -H "xi-api-key: $ELEVENLABS_API_KEY" "https://api.elevenlabs.io/v1/voices" 应返回 200 和语音列表。

流式转录延迟很高,可以调整吗?

可以。在 streaming.providers.elevenlabs 中设置 latencyTier 参数(对于支持该参数的模型)。注意 eleven_v3 模型不接受该参数,OpenClaw 会自动省略。如果使用 Voice Call,检查 Twilio 侧的媒体流延迟。

ElevenLabs Scribe 能自动检测语言吗?

可以,但需明确设置。在 tools.media.audio.models 配置或流式转录的 languageCode 中留空即可让 ElevenLabs 自动检测。留空 languageCode 会增加转录延迟,且返回的文本语言可能不稳定。

相关文档