章节导航
语音合成(TTS)指南
语音合成(TTS)指南
POST /v1/audio/speech 与 OpenAI-compatible 接口兼容:发送 JSON,返回二进制音频文件。语音模型包括 ElevenLabs 系列(elevenlabs/eleven-v4、eleven-v4-turbo、eleven-v3、eleven-v3-conversational、eleven-multilingual-v2、eleven-flash-v2.5、eleven-flash-v2、eleven-turbo-v2.5、eleven-turbo-v2)。最新列表见 GET /v1/models?output_modalities=speech。 GET /v1/models 默认只返回文本模型,请加上 ?output_modalities=speech(或 all)才会列出语音模型。
/v1/audio/speech参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | 语音模型 ID,例如 elevenlabs/eleven-flash-v2.5。 |
| input | string | 是 | 要合成的文字,每次最多 4,096 个字符(elevenlabs/eleven-v4 与 eleven-v4-turbo 为 10,000)。更长的文字请拆成多次请求。 |
| voice | string | 是 | 要使用的声音,格式取决于模型。参见下方的声音规则。 |
| response_format | string | 否 | mp3(默认)或 pcm。opus、aac、flac、wav 虽被 API 接受,但目前 ElevenLabs 模型会以 400 拒绝。 |
| speed | number | 否 | 语速范围为 0.25 至 4.0;并非所有模型都会应用。 |
| instructions | string | 否 | 声音风格指令;并非所有模型都会应用。 |
| stability | number | 否 | 声音稳定度,0–1(默认 0.5)。越低情绪起伏越大,越高越平稳。仅在由我们的直连语音线路处理的 elevenlabs/* 模型上生效;响应头 X-Voice-Settings 会标示 applied(已应用)或 ignored(未应用)。 |
| similarity_boost | number | 否 | 与原声的相似度,0–1(默认 0.75)。Eleven v3 不使用。 |
| style | number | 否 | 风格夸张度,0–1(默认 0)。大于 0 会增加延迟。Eleven v4 不使用。 |
| use_speaker_boost | boolean | 否 | 是否增强与原说话者的相似度(默认 true),会略微增加延迟。 |
| clone_strength | number | 否 | 克隆度,0–1(多数情况建议 0)。仅适用于您自己、针对 Eleven v4 训练的专业克隆声音(voice_…)。 |
| language_code | string | 否 | 两位小写语言代码(ISO 639-1),例如 ar、ja、en,用来指定朗读语言。multilingual-v2 模型不使用。 |
| audio_effects | object | 否 | 可选的音频效果对象:filter_preset_id(滤镜,如 phone、old_radio)、environment_id(空间混响,如 small_room、hall)、background_noise_id(背景音,如 cafe)、distance(距离 0–1)、send_level(混响量 0–1)、pan(左右位置 −1…1)。ID 只能是小写字母、数字和下划线;不额外收费。开启混响或 pan 不为 0 会输出立体声,不能搭配 pcm 输出。 |
上方七个声音设置都是可选的,不带就完全不变;数值超出范围会直接返回 400,不会发送也不会收费。响应头 X-Voice-Settings 说明这次是否用到了您的设置:applied=已应用;ignored=这次由备用线路应答,您的设置没有被使用(声音仍会正常生成);没有这个响应头=您没有带任何声音设置。例如 stability 设为 0 会读得更有起伏,设为 1 则更平稳。
声音规则
ElevenLabs 模型(elevenlabs/…)的 voice 可填下列声音名称(不区分大小写):george, sarah, adam, alice, bella, bill, brian, callum, charlie, chris, daniel, eric, harry, jessica, laura, liam, lily, matilda, river, roger, will。ElevenLabs 模型可省略 voice(默认 george)。其他值返回 400 invalid_voice。您自己的自定义声音(voice_…)请见下方“自定义声音”章节。
alloy、echo、nova 等 OpenAI-style 声音名称仅适用于列出这些声音的模型。请在模型页查看。
自定义声音(克隆)正在分阶段开放:请见下方“自定义声音”章节(POST /v1/voices)。在您的账号开通之前,请使用上列 21 个预设名称或公开的声音 ID。
内置声音一览
voice 字段可填下表的声音名称(英文小写)。每个声音都附一段我们自己的试听,也可以用 GET /api/v1/audio/voices 获取完整清单(性别、年龄层、口音、风格与试听网址)。
?lang=(en、zh-TW、zh-CN,默认依 Accept-Language)只决定 description 的语言;试听网址不随参数改变:preview_urls.en(同 preview_url)是英文试听、preview_urls.zh(同 preview_url_zh)是中文试听。
| 声音 | 说明 | 试听 |
|---|---|---|
| george | 男声、中年、英式口音。成熟沉稳,适合旁白与讲故事。 | |
| sarah | 女声、年轻、美式口音。专业清晰,适合影视与节目式朗读。 | |
| adam | 男声、中年、美式口音。亲切自然,适合社群短视频。 | |
| alice | 女声、中年、英式口音。专业,适合教学与资讯讲解。 | |
| bella | 女声、中年、美式口音。专业,适合教学与资讯讲解。 | |
| bill | 男声、年长、美式口音。清晰利落,适合广告配音。 | |
| brian | 男声、中年、美式口音。沉稳有质感,适合社群与品牌内容。 | |
| callum | 男声、中年、美式口音。表现力强,适合角色与动画配音。 | |
| charlie | 男声、年轻、澳洲口音。活力十足,适合对话。 | |
| chris | 男声、中年、美式口音。轻松随性,适合对话。 | |
| daniel | 男声、中年、英式口音。正式稳重,适合新闻式与教学朗读。 | |
| eric | 男声、中年、美式口音。沉稳有质感,适合对话。 | |
| harry | 男声、年轻、美式口音。粗犷有个性,适合角色配音。 | |
| jessica | 女声、年轻、美式口音。明亮可爱,适合对话。 | |
| laura | 女声、年轻、美式口音。俏皮有个性,适合社群内容。 | |
| liam | 男声、年轻、美式口音。自信有精神,适合社群内容。 | |
| lily | 女声、中年、英式口音。自信清楚,适合教学与资讯讲解。 | |
| matilda | 女声、中年、美式口音。开朗亲切,适合教学与资讯讲解。 | |
| river | 中性声音、中年、美式口音。平静稳定,适合对话。 | |
| roger | 男声、中年、美式口音。沉稳有质感,适合对话。 | |
| will | 男声、年轻、美式口音。放松随和,适合对话。 |
情绪与动作标签(audio tags)
直接把标签用方括号写在 input 里,例如 [laughs]、[whispers]、[excited]、[sighs]、[crying]、[curious]、[softly]。标签会原样发给模型,用来决定后面那段话的语气与演绎。即使文字是中文,标签也请保持英文。
curl https://api.bazaarlink.ai/v1/audio/speech \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"elevenlabs/eleven-v3","input":"[laughs] That was actually funny. [whispers] Do not tell anyone.","voice":"george","response_format":"mp3"}' \
--output audio-tags.mp3elevenlabs/eleven-v3 与 elevenlabs/eleven-v4 系列支持。其他语音模型不会解读标签,可能把括号内文字直接念出来,建议先用一小句测试。
标签也计入 input 字符数,与其余文字一样计费。
输出格式
不传 response_format 时默认为 mp3(Content-Type 为 audio/mpeg);pcm(audio/pcm,原始 16-bit PCM)也可用。API 虽接受 opus、aac、flac、wav,但 ElevenLabs 模型目前会以 400 拒绝。请按响应头 Content-Type 保存文件。
计费
语音合成按输入字符数计费。每字符价格见 /models 中的模型页,以及 GET /v1/models 中的 pricing.character。模型页按每百万字符展示。
示例
curl https://api.bazaarlink.ai/v1/audio/speech \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"elevenlabs/eleven-flash-v2.5","input":"Hello from BazaarLink.","voice":"george","response_format":"mp3"}' \
--output speech.mp3常见错误
| 状态码 | 原因与处理 |
|---|---|
| 400 | 请求无效:缺少 model、input 或 voice;input 超过 4,096 字符;speed 不在 0.25–4.0 范围内;response_format 不受支持;Unknown voice;unknown_model(请在 /models 核对 ID)。 |
| 401 | API 密钥缺失或无效。请通过 Authorization: Bearer 发送 BazaarLink 密钥。 |
| 402 | 余额不足,请充值后重试。 |
| 403 | 管理密钥不能调用模型,或账号已被停用。请使用普通 API 密钥。 |
| 429 | 达到速率限制,请按 Retry-After 响应头等待后重试。 |
| 502 | 模型服务暂时不可用,或音频传输中断。请重试;失败的请求不收费。 |
语音合成
使用 /v1/models?output_modalities=speech 的模型标识码将文字转为音频。按模型页每百万字符价格计费;完整缓冲音频后才返回二进制数据,暂不支持分段流式输出。provider、transforms、route、service_tier、preset 等路由控制字段会被忽略。
/v1/audio/speech/v1/chat/completions在 /v1/chat/completions 传入 audio 或 input_audio,并选择支持音频的模型。按配置的输入与输出 token 单价计费;报告的文字与音频 token 合并使用相同单价。
curl https://api.bazaarlink.ai/v1/chat/completions \
-H "$BAZAARLINK_AUTH_HEADER" \
-H "Content-Type: application/json" \
-d '{"model":"<audio-chat-model-id>","messages":[{"role":"user","content":"Say hi."}],"stream":true,"modalities":["text","audio"],"audio":{"voice":"alloy","format":"pcm16"},"max_tokens":32}'