中文 ▾
stableaudio.top

用于你音频管道的无审查文本 API

获取 API 密钥

文本转音频 LLM:能做什么与不能做什么

文本转音频 LLM 通常是两个工具协同工作:语言模型编写提示词,音频模型将其转化为声音。此 API 覆盖前半部分。

文本面板转化为声波的等距插图,展示 LLM 为音频工具编写提示词

更新于

要点

  1. 此服务仅处理文本,不生成音频、图像或视频。

  2. 其在音频工作流中的作用是编写提示词、歌词、场景脚本和元数据。

  3. 将其与音频工具链式连接只需简短脚本和 JSON 输出。

  4. 1,000 条提示词(输入约 600 token,输出 300 token)成本约 $0.24。

简短回答:LLM 编写指令,而非生成声音

当人们搜索 文本转音频 LLM 时,常误以为有一个模型能读取句子并返回音频文件。大型语言模型做不到这一点。它们读取和编写文本。声音来自专为音频构建的独立模型,该模型以文本描述为输入。

这种分工很有用,因为描述的质量至关重要。模糊的请求(如“放松音乐”)让音频模型难以处理。具体的请求指明流派、节奏、乐器、情绪、结构和长度,则能提供更多信息。以一致格式批量编写具体描述,是语言模型擅长的工作。

本网站提供恰好这一半功能:一个 OpenAI 兼容的文本 API。它没有音频生成、嵌入或微调功能。如果你需要声音本身,请将其与生成声音的工具配对,并将此接口用作其前的编写步骤。我们与任何音频供应商均无关联,因此请查阅各工具各自的文档以了解其输入规则。

文本模型在音频管线中何处提供帮助

适合的任务是输出为文字的任务:

  • 提示词编写。 将粗略想法转化为包含流派、节奏、配器和情绪的详细描述。
  • 歌词和脚本。 歌曲的主歌和副歌,或播客简介或有声书章节的旁白脚本。
  • 变体。 从一个概念生成十个替代提示词,以便试听并评估多个方向。
  • 元数据。 音频生成后的标题、描述、标签和曲目说明。
  • 修订。 结果未达预期时,根据你对失败原因的分析重写提示词。

此模型经过调整,可在合法成人使用中无内容拒绝地回答,这对于以小说为主的音频(如黑暗叙事、恐怖剧或成熟游戏对话)很重要,更严格的模型可能会拒绝完全合理的请求。唯一的硬性限制是:不允许涉及未成年人性行为的内容,且密钥不得用于此目的。

我们的 视频提示词页面 涵盖了针对视频工具的相同理念;先编写结构化描述再交给生成器的模式适用于各种媒体。

工作示例:输入一个想法,输出结构化提示词

向下游工具提供数据最可靠的方式是结构化输出。JSON 模式(response_format: {"type":"json_object"})使模型返回 JSON 对象,这样你的脚本可以读取命名字段,而不是解析段落。以下是使用 OpenAI SDK 针对此接口的 Python 脚本。

import json, os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.stableaudio.top/v1",
    api_key=os.environ["UNCENSORED_API_KEY"],
)

system = (
    "You write prompts for text-to-audio tools. Return a JSON object with keys: "
    "genre, tempo_bpm, instruments (list), mood, structure, duration_seconds, prompt. "
    "The prompt field is one paragraph, no more than 60 words."
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": system},
        {"role": "user", "content": "A tense chase scene in a rain-soaked neon city."},
    ],
    response_format={"type": "json_object"},
    temperature=0.8,
)

spec = json.loads(resp.choices[0].message.content)
print(spec["prompt"])

在系统提示词中保留单词 JSON 并列出你需要的键。模型随后会有明确的目标。在发送之前验证结果:检查 tempo_bpm 是否为数字,instruments 是否为列表,如果不是则重试一次。

curl 中的相同请求(便于快速检查)如下所示:

curl https://api.stableaudio.top/v1/chat/completions \
  -H "Authorization: Bearer $UNCENSORED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "response_format": {"type": "json_object"},
    "messages": [
      {"role": "system", "content": "Return JSON with keys mood and prompt for a text-to-audio tool."},
      {"role": "user", "content": "A quiet morning in a mountain village."}
    ]
  }'

编写音频模型可用的提示词

语言模型会生成你要求的任何形状的提示词,因此真正的工作是确定形状。以下规则在大多数音频工具中均适用。

按工具要求的顺序说出工具想要的

阅读音频工具的文档并复制其词汇表。如果它响应方括号章节标签或逗号分隔的描述符样式行,请在系统提示词中放入该确切格式的示例。模型会紧密模仿示例。

提供具体名词

"稀疏钢琴、刷鼓、原声贝斯、黑胶爆音"优于"不错的爵士感"。指示模型命名乐器、节奏范围和纹理,并避免填充形容词。

在指令中设置长度限制

许多音频工具限制提示词长度。将限制放入系统消息("不超过 60 个单词")并在代码中强制执行。模型在单词计数上容易波动,因此当检查失败时截断或重试。

保持反馈循环

听到结果后,将笔记反馈回去:"后半部分太满,鼓声太大,保持调性。"第二次调用可以结合该笔记修订之前的提示词。100,000-token 上下文窗口意味着你可以携带大量的尝试历史,如果你希望模型学习你不断拒绝的内容。

将模型与音频生成器链式连接

胶水代码很短。生成规范,验证它,然后将 prompt 字段传递给你使用的任何音频生成服务。音频调用显示为占位符,因为每个供应商的接口不同;请从他们的文档中获取其参数。

def make_spec(idea: str) -> dict:
    r = client.chat.completions.create(
        model="uncensored",
        messages=[
            {"role": "system", "content": system},
            {"role": "user", "content": idea},
        ],
        response_format={"type": "json_object"},
    )
    return json.loads(r.choices[0].message.content)

ideas = ["Lo-fi study beat", "Epic orchestral trailer hit", "Haunted music box"]
for idea in ideas:
    spec = make_spec(idea)
    # send spec["prompt"] to your audio generator here
    print(idea, "->", spec["prompt"][:80])

如果在列表中并行运行,请注意限制。完整密钥允许 8 个并发请求和每分钟 300 个请求;试用密钥允许 2 个并发请求和每分钟 60 个请求。带有 concurrency 字段的 429 错误表示同时请求过多,rate_limited 表示每分钟请求过多,而 Retry-After: 5 标头表示等待五秒后重试。将线程池大小设置为符合你的限制,并加上重试机制,就足够了。

API 文档 列出了支持的参数,包括 temperature、top_p、stop 和 seed。固定的 seed 有助于在调整系统提示词时获得可重复的提示词。

规模化生成歌词、旁白和元数据

提示词只是音频项目所需的一种文本。一旦管道运行,同一接口可以写入/生成围绕它的其他数据,你可以重用之前脚本中的客户端对象。

旁白脚本

对于语音音频,请要求提供带有固定标记的舞台指示的脚本,例如段落之间的停顿标记和说话者应放慢语速的说明。告诉模型目标朗读时间。一个常见的经验法则是,旁白每分钟朗读约 150 个单词,因此两分钟的内容需要大约 300 个单词;要求提供该数字,然后在代码中统计单词数。

具有固定结构的歌词

要求命名段落、押韵方案和每行的音节范围。模型对“四行,ABAB,每行八到十个音节”的遵循程度远优于“优美的押韵诗节”。之后在代码中运行检查,并要求仅重写失败的段落。

标题、标签和描述

音频生成后,将最终提示词和歌词发回模型,要求提供三个标题选项、五个标签和两句描述。这是便宜且重复的工作,非常适合文本模型。

故事与游戏

虚构类音频(如恐怖系列剧、互动故事或游戏对话)通常包含黑暗或成人主题。该模型经过调整,在合法成人用途下会生成内容而不拒绝,因此符合该类型的请求不会收到说教。涉及未成年人的性内容规则依然绝对有效。

如果将长脚本流式输出到屏幕,请设置 stream: true 并在数据到达时读取块;使用情况将在流结束时报告。

编写一千个提示词的成本

文本成本远低于音频生成步骤。输入 token 的费率为每 1M 个 token $0.15,输出 token 的费率为每 1M 个 token $0.50,从预付额度中计费,无订阅费用。

假设每个请求发送约 600 个 token(系统消息加想法)并返回约 300 个 token 的 JSON。对于 1,000 个请求:

  • 输入:600,000 个 token × $0.15 / 1M = $0.09
  • 输出:300,000 个 token × $0.50 / 1M = $0.15
  • 总计:$0.24

因此,一千条完成的提示词成本约为二十美分,失败或被拒绝的请求不收费。新账户可以在 密钥页面 上点击一次即可领取 $0.50 的试用额度,无需信用卡,有效期 7 天,足以生成上述规模的约两千条提示词。之后,充值从 $20 起;请参阅 定价 查看奖励层级和支付方式。提示词不用于训练。

问答

文本 LLM 能生成音频吗?

不能。语言模型生成文本。音频来自独立的音频模型,LLM 的作用是编写该模型所需的提示词、歌词或脚本。

此 API 能生成音乐或语音吗?

不能。它仅支持文本,不支持音频、图像或视频生成。它旨在作为音频工具前的文本生成步骤。

如何获取可以传入脚本的结构化提示词?

使用 JSON 模式,将 response_format 设置为 json_object,在系统消息中命名键,并在代码中验证解析结果。

生成大量提示词的成本是多少?

输入 token 费率为每 1M 个 token $0.15,输出 token 费率为每 1M 个 token $0.50。1,000 个提示词,输入约 600 个 token,输出约 300 个 token,成本约为 $0.24。

有免费试用方式吗?

新用户注册后可一键领取 $0.50 的试用额度。无需信用卡,有效期 7 天。

只需填写一张表单即可获得密钥

创建账户,复制密钥,更改基础 URL。这就是全部设置。

获取 API 密钥