テキストから音声へのLLM:できることとできないこと
テキスト音声LLMは通常、プロンプトを作成する言語モデルと、それを音声に変換する音声モデルという2つのツールで構成されます。このAPIは前半の役割を担います。

更新日:
主要ポイント
このサービスはテキストのみで、音声、画像、動画は生成しません。
音声ワークフローにおける役割は、プロンプト、歌詞、シーンスクリプト、メタデータの作成です。
音声ツールと連携するには、短いスクリプトとJSON出力が必要です。
入力約600トークン、出力300トークンの1,000プロンプトは約$0.24かかります。
簡潔な答え:LLMは音ではなく指示文を作成する
人々がテキストから音声への変換LLMを検索する際、文を読み込んで音声ファイルを返す1つのモデルを想像しがちです。大規模言語モデルはそんなことはしません。テキストを読み書きします。音声は、テキストの説明を入力として受け取る、音声用に構築された別のモデルから生成されます。
この分離は有用です。説明の品質が非常に重要だからです。「リラックスできる音楽」のような曖昧なリクエストでは音声モデルの処理材料が限られますが、ジャンル、テンポ、楽器、ムード、構成、長さを指定した具体的な指示なら、はるかに多くの処理が可能になります。そのような具体的な説明を大量に、一貫した形式で記述するのは言語モデルに適した作業です。
当サイトはその半分を提供しています。OpenAI互換のテキストAPIです。音声生成、埋め込み、ファインチューニングはありません。音声そのものが必要な場合は、音声を生成するツールと組み合わせて、このエンドポイントをその前工程の作成ステップとして使用してください。音声ベンダーと提携していないため、各ツールの入力ルールについては各ツールのドキュメントをご確認ください。
音声パイプラインでテキストモデルが役立つ場所
出力が言葉になるタスクが適しています:
- プロンプト作成。 大まかなアイデアを、ジャンル、テンポ、楽器編成、ムードを含む詳細な説明に変換します。
- 歌詞とスクリプト。 曲の歌詞やコーラス、ポッドキャストのイントロやオーディオブックの章のためのナレーションスクリプト。
- バリエーション。 1つのコンセプトから10個の代替プロンプトを作成し、複数の方向性を試すことができます。
- メタデータ。 音声作成後のタイトル、説明、タグ、トラックメモ。
- 改訂。 結果が期待外れだった場合、何が間違っていたかのメモを基にプロンプトを書き直します。
ここで扱うモデルは、法的な成人向け利用においてコンテンツ拒否なしで回答するようにチューニングされています。これは、より厳格なモデルが完璧に妥当なリクエストを拒否する可能性がある、ダークストーリーテリングやホラードラマ、成人向けゲームのダイアログなど、フィクション中心のオーディオにおいて重要です。唯一の明確な制限は、性的文脈での未成年者の描写が禁止されていることで、API キーはその用途ではありません。
動画プロンプトページでは動画ツールに同じアイデアを適用しています。構造化された説明をまず作成し、次にジェネレーターに渡すというパターンはメディア全体に共通します。
動作例:アイデア1つを入力し、構造化されたプロンプトを1つ出力
後続ツールにデータを渡す最も確実な方法は構造化出力です。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語以内」)を記載し、コードでも適用してください。モデルは語数で制御が難しくなるため、チェックに失敗した場合は切り捨てまたは再試行してください。
フィードバックループを維持する
結果を聴いた後、メモをフィードバックしてください。「後半が忙しすぎる、ドラムが大きすぎる、キーはそのまま」など。2回目の呼び出しで、そのメモをコンテキストとして含めて以前のプロンプトを改訂できます。100,000トークンのウィンドウがあるため、あなたが繰り返し却下する内容をモデルに学習させたい場合は、試行の長い履歴を引き継ぐこともできます。
モデルを音声ジェネレーターに連携させる
グルーコードは短く済みます。仕様を生成し、検証してから、あなたが使用するいずれかの音声サービスに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つの同時リクエストと1分あたり300リクエストまで許可されます。トライアルキーは2および60です。concurrencyによる429は一度に多すぎること、rate_limitedは1分あたりのリクエストが多すぎること、Retry-After: 5ヘッダーは5秒待ってから再試行することを意味します。制限に合わせた小さなスレッドプールと再試行処理があれば十分です。
APIドキュメントには、temperature、top_p、stop、seedを含むサポートされているパラメータがリストされています。システムメッセージを調整中に再現性のあるプロンプトが必要な場合は、固定のseedが役立ちます。
歌詞、ナレーション、メタデータの大量生成
プロンプトは音声プロジェクトに必要なテキストの一種にすぎません。パイプラインが稼働したら、同じエンドポイントで周囲の他のテキストも作成でき、前述のスクリプトからクライアントオブジェクトを再利用できます。
ナレーションスクリプト
音声用には、段落間の一時停止マーカーや、話者が遅く話すべき時の注記など、固定の表記法で舞台指示付きのスクリプトを依頼してください。目標の読み上げ時間をモデルに伝えてください。一般的な経験則として、ナレーターは1分あたり約150語で読むため、2分間の作品には約300語が必要です。その数字を指示し、コードで語数をカウントしてください。
固定構造の歌詞
指定されたセクション、韻律、1行あたりの音節範囲を指定してください。「4行、ABAB、各行8〜10音節」は「素敵な韻律の詩」よりもモデルが従いやすいです。後でコードでチェックを実行し、失敗したセクションのみを書き直させてください。
タイトル、タグ、説明
音声が存在した後、最終的なプロンプトと歌詞をモデルに戻し、3つのタイトルオプション、5つのタグ、2文の説明を依頼してください。これは安価で反復的な作業であり、テキストモデルに適しています。
ストーリーとゲーム
ホラーシリーズ、インタラクティブストーリー、ゲームの会話などのフィクション音声には、ダークまたは大人向けのテーマが含まれることがよくあります。このモデルは法的な成人向け利用に対してコンテンツ拒否なしで回答するように調整されているため、ジャンルに適合するリクエストは講義を浴びせるような対応をされません。未成年者を含む性的コンテンツの禁止は絶対的なものです。
長いスクリプトをストリーミングして画面に表示する場合は、stream: trueを設定し、チャンクが到着するたびに読み取ってください。使用量はストリーミングの終了時に報告されます。
1,000件のプロンプト作成にかかるコスト
テキストはオーディオステップと比較して安価です。レートは入力トークン1Mあたり$0.15、出力トークン1Mあたり$0.50で、サブスクリプションなしで前払いクレジットから請求されます。
各リクエストが約600トークン(システムメッセージとアイデア)を送信し、約300トークンのJSONを返すと仮定します。1,000件のリクエストの場合:
- 入力:600,000トークン x $0.15 / 1M = $0.09
- 出力:300,000トークン x $0.50 / 1M = $0.15
- 合計:$0.24
つまり、1,000件の完了したプロンプトの費用は約24セントで、失敗または拒否されたリクエストは課金されません。新しいアカウントは、キーページでワンクリックで$0.50の無料トライアルクレジットを取得でき、カード不要、7日間有効です。これは上記のサイズで約2,000件のプロンプトに相当します。その後、チャージは$20から開始されます。ボーナスティアと支払いオプションについては料金表をご覧ください。プロンプトはトレーニングには使用されません。
その他のガイド
質問と回答
テキストLLMはオーディオを生成できますか?
いいえ。言語モデルはテキストを生成します。オーディオは別のオーディオモデルから生成され、LLMの役割はそのモデルが必要とするプロンプト、歌詞、またはスクリプトを作成することです。
このAPIは音楽やスピーチを生成しますか?
いいえ。音声、画像、動画の生成は行わず、テキストのみです。音声ツールの前工程である文章作成ステップとして意図されています。
スクリプトに渡す構造化されたプロンプトはどうやって取得しますか?
JSON modeを使用し、response_formatをjson_objectに設定し、システムメッセージでキーの名前を指定し、コード内で解析された結果を検証してください。
多くのプロンプトを生成するにはどれくらいコストがかかりますか?
入力トークン1Mあたり$0.15、出力トークン1Mあたり$0.50で、入力約600トークン、出力約300トークンの1,000件のプロンプトは約$0.24かかります。
無料で試す方法はありますか?
新しいユーザーは、サインアップ後にワンクリックで$0.50のトライアルクレジットを取得できます。カードは不要で、7日間有効です。