360 Secure SkillHub
360 安全技能中心

StepFun step-audio-r1.1

该 Skill 通过 StepFun Chat Completions 非流式接口调用 step-audio-r1.1 模型,支持纯文本或文本加本地音频输入,请求语音回复,并将响应对象、解码音频、转录文本和文本内容写入输出目录;需要 STEPFUN_API_KEY,非 WAV 输入会尝试用 ffmpeg 或 macOS afconvert 转换。

praanmichael
praanmichael
热度 48.20
最近更新 2026-05-11 17:35:51
分类:创作依赖:代码执行 / 读写文件 / 第三方 API / 内部调用大模型应用场景:API 集成 / 自动化脚本 / 摘要总结

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add stepfun-step-audio-r1-1
Metadata
name
stepfun-step-audio-r1-1
description
Use StepFun Chat Completions with model step-audio-r1.1 for non-streaming speech turns that can send text with optional local audio input and save the returned audio, transcript, and raw response object.
metadata
{"openclaw":{"emoji":"🔊","requires":{"bins":["python3"],"env":["STEPFUN_API_KEY","STEP_API_KEY"]},"primaryEnv":"STEPFUN_API_KEY"}}

StepFun step-audio-r1.1

Call StepFun's POST /v1/chat/completions endpoint with stream: false and model: step-audio-r1.1.

Use this skill when the user explicitly wants StepFun audio generation, speech-style replies through the Chat API, a standard non-streaming chat completion object, or local audio input encoded as input_audio.

Do not use this skill for realtime duplex voice sessions. Use StepFun Realtime API instead when the user wants low-latency live conversation.

step-audio-r1.1 does not support tool call. If the user needs tool calling, prefer step-audio-2 instead of this skill.

Quick Start

Text in, audio out:

python3 {baseDir}/scripts/stepfun_audio_chat.py \
  --prompt "用中文介绍一下苏州的春天,语气自然一点。" \
  --voice wenrounansheng \
  --format wav

Check available voice ids before a run:

python3 {baseDir}/scripts/stepfun_audio_chat.py \
  --list-voices

Text + local audio in, audio out:

python3 {baseDir}/scripts/stepfun_audio_chat.py \
  --prompt "听完这段语音后,总结重点,并用更简洁的话复述。" \
  --input-audio /path/to/input.wav \
  --voice wenrounansheng \
  --format wav

Build and inspect the non-streaming request without sending it:

python3 {baseDir}/scripts/stepfun_audio_chat.py \
  --prompt "测试 step-audio-r1.1 非流式 payload" \
  --dry-run \
  --print-json

What The Script Produces

The helper writes a fresh output directory for each run unless --output-dir is provided. Typical files are:

  • request.json: saved only for --dry-run
  • response.json: full non-streaming response object
  • response.<format>: decoded audio from choices[0].message.audio.data
  • transcript.txt: choices[0].message.audio.transcript
  • content.txt: textual assistant content when present

Common Flags

python3 {baseDir}/scripts/stepfun_audio_chat.py --help

Important flags:

  • --prompt: user text to send with the request
  • --input-audio: local audio file that will be base64-encoded into input_audio; non-WAV files are converted to WAV first when ffmpeg or afconvert is available
  • --system: optional system instruction
  • --voice: output voice name
  • --list-voices: query StepFun for account-level custom/cloned voices and print a few official voice hints
  • --format: non-streaming output audio format; this skill uses wav
  • --no-audio-output: request text-only output while still using the Chat API
  • --temperature: optional sampling override
  • --max-tokens: optional generation cap
  • --print-json: echo request or response JSON to stdout
  • --dry-run: build payload and stop before the network call

Configuration

Set STEPFUN_API_KEY in the environment, or inject it through OpenClaw skill config:

{
  skills: {
    entries: {
      "stepfun-step-audio-r1-1": {
        env: {
          STEPFUN_API_KEY: "STEP_KEY_HERE",
        },
      },
    },
  },
}

The script still accepts STEP_API_KEY as a legacy alias for backward compatibility, but the official name is STEPFUN_API_KEY.

Optional environment variables:

  • STEP_API_BASE_URL: overrides the default https://api.stepfun.com

Input audio note:

  • StepFun expects input_audio.data in data:audio/wav;base64,... format
  • Official docs mention WAV and MP3 input support
  • This script normalizes local input to WAV for maximum compatibility
  • If you pass m4a, mp3, aiff, or similar, this script will try to convert to WAV via ffmpeg or macOS afconvert
  • The normalized input_audio payload must stay within StepFun's 10MB base64 limit

Voice selection note:

  • step-audio-r1.1 needs audio.voice whenever you request audio output
  • The script defaults to wenrounansheng, which was validated in real smoke tests for this skill
  • For production use, prefer passing --voice explicitly
  • Use --list-voices to inspect account-level custom/cloned voice ids
  • Read references/stepfun-voices.md for how step-audio-r1.1, step-audio-2, and step-tts-* differ in voice usage

Workflow

  1. Confirm the user wants StepFun step-audio-r1.1 through Chat API.
  2. Choose whether the turn is text-only or text plus local audio input.
  3. Run the helper script with stream: false.
  4. Return the saved transcript, the audio file path, and any important response fields to the user.

Reference

Read references/stepfun-chat-api.md when you need the exact request shape, supported audio fields, or the non-streaming response layout. Read references/stepfun-voices.md when you need voice-selection guidance.