全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

speech-2.6-hd

最近更新时间:2026-07-28 10:38:09

1. 概述

金山云speech-2.6-hd模型,提供高质量的文本转语音服务,支持多种音色、情感控制、流式输出、自定义发音词典等能力。本接口兼容 MiniMax speech-2.6 系列模型。

2. 接口信息

项目

说明

请求方式

POST

请求地址

https://kspmas.ksyun.com/v1/t2a_v2

Content-Type

application/json

认证方式

Bearer Token — 请求头携带 Authorization: Bearer <KSC_API_KEY>

3. 认证说明

在请求头中传入您的金山云 API Key:Authorization: Bearer KSC_API_KEY,将 KSC_API_KEY 替换为您在金山云控制台获取的实际 API Key。

4. 请求参数

4.1 顶层参数

参数名

类型

必填

默认值

说明

model

string

模型版本。可选值:speech-2.6-hd、speech-2.6-turbo

text

string

待合成文本,最大 10000 字符。超过 3000 字符建议使用流式输出

stream

boolean

false

是否启用流式输出

stream_options

object

流式输出选项,详见 4.4 StreamOptions

voice_setting

object

音色设置,详见 4.2 VoiceSetting

audio_setting

object

音频设置,详见 4.3 AudioSetting

pronunciation_dict

object

自定义发音词典,详见 4.5 PronunciationDict

timbre_weights

array

混合音色权重,详见 4.6 TimbreWeights

language_boost

string

null

语言增强,详见 4.8 语言增强

voice_modify

object

音色变换,详见 4.7 VoiceModify

subtitle_enable

boolean

false

是否启用字幕服务

subtitle_type

string

sentence

字幕粒度。可选值:sentence、word、word_streaming(仅流式)

output_format

string

hex

非流式输出格式。可选值:url(返回下载链接,24h有效)、hex(返回十六进制数据)

aigc_watermark

boolean

false

是否在音频末尾添加 AIGC 水印标识(仅非流式)

4.2 VoiceSetting — 音色与朗读风格设置

参数名

类型

必填

默认值

说明

voice_id

string

音色 ID。支持系统预置音色、克隆音色。混合音色模式下留空,改用 timbre_weights

speed

float

1

语速,范围 [0.5, 2],1 为正常语速

vol

float

1

音量,范围 (0, 10],1 为正常音量

pitch

integer

0

音调偏移,范围 [-12, 12],0 为原始音调

emotion

string

情感控制。可选值:happy、sad、angry、fearful、disgusted、surprised、calm、fluent、whisper。不设置时模型自动识别

text_normalization

boolean

false

是否启用中英文文本规范化(数字读法等),会略微增加延迟

latex_read

boolean

false

是否朗读 LaTeX 公式(仅中文),公式用 $$ 包裹,反斜杠需转义为 \\

常用系统音色 ID

音色 ID

性别

风格描述

male-qn-qingse

青涩

male-qn-jingying

精英

male-qn-badao

霸道

male-qn-daxuesheng

大学生

female-shaonv

少女

female-yujie

御姐

female-chengshu

成熟

female-tianmei

甜美

4.3 AudioSetting — 输出音频编码参数

参数名

类型

必填

默认值

说明

sample_rate

integer

32000

采样率(Hz)。可选值:8000、16000、22050、24000、32000、44100

bitrate

integer

128000

比特率(bps)。可选值:32000、64000、128000、256000。仅 mp3 有效

format

string

mp3

音频格式。可选值:mp3、pcm、flac、wav、pcmu_raw、pcmu_wav、opus

channel

integer

1

声道数。1 = 单声道,2 = 双声道

force_cbr

boolean

false

是否强制恒定比特率编码,仅流式 mp3 有效

4.4 StreamOptions — 流式输出附加选项

参数名

类型

必填

默认值

说明

exclude_aggregated_audio

boolean

false

设为 true 时,最后一个数据块不包含拼接的完整音频 hex 数据,减少传输量

4.5 PronunciationDict — 自定义发音词典

参数名

类型

必填

默认值

说明

tone

string[]

自定义发音规则列表,格式为 原词/替换发音。支持 IPA 音标、拼音带声调(1-5)、纯文本替换。多条规则同时生效

示例:

    {
      "tone": [
        "处理/(chu3)(li3)",
        "危险/dangerous"
      ]
    }

4.6 TimbreWeights — 混合音色配置

最多支持 4 种音色混合。

参数名

类型

必填

说明

voice_id

string

参与混合的音色 ID

weight

integer

该音色的权重,范围 [1, 100]。权重越高,合成结果越接近该音色

示例:

    [
      { "voice_id": "male-qn-jingying", "weight": 70 },
      { "voice_id": "female-shaonv", "weight": 30 }
    ]

4.7 VoiceModify — 音色变换

对合成后的音频进行二次处理。非流式输出支持 mp3/wav/flac 格式;流式输出仅支持 mp3。

参数名

类型

必填

默认值

说明

pitch

integer

音高偏移,范围 [-100, 100]。负值 = 低沉,正值 = 明亮

intensity

integer

力度偏移,范围 [-100, 100]。负值 = 有力,正值 = 柔和

timbre

integer

音色偏移,范围 [-100, 100]。负值 = 浑厚磁感,正值 = 清脆

sound_effects

string

音效,每次请求仅可选一种。可选值:spacious_echo、auditorium_echo、lofi_telephone、robotic

4.8 语言增强

language_boost 参数可增强指定语言/方言的识别准确度。常用值如下:

可选值

说明

Chinese

中文(普通话)

Chinese,Yue

中文 + 粤语

English

英语

Japanese

日语

Korean

韩语

French

法语

German

德语

Spanish

西班牙语

Russian

俄语

Arabic

阿拉伯语

auto

自动识别

完整支持列表:Arabic、Bulgarian、Catalan、Chinese、Chinese,Yue、Croatian、Czech、Danish、Dutch、English、Filipino、Finnish、French、German、Greek、Hebrew、Hungarian、Indonesian、Italian、Japanese、Korean、Malay、Nynorsk、Persian、Polish、Portuguese、Romanian、Russian、Slovak、Slovenian、Spanish、Swedish、Thai、Turkish、Ukrainian、Vietnamese、auto。

5. 文本特殊标记

5.1 停顿标记

在文本中插入 <#x#> 实现指定时长的停顿,x 为秒数(范围 0.01–99.99,最多两位小数)。

今天天气不错<#0.5#>适合出去走走,停顿标记必须位于可发音文本之间,不可连续使用。

5.2 行内发音替换

在文本中直接标注发音,支持拼音(声调 1-5)、IPA 音标、粤语拼音(声调 1-6),用括号包裹。

处理(chu3li3) 危险(dangerous)

5.3 情感标记

注意:金山云当前仅支持 speech-2.6 模型,暂不支持情感标记。以下内容供模型升级后参考。

标记

说明

(laughs)

笑声

(chuckle)

轻笑

(coughs)

咳嗽

(sighs)

叹气

(breath)

呼吸

(gasps)

喘息

(clear-throat)

清嗓子

(groans)

呻吟

(sniff)

(snorts)

6. 响应格式

6.1 非流式响应

Content-Type: application/json
    {
      "data": {
        "audio": "<hex 编码的音频数据>",
        "status": 2
      },
      "extra_info": {
        "audio_length": 9900,
        "audio_sample_rate": 32000,
        "audio_size": 160323,
        "bitrate": 128000,
        "word_count": 52,
        "invisible_character_ratio": 0,
        "usage_characters": 26,
        "audio_format": "mp3",
        "audio_channel": 1
      },
      "trace_id": "01b8bf9bb7433cc75c18eee6cfa8fe21",
      "base_resp": {
        "status_code": 0,
        "status_msg": "success"
      }
    }
响应字段说明

字段

类型

说明

data.audio

string

十六进制编码的音频数据,与请求的格式一致

data.status

integer

合成状态:1 = 合成中(流式中间态),2 = 合成完成

data.subtitle_file

string

字幕文件下载 URL(JSON格式),仅在 subtitle_enable=true 时返回

extra_info.audio_length

integer

音频时长(毫秒)

extra_info.audio_sample_rate

integer

采样率(Hz)

extra_info.audio_size

integer

文件大小(字节)

extra_info.bitrate

integer

比特率(bps)

extra_info.audio_format

string

音频格式:mp3、pcm、flac

extra_info.audio_channel

integer

声道数:1 或 2

extra_info.invisible_character_ratio

float

非法字符占比。≤10% 可接受;>10% 返回错误

extra_info.usage_characters

integer

计费字符数

extra_info.word_count

integer

实际发音字符数(不含标点)

trace_id

string

会话追踪 ID,用于问题排查

base_resp.status_code

integer

状态码,详见第 7 章

base_resp.status_msg

string

状态描述

6.2 流式响应

流式模式下,接口分多次返回数据块:中间数据块 status=1(合成中),包含部分 hex 编码音频;最后一个数据块 status=2(合成完成),包含 extra_info 完整信息。客户端需按序拼接所有音频片段。

7. 错误码

错误码

含义

处理建议

0

请求成功

1000

未知错误

联系技术支持,提供 trace_id

1001

请求超时

检查文本长度,超长文本建议使用流式

1002

触发频率限制

降低请求频率,必要时联系商务提升配额

1004

鉴权失败

检查 API Key 是否正确、是否过期

1039

触发 TPM 限流

降低单分钟文本量

1042

非法字符超过 10%

检查文本内容,移除不支持的特殊字符

2013

输入参数异常

检查请求体参数格式与取值范围

出现问题时,请将响应中的 trace_id 提供给金山云技术支持以便排查。

8. 请求示例

8.1 cURL 示例(非流式)

    curl -X POST https://kspmas.ksyun.com/v1/t2a_v2 \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer KSC_API_KEY' \
        -d '{
      "model": "speech-2.6-hd",
      "text": "今天是不是很开心呀(laughs),当然了",
      "stream": false,
      "voice_setting": {
        "voice_id": "male-qn-qingse",
        "speed": 1,
        "vol": 1,
        "pitch": 0,
        "emotion": "happy"
      },
      "audio_setting": {
        "sample_rate": 32000,
        "bitrate": 128000,
        "format": "mp3",
        "channel": 1
      },
      "pronunciation_dict": {
        "tone": [
          "处理/(chu3)(li3)",
          "危险/dangerous"
        ]
      },
      "subtitle_enable": false
    }

8.2 cURL 示例(流式)

    curl -X POST https://kspmas.ksyun.com/v1/t2a_v2 \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer KSC_API_KEY' \
        -d '{
      "model": "speech-2.6-hd",
      "text": "金山云语音合成服务,为您提供高质量的文本转语音能力。",
      "stream": true,
      "voice_setting": {
        "voice_id": "female-shaonv",
        "speed": 1,
        "vol": 1,
        "pitch": 0
      },
      "audio_setting": {
        "sample_rate": 32000,
        "bitrate": 128000,
        "format": "mp3",
        "channel": 1
      }
    }

8.3 Python 示例(非流式)

    import requests
     
    API_KEY = "your_ksc_api_key"
    URL = "https://kspmas.ksyun.com/v1/t2a_v2"
     
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {API_KEY}"
    }
     
    payload = {
        "model": "speech-2.6-hd",
        "text": "今天是不是很开心呀,当然了!",
        "stream": False,
        "voice_setting": {
            "voice_id": "male-qn-qingse",
            "speed": 1, "vol": 1, "pitch": 0,
            "emotion": "happy"
        },
        "audio_setting": {
            "sample_rate": 32000, "bitrate": 128000,
            "format": "mp3", "channel": 1
        },
        "pronunciation_dict": {
            "tone": ["处理/(chu3)(li3)", "危险/dangerous"]
        },
        "subtitle_enable": False
    }
     
    response = requests.post(URL, headers=headers, json=payload)
    result = response.json()
     
    if result["base_resp"]["status_code"] == 0:
        audio_hex = result["data"]["audio"]
        audio_bytes = bytes.fromhex(audio_hex)
        with open("output.mp3", "wb") as f:
            f.write(audio_bytes)
        print(f"合成成功,时长: {result['extra_info']['audio_length']}ms")
    else:
        print(f"合成失败: {result['base_resp']['status_msg']}")

8.4 Python 示例(流式)

    import requests, json
     
    API_KEY = "your_ksc_api_key"
    URL = "https://kspmas.ksyun.com/v1/t2a_v2"
     
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {API_KEY}"
    }
     
    payload = {
        "model": "speech-2.6-hd",
        "text": "金山云语音合成服务,支持流式输出。",
        "stream": True,
        "voice_setting": {
            "voice_id": "female-shaonv",
            "speed": 1, "vol": 1, "pitch": 0
        },
        "audio_setting": {
            "sample_rate": 32000, "bitrate": 128000,
            "format": "mp3", "channel": 1
        }
    }
     
    audio_buffer = bytearray()
     
    with requests.post(URL, headers=headers, json=payload, stream=True) as resp:
        for line in resp.iter_lines():
            if line:
                line_str = line.decode("utf-8")
                if line_str.startswith("data:"):
                    data = json.loads(line_str[5:].strip())
                    if "data" in data and "audio" in data["data"]:
                        audio_buffer.extend(bytes.fromhex(data["data"]["audio"]))
                    if data["data"].get("status") == 2:
                        print(f"合成完成,计费字符数: {data['extra_info']['usage_characters']}")
     
    with open("output_stream.mp3", "wb") as f:
        f.write(audio_buffer)

9. 常见问题

Q: 文本长度有限制吗?

A: 最大支持 10000 字符。超过 3000 字符建议使用流式输出,避免超时。

Q: 如何实现停顿效果?

A: 使用 <#x#> 标记,x 为停顿秒数(0.01–99.99)。例如 <#0.5#> 表示 0.5 秒停顿。

Q: 如何混合多种音色?

A: 使用 timbre_weights 参数,最多可混合 4 种音色,通过 weight 控制各音色占比。此时 voice_setting.voice_id 应留空。

Q: 流式和非流式如何选择?

A: 非流式适合文本较短(<3000字)、对首字延迟不敏感、需要完整音频文件的场景;流式适合文本较长(>3000字)、需要低首字延迟、实时播放的场景。

Q: 字幕功能如何使用?

A: 设置 subtitle_enable: true,响应中会返回 data.subtitle_file 字段,为字幕 JSON 文件的下载链接(24小时有效)。使用 subtitle_type 可控制字幕粒度。

Q: output_format 的 url 和 hex 有什么区别?

A: hex — 音频数据直接以十六进制字符串形式包含在响应体中;url — 响应中返回音频文件的下载链接(24小时有效),适合大文件场景。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈