LLM ข้อความสู่เสียง: ทำได้และทำไม่ได้
LLM ข้อความสู่เสียงมักเป็นสองเครื่องมือที่ทำงานร่วมกัน: โมเดลภาษาที่เขียนพรอมต์ และโมเดลเสียงที่แปลงเป็นเสียง API นี้ครอบคลุมขั้นตอนแรก

อัปเดต
ประเด็นสำคัญ
บริการนี้เป็นข้อความล้วนและไม่สร้างเสียง รูปภาพ หรือวิดีโอ
หน้าที่ของมันในเวิร์กโฟลว์เสียงคือการเขียนพรอมต์ เนื้อเพลง สคริปต์ฉาก และเมตาดาตา
การเชื่อมต่อกับเครื่องมือเสียงต้องใช้สคริปต์สั้นๆ และผลลัพธ์ JSON
พรอมต์ 1,000 อันที่มีอินพุตประมาณ 600 โทเคนและเอาต์พุต 300 โทเคน มีต้นทุนประมาณ $0.24
คำตอบสั้นๆ: LLM เขียนคำสั่ง ไม่ใช่เสียง
เมื่อผู้คนค้นหา LLM ข้อความสู่เสียง พวกเขามักจินตนาการถึงโมเดลเดียวที่อ่านประโยคแล้วส่งไฟล์เสียงกลับมา แต่โมเดลภาษาขนาดใหญ่ไม่ได้ทำแบบนั้น พวกมันอ่านและเขียนข้อความ เสียงมาจากโมเดลอื่นที่สร้างสำหรับเสียงโดยเฉพาะ ซึ่งรับคำอธิบายข้อความเป็นอินพุต
การแยกส่วนนี้เป็นสิ่งที่มีประโยชน์ เพราะคุณภาพของคำอธิบายมีความสำคัญมาก คำขอที่คลุมเครือเช่น "เพลงผ่อนคลาย" ให้ข้อมูลแก่โมเดลเสียงน้อยมาก ในขณะที่คำขอที่ระบุแนวเพลง จังหวะ เครื่องดนตรี อารมณ์ โครงสร้าง และความยาวอย่างชัดเจน จะให้ข้อมูลมากกว่า การเขียนคำอธิบายที่ชัดเจนเหล่านี้ในปริมาณมากและในรูปแบบที่สม่ำเสมอ เป็นงานที่เหมาะกับโมเดลภาษา
เว็บไซต์นี้ให้บริการส่วนนั้นโดยเฉพาะ: API ข้อความที่เข้ากันได้กับ OpenAI ไม่มีฟีเจอร์สร้างเสียง ไม่มี embedding และไม่มี fine-tuning หากคุณต้องการเสียงโดยตรง ให้จับคู่กับเครื่องมือสร้างเสียง แล้วใช้เอนด์พอยต์นี้เป็นขั้นตอนการเขียนก่อนส่งต่อไปยังเครื่องมืออื่น เราไม่ได้เป็นพันธมิตรกับผู้ขายเครื่องมือเสียงใดๆ โปรดตรวจสอบเอกสารของแต่ละเครื่องมือเพื่อดูกฎอินพุตของตัวเอง
เมื่อโมเดลข้อความช่วยในกระบวนการทำงานเสียง
งานที่เหมาะสมคืองานที่ผลลัพธ์เป็นคำ
- การเขียนพรอมต์ แปลงไอเดียหยาบๆ ให้เป็นคำอธิบายรายละเอียดที่ระบุแนวเพลง จังหวะ เครื่องดนตรี และอารมณ์
- เนื้อร้องและบทสคริปต์ บทเพลงและท่อนฮุคสำหรับเพลง หรือบทบรรยายสำหรับบทนำพอดแคสต์หรือบทหนังสือเสียง
- การสร้างความหลากหลาย สร้างพรอมต์ทางเลือกสิบแบบจากแนวคิดเดียว เพื่อให้คุณได้ทดลองหลายทิศทาง
- เมตาดาต้า ชื่อเรื่อง คำอธิบาย แท็ก และบันทึกแทร็กหลังจากที่มีไฟล์เสียงแล้ว
- การแก้ไข เขียนใหม่เมื่อผลลัพธ์ไม่ตรงตามที่ต้องการ โดยใช้บันทึกของคุณเกี่ยวกับสิ่งที่ผิดพลาด
โมเดลนี้ได้รับการปรับแต่งให้ตอบโดยไม่มีการปฏิเสธเนื้อหาสำหรับการใช้งานผู้ใหญ่ที่ถูกต้องตามกฎหมาย ซึ่งมีความสำคัญสำหรับเนื้อหาเสียงที่มีเรื่องราวมาก เช่น เรื่องเล่าแบบมืดๆ ละครสยองขวัญ หรือบทสนทนาในเกมสำหรับผู้ใหญ่ ที่โมเดลที่เข้มงวดกว่าอาจปฏิเสธคำขอที่สมเหตุสมผล ข้อจำกัดเด็ดขาดข้อเดียวคือไม่อนุญาตให้มีเนื้อหาที่เกี่ยวข้องกับผู้เยาว์ในบริบททางเพศ และคีย์เหล่านี้ไม่ได้ใช้สำหรับจุดประสงค์นั้น
หน้า พรอมต์วิดีโอ ของเราครอบคลุมแนวคิดเดียวกันสำหรับเครื่องมือวิดีโอ; รูปแบบการเขียนคำอธิบายที่มีโครงสร้างก่อน แล้วส่งต่อให้ generator เป็นขั้นตอนที่สอง ใช้ได้กับสื่อทุกประเภท
ตัวอย่างการใช้งาน: รับไอเดียหนึ่งอย่าง แล้วส่งพรอมต์ที่มีโครงสร้างออกมาหนึ่งอย่าง
วิธีที่เชื่อถือได้ที่สุดในการส่งข้อมูลไปยังเครื่องมือต่อคือการใช้ผลลัพธ์ที่มีโครงสร้าง โหมด JSON (response_format: {"type":"json_object"}) ทำให้โมเดลส่งคืนวัตถุ JSON เพื่อให้สคริปต์ของคุณสามารถอ่านฟิลด์ที่มีชื่อแทนการแยกวิเคราะห์ย่อหน้า นี่คือสคริปต์ Python ที่ใช้ SDK ของ OpenAI กับเอนด์พอยต์นี้
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."}
]
}'การเขียนพรอมต์ที่โมเดลเสียงสามารถนำไปใช้ต่อได้
โมเดลภาษาจะเขียนพรอมต์ในรูปแบบที่คุณต้องการ ดังนั้นงานที่แท้จริงคือการตัดสินใจเลือกรูปแบบ กฎไม่กี่ข้อที่ใช้งานได้กับเครื่องมือเสียงส่วนใหญ่
บอกสิ่งที่เครื่องมือต้องการ ตามลำดับที่เครื่องมือต้องการ
อ่านเอกสารของเครื่องมือเสียงและคัดลอกคำศัพท์ของมัน หากเครื่องมือตอบสนองต่อแท็กส่วนที่อยู่ในวงเล็บเหลี่ยม หรือบรรทัดสไตล์ที่ประกอบด้วยคำคุณศัพท์ที่คั่นด้วยเครื่องหมายจุลภาค ให้ใส่ตัวอย่างในรูปแบบที่แน่นอนนั้นลงในข้อความระบบ โมเดลจะเลียนแบบตัวอย่างอย่างใกล้ชิด
ให้คำนามที่ชัดเจน
"เปียโนเบาๆ กลองแปรง เบส upright เสียงแตกของแผ่นเสียง" ดีกว่า "ความรู้สึกแจ๊สที่ดี" บอกโมเดลให้ระบุเครื่องดนตรี ช่วงจังหวะ และพื้นผิว และหลีกเลี่ยงคำคุณศัพท์ที่เติมเต็ม
ตั้งค่าขีดจำกัดความยาวในคำแนะนำ
เครื่องมือเสียงหลายตัวจำกัดความยาวของพรอมต์ ใส่ขีดจำกัดนั้นในข้อความระบบ ("ไม่เกิน 60 คำ") และบังคับใช้ในโค้ดด้วย โมเดลเบี่ยงเบนจากจำนวนคำ ดังนั้นให้ตัดออกหรือลองใหม่เมื่อการตรวจสอบล้มเหลว
รักษาวงจรป้อนกลับ
หลังจากที่คุณได้ยินผลลัพธ์ ให้ป้อนหมายเหตุของคุณกลับ: "วุ่นเกินไปในครึ่งหลัง กลองดังเกินไป รักษาคีย์" การเรียกครั้งที่สองสามารถแก้ไขพรอมต์ก่อนหน้าด้วยหมายเหตุนั้นในบริบท หน้าต่าง 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 คำขอพร้อมกันและ 300 คำขอต่อนาที; คีย์ทดลองอนุญาตได้ 2 คำขอพร้อมกันและ 60 คำขอต่อนาที สถานะ 429 พร้อม concurrency หมายถึง จำนวนพร้อมกันมากเกินไป, rate_limited หมายถึง จำนวนต่อนาทีมากเกินไป, และหัวข้อความ Retry-After: 5 หมายถึง ให้รอ 5 วินาทีแล้วลองอีกครั้ง การตั้งค่า thread pool ให้ตรงกับขีดจำกัดของคุณ พร้อมการลองใหม่ ก็เพียงพอแล้ว
เอกสาร API ระบุพารามิเตอร์ที่รองรับ รวมถึง temperature, top_p, stop และ seed ค่า seed ที่คงที่ช่วยเมื่อคุณต้องการพรอมต์ที่ซ้ำกันได้ในขณะที่คุณปรับข้อความระบบ
เนื้อร้อง การบรรยาย และเมตาดาต้าในระดับใหญ่
พรอมต์เป็นเพียงประเภทหนึ่งของข้อความที่โครงการเสียงต้องการ เมื่อสายการผลิตทำงาน เอนด์พอยต์เดียวกันสามารถเขียนชิ้นส่วนอื่นๆ รอบๆ ได้ และคุณสามารถใช้วัตถุไคลเอนต์จากสคริปต์ก่อนหน้าได้
สคริปต์การบรรยาย
สำหรับเสียงพูด ให้ขอสคริปต์ที่มีทิศทางเวทีในรูปแบบการเขียนที่แน่นอน เช่น ตัวบ่งชี้การหยุดพักระหว่างย่อหน้า และหมายเหตุเมื่อผู้พูดควรพูดช้าลง บอกโมเดลถึงเวลาอ่านเป้าหมาย กฎทั่วไปคือผู้บรรยายอ่านได้ประมาณ 150 คำต่อนาที ดังนั้นชิ้นงานสองนาทีต้องการคำประมาณ 300 คำ; ขอให้ตัวเลขนั้นแล้วนับคำในโค้ด
เนื้อร้องที่มีโครงสร้างที่แน่นอน
ขอชื่อส่วน แผนการสัมผัสและช่วงพยางค์ต่อบรรทัด โมเดลปฏิบัติตาม "สี่บรรทัด ABAB แปดถึงสิบพยางค์ต่อบรรทัด" ได้ดีกว่า "บทกวีที่มีสัมผัสที่ดี" ตรวจสอบในโค้ดหลังจากนั้นและขอเขียนใหม่เฉพาะส่วนที่ล้มเหลว
ชื่อ แท็ก และคำอธิบาย
หลังจากที่เสียงมีอยู่ ส่งพรอมต์สุดท้ายและเนื้อร้องกลับไปยังโมเดลและขอสามตัวเลือกชื่อ ห้าแท็กและคำอธิบายสองประโยค งานนี้ราคาถูกและซ้ำๆ ซึ่งเหมาะกับโมเดลข้อความได้ดี
เรื่องราวและเกม
เสียงนิยาย เช่น ซีรีส์สยองขวัญ เรื่องราวแบบโต้ตอบหรือบทสนทนาสำหรับเกม มักมีธีมที่มืดหรือสำหรับผู้ใหญ่ โมเดลได้รับการปรับแต่งเพื่อตอบโดยไม่มีการปฏิเสธเนื้อหาสำหรับการใช้งานผู้ใหญ่ที่ถูกต้องตามกฎหมาย ดังนั้นคำขอที่ตรงกับแนวเพลงจะไม่ถูกตอบด้วยการบรรยาย กฎห้ามเนื้อหาทางเพศที่เกี่ยวข้องกับผู้เยาว์ยังคงเป็นข้อห้าม
หากคุณสตรีมสคริปต์ยาวไปยังหน้าจอ ให้ตั้งค่า stream: true และอ่าน chunk ๆ เมื่อมาถึง; การใช้งานจะถูกรายงานที่ท้ายสตรีม
ต้นทุนในการเขียนพรอมต์หนึ่งพันรายการ
ข้อความมีราคาถูกกว่าขั้นตอนเสียง อัตราคือ $0.15 ต่อ 1M input tokens และ $0.50 ต่อ 1M output tokens ซึ่งหักจาก prepaid credit โดยไม่มีบริการสมัครสมาชิก
สมมติว่าแต่ละคำขอส่งประมาณ 600 โทเคน (ระบบข้อความรวมกับไอเดีย) และได้รับผลลัพธ์เป็น JSON กลับมาประมาณ 300 โทเคน สำหรับ 1,000 คำขอ:
- Input: 600,000 โทเคน x $0.15 / 1M = $0.09
- Output: 300,000 โทเคน x $0.50 / 1M = $0.15
- รวม: $0.24
ดังนั้น พรอมต์ที่เสร็จสมบูรณ์จำนวนหนึ่งพันคำขอมีค่าใช้จ่ายประมาณยี่สิบสี่เซ็นต์ และคำขอที่ล้มเหลวหรือถูกปฏิเสธจะไม่ถูกเรียกเก็บเงิน บัญชีใหม่สามารถรับเครดิตทดลองใช้ $0.50 ได้ด้วยการคลิกเดียวที่ หน้าคีย์ ไม่ต้องใช้บัตร ใช้ได้เป็นเวลา 7 วัน ซึ่งคิดเป็นคำขอประมาณสองพันคำขอตามขนาดข้างต้น หลังจากนั้น การเติมเงินเริ่มต้นที่ $20; ดู ราคา สำหรับระดับโบนัสและตัวเลือกการชำระเงิน พรอมต์ไม่ถูกใช้สำหรับการฝึกโมเดล
คู่มือเพิ่มเติม
ถาม-ตอบ
LLM ประเภทข้อความสามารถสร้างเสียงได้หรือไม่?
ไม่ได้ โมเดลภาษาสร้างข้อความ เสียงมาจากโมเดลเสียงแยกต่างหาก และบทบาทของ LLM คือการเขียนพรอมต์ เนื้อร้อง หรือสคริปต์ที่โมเดลเสียงต้องการ
API นี้สร้างดนตรีหรือเสียงพูดได้หรือไม่?
ไม่ได้ รองรับเฉพาะข้อความ ไม่มีการสร้างเสียง รูปภาพ หรือวิดีโอ ออกแบบมาเพื่อเป็นขั้นตอนการเขียนก่อนส่งไปยังเครื่องมือสร้างเสียง
ฉันจะได้พรอมต์ที่มีโครงสร้างเพื่อส่งต่อให้สคริปต์ทำงานอย่างไร?
ใช้โหมด JSON โดยตั้งค่า response_format เป็น json_object ตั้งชื่อคีย์ในระบบข้อความของคุณ และตรวจสอบผลลัพธ์ที่แยกวิเคราะห์แล้วในโค้ด
การสร้างพรอมต์จำนวนมากมีค่าใช้จ่ายเท่าใด?
ที่ราคา $0.15 ต่อ 1M input tokens และ $0.50 ต่อ 1M output tokens คำขอ 1,000 คำขอที่มี input ประมาณ 600 tokens และ output 300 tokens มีค่าใช้จ่ายประมาณ $0.24
มีวิธีทดลองใช้ฟรีหรือไม่?
ผู้ใช้ใหม่สามารถรับเครดิตทดลองใช้ $0.50 ได้เพียงคลิกเดียวหลังจากสมัครสมาชิก ไม่ต้องใช้บัตร และใช้ได้เป็นเวลา 7 วัน
คีย์ของคุณอยู่ห่างแค่แบบฟอร์มเดียว
สร้างบัญชี คัดลอกคีย์ และเปลี่ยน base URL นั่นคือการตั้งค่าทั้งหมด