将 Seed Audio 1.0 Multilingual 与 Comfy Router 配合使用
通过 Comfy Router 调用 byteplus/seed-audio-1.0-multilingual:端点、请求结构以及 Router 返回的响应。
将 Seed Audio 1.0 Multilingual 与 Comfy Router 配合使用
通过 Comfy Router 调用 byteplus/seed-audio-1.0-multilingual:端点、请求结构以及 Router 返回的响应。
byteplus/seed-audio-1.0-multilingual 的 API 参考,由 Comfy Router 从 BytePlus 提供。
输入: 文本 · 输出: 音频
快速开始
在你的 Comfy 工作区中创建一个密钥,并将其导出为 COMFY_API_KEY。Python 和 TypeScript 代码片段使用 Comfy SDK(pip install comfy-sdk 和 npm install @comfyorg/sdk);cURL 代码片段则是通过原始 HTTP 执行的同一调用。
模型 ID: byteplus/seed-audio-1.0-multilingual
端点: POST https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual
[tab] 等待结果 ``python Python theme={null} from comfy_sdk import Comfy # 从环境中读取 COMFY_API_KEY。 # SDK 会自动创建幂等键,并在自动重试时复用它。 with Comfy() as client: result = client.models.run( "byteplus/seed-audio-1.0-multilingual", { "audio_config": { "format": "wav", "sample_rate": 24000, }, "text_prompt": "Hello from Comfy Router.", }, ) print(result)``typescript TypeScript theme={null} import { comfy } from "@comfyorg/sdk"; // 从环境中读取 COMFY_API_KEY。 // SDK 会自动创建幂等键,并在自动重试时复用它。 const { data } = await comfy.models.run("byteplus/seed-audio-1.0-multilingual", { audio_config: { format: "wav", sample_rate: 24000, }, text_prompt: "Hello from Comfy Router.", }); console.log(data);``bash cURL theme={null} curl https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual \ -H "X-API-Key: $COMFY_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d "{\"audio_config\": {\"format\":\"wav\",\"sample_rate\":24000}, \"text_prompt\": \"Hello from Comfy Router.\"}"``
[tab] 排队并稍后收集 将相同的请求体发送到POST https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual/requests。运行被受理后,Router 会立即返回201和request_id;结果就绪后,可以从本进程或其他进程收集。状态、取消与收集的细节见 队列投递。 ``python Python theme={null} import asyncio from comfy_sdk import AsyncComfy # 从环境中读取 COMFY_API_KEY。 # 每次 submit() 调用都会生成自己的 Idempotency-Key,并在自动重试时复用它。 async def main(): async with AsyncComfy() as client: handle = await client.models.submit( "byteplus/seed-audio-1.0-multilingual", { "audio_config": { "format": "wav", "sample_rate": 24000, }, "text_prompt": "Hello from Comfy Router.", }, ) print("request_id:", handle.request_id) # 配合模型 ID,就是另一个进程所需的全部信息 # 轮询直到请求完成,按服务器指定的 Retry-After 等待。 async for update in handle.iter_events(): print(update.status, update.queue_position) # 提供商自己的响应载荷,与 models.run() 返回的值相同。 # 失败或已取消的请求会在这里抛出类型化的 Router 错误。 result = await handle.get() print(result) asyncio.run(main())``typescript TypeScript theme={null} import { comfy } from "@comfyorg/sdk"; // 从环境中读取 COMFY_API_KEY。 // 每次 submit() 调用都会生成自己的 Idempotency-Key,并在自动重试时复用它。 const handle = await comfy.models.submit("byteplus/seed-audio-1.0-multilingual", { audio_config: { format: "wav", sample_rate: 24000, }, text_prompt: "Hello from Comfy Router.", }); console.log("requestId:", handle.requestId); // 配合模型 ID,就是另一个进程所需的全部信息 // 轮询直到请求完成,按服务器指定的 Retry-After 等待。 for await (const update of handle.events()) { console.log(update.status, update.queuePosition); } // 与 models.run() 返回的结果相同。失败或已取消的请求会在这里被拒绝。 const result = await handle.get(); console.log(result.data);``bash cURL theme={null} # 1. 提交。Router 返回 201,并带有 request_id、status_url、response_url 和 cancel_url。 curl https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual/requests \ -H "X-API-Key: $COMFY_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d "{\"audio_config\": {\"format\":\"wav\",\"sample_rate\":24000}, \"text_prompt\": \"Hello from Comfy Router.\"}" # 2. 轮询直到 status 为 COMPLETED,每次等待响应中指定的 Retry-After 秒数。 REQUEST_ID="<request_id from the 201 body>" curl -i https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual/requests/$REQUEST_ID/status \ -H "X-API-Key: $COMFY_API_KEY" # 3. 收集结果。200 返回模型的原生输出,仍在运行时则返回 202 和状态响应体。 curl https://api.comfy.org/v2/models/byteplus/seed-audio-1.0-multilingual/requests/$REQUEST_ID \ -H "X-API-Key: $COMFY_API_KEY"``
Schema
输入
audio\_config object
输出音频配置。
audio\_config.enable\_subtitle boolean
是否启用字幕服务。启用后,响应中会包含话语级和词级时间戳(默认:否)。
audio\_config.format string
输出音频格式:wav(默认)、mp3、pcm 或 ogg\_opus。
可选值:wav、mp3、pcm、ogg_opus
audio\_config.loudness\_rate integer
-50 到 100;100 表示 2.0 倍音量,-50 表示 0.5 倍音量(默认:0)。
范围:-50 到 100
audio\_config.pitch\_rate integer
-12 到 12(默认:0)。
范围:-12 到 12
audio\_config.sample\_rate integer
输出采样率:8000、16000、24000(默认)、32000、44100 或 48000。
可选值:8000、16000、24000、32000、44100、48000
audio\_config.speech\_rate integer
-50 到 100;100 表示 2.0 倍语速,-50 表示 0.5 倍语速(默认:0)。
范围:-50 到 100
model string
模型标识符。支持的模型:seed-audio-1.0 和 seed-audio-1.0-multilingual。直接向 POST /proxy/byteplus/api/v3/tts/create 发起的 v1 调用必须提供该参数:代理会拒绝任何其他值,缺失该值时也会返回 400。它不在本架构的 required 列表中,因为 Comfy Router 会从 /v2/models/byteplus/\{model} 的 {model} 路径段填充它,所以 Router 调用者可以省略。
references object[]
参考资源。纯文本生成时可省略。最多 3 个音频参考(每个最长 30 秒、解码后最大 10 MB;wav、mp3、pcm 或 ogg\_opus),或恰好 1 个图像参考(解码后最大 10 MB;jpeg、png 或 webp)。图像参考不能与音频参考混用。这些上限由 BytePlus 设定,并以解码后的字节数为准:base64 会使资产膨胀约 4/3,而 Comfy Router 调用整个 JSON 文档的上限为 100 MiB,因此发送到 /v2/models/byteplus/\{model} 的内联 audio_data/image_data 参考,在传输限制将其拒绝之前,解码后大约可承载 75 MB。因此,对于任何单个内联参考,BytePlus 自身的每参考 10 MB 上限都会先起作用,而在这个上限下,3 个音频参考如今可以放入一个请求体中;请使用 audio_url/image_url,让大资产完全不必进入请求。
references\[].audio\_data string
Base64 编码的参考音频。
references\[].audio\_url string
远程参考音频文件的 URL。
references\[].image\_data string
Base64 编码的参考图像。
references\[].image\_url string
远程参考图像的 URL。
references\[].speaker string
音色 ID。可以是受支持的 Doubao TTS 音色,也可以是声音克隆音色 ID。
text\_prompt string required
要合成的提示词或文本(1 到 3,000 个字符;空字符串会被拒绝)。提供音频参考时,可按顺序使用 @Audio1、@Audio2 和 @Audio3 引用它们。
watermark object
水印配置对象。接受空对象。
watermark.aigc\_metadata object
隐式水印。会在合成音频的头部添加元数据。
watermark.aigc\_metadata.content\_producer string
合成服务提供商的名称或代码。
watermark.aigc\_metadata.content\_propagator string
内容分发服务提供商的名称或代码。
watermark.aigc\_metadata.enable boolean
是否启用隐式水印(默认:否)。
watermark.aigc\_metadata.produce\_id string
内容生产 ID。
watermark.aigc\_metadata.propagate\_id string
内容分发 ID。
watermark.aigc\_watermark boolean
显式水印开关。会在合成音频末尾添加音频节奏标记(默认:否)。
本文档根据 Router 在 GET /v2/models/byteplus/seed-audio-1.0-multilingual/openapi.json 提供的架构生成,该文档与它在请求到达提供商之前用于校验调用的文档相同。
输出
audio string
已生成的音频数据,采用 Base64 编码。
code integer
状态码。详情请参阅官方错误码文档。
duration number
变速或后处理之后的时长,单位为秒。
格式:double
message string
状态详情。
original\_duration number
模型原始输出时长,单位为秒。用于计费,上限为 120 秒。
格式:double
subtitle object
音频的字幕信息。仅当请求中 audio\_config.enable\_subtitle 设置为 true 时才会返回。
subtitle.sentences object[]
语句级字幕信息。
subtitle.sentences\[].end\_time integer
片段结束时间,单位为毫秒,从音频开头算起。
subtitle.sentences\[].start\_time integer
片段开始时间,单位为毫秒,从音频开头算起。
subtitle.sentences\[].text string
该片段的完整文本。
subtitle.text string
与音频对应的字幕文本。
subtitle.words object[]
词级字幕信息。
subtitle.words\[].end\_time integer
片段结束时间,单位为毫秒,从音频开头算起。
subtitle.words\[].start\_time integer
片段开始时间,单位为毫秒,从音频开头算起。
subtitle.words\[].text string
该片段的完整文本。
url string
临时音频 URL,有效期为 2 小时。
示例
输入
{
"audio_config": {
"format": "wav",
"sample_rate": 24000
},
"text_prompt": "Hello from Comfy Router."
}
输出
{
"audio": "PGJhc2U2ND4=",
"duration": 1.2,
"original_duration": 1.2,
"url": "https://example.invalid/byteplus/seed-audio/generated.wav"
}
发布前须知
SDK 会生成 Idempotency-Key 并在自动重试中复用它。手动重试时,请复用原始 key。Router 最长可保持连接 10 分钟。
请求失败时,Router 会发送 X-Comfy-Error-Type 响应头说明原因。422 表示 Router 在调用提供商之前就拒绝了输入,413 表示请求体超出了 Router 可接受的大小。已生成的资源请及时下载,因为结果 URL 会过期。
上文任何字段描述中提到的尺寸限制,都是提供商对该字段自身的限定,引自提供商的规范。Router 会对整个请求体另行设置上限,base64 编码的媒体内容也计入其中:参见请求体大小。
本页记录的是通过 Comfy Router 调用的某一个合作伙伴模型。同一个 comfy-sdk / @comfyorg/sdk 包还提供第二个客户端,用于在 Comfy Cloud 上运行完整的 ComfyUI 工作流图:Comfy(api_key=...) / new Comfy({ apiKey }),并带有 client.workflows、client.assets 和 client.jobs。请参阅 Comfy SDKs。
[card] 请求头 身份验证、幂等性、请求 ID、错误分类、重试节奏、消费限额。
[card] 使用 Router API 模型发现、验证错误、重试与计费。
[card] 限制 Router 目前不支持的功能,以及替代方案。