跳转到主要内容
生成音频,此 API 可以使用 TTS 模型生成音频。

请求地址

POST https://api.stepfun.com/v1/audio/speech
Step Plan 场景请使用 POST https://api.stepfun.com/step_plan/v1/audio/speech

请求参数

  • model string required
    需要使用的模型名称,当前支持 step-tts-2step-tts-ministepaudio-2.5-tts
    step-tts-vivid 模型名称不再推荐使用,但历史用户请求仍会继续支持。
  • input string required
    要生成的文本,最大长度为 1000 个字符。在使用 stepaudio-2.5-tts 时,括号 () 内的内容将作为指令处理默认不发音,如需发音请勿使用括号包裹。
  • voice string required
    生成时使用的音色信息,支持官方音色和开发者自生成音色。
  • response_format string optional
    返回的音频格式,支持 wav,mp3,flac,opus,pcm. 默认为 mp3 格式
  • speed float optional
    语速,取值范围为 0.5~2,默认值 1.0。0.5 表示 0.5 倍速。
  • volume float optional
    音频,取值范围为 0.1~2.0,默认值 1.0。0.1 表示缩小至 10% 音量;2.0 表示扩大至 200% 音量。
  • voice_label object optional
    音色标签,使用自定义音色时需要传入。language、emotion 和 style 三个自动同时只能有一个字段有值,暂不支持多个组合。
    • language string optional
      语言,支持粤语四川话日语 三个选项。
    • emotion string optional
      情绪,支持 高兴生气等最多 11 个选项, 不同模型的支持情况可参考音色标签
    • style string optional
      支持最多17种语速或演绎风格,不同模型的支持情况可参考音色标签
⚠️ 注意:stepaudio-2.5-tts 模型不支持该字段,若传入voice_label参数会报错。 若使用 stepaudio-2.5-tts 模型,请直接使用 instruction 字段或文本内的 () 提示词来控制情绪与风格。其他模型的支持情况可参考音色标签
  • instruction string optional
    全局自然语言指导。仅在使用 stepaudio-2.5-tts 模型时生效,其他模型若传入该参数会报错。用于设定整段音频的全局情绪基调、角色人设等。最大长度限制为 200 个字符。
  • sample_rate integer optional
    采样率,支持 8000、16000、22050、24000、48000 五个选项。默认值为 24000。采样率越高,音质越好,但文件体积也会更大。其中 48000 为最近几次迭代新增的采样率。
  • pronunciation_map object array optional
    定义某个文字或符号注音或发音替换规则,在中文文本中,声调用数字表示:一声为1,二声为2,三声为3,四声为4,轻声为5。
    • tone string required
      具体发音映射规则,以“/”隔开,示例:["绯闻/fei1闻","扁舟/偏舟","嫉妒/ji2妒"]
  • stream_format string optional
    流式返回,默认为返回语音,支持值 sseaudio,默认为 audio。当传入sse时,音频将会以 SSE 的方式返回,数据包格式如下:
    data: {"type":"speech.audio.delta","audio":"<BASE64 编码的音频片段>"}
    
    data: {"type":"speech.audio.delta","audio":"<BASE64 编码的音频片段>"}
    
    data: {"type":"speech.audio.done","audio":""}
    
    data: [DONE]
    
    事件类型说明:
    • speech.audio.delta:音频数据分片,audio 字段为该分片的 BASE64 编码二进制,拼接所有分片即为完整音频
    • speech.audio.done:生成完成,audio 为空字符串
    • speech.audio.error:生成过程中出错
  • markdown_filter bool optional
    是否启用 Markdown 过滤。
  • return_url bool optional
    仅对非流式生效,是否以 URL 而不是二进制流的形式返回,URL 12 小时内有效。

请求响应

音频文件

示例

from pathlib import Path
from openai import OpenAI

speech_file_path = Path(__file__).parent / "step-tts.mp3"

client = OpenAI(
    api_key="STEP_API_KEY",
    base_url="https://api.stepfun.com/v1"
)
response = client.audio.speech.create(
    model="step-tts-mini",
    voice="cixingnansheng",
    input="智能阶跃,十倍每个人的可能.",
    extra_body={
        "volume": 1.0,  # volume 在拓展参数里
        "voice_label": {
            "language": "粤语",  # 可选:语言
            "emotion": "高兴",    # 可选:情感
            "style": "慢速"       # 可选:说话语速
        },
        "pronunciation_map": {
            "tone": [
                "阿胶/e1胶",
                "扁舟/偏舟",
                "LOL/laugh out loudly"
            ]
        }
    }
)
response.stream_to_file(speech_file_path)