hexgrad: Kokoro 82M
Kokoro 82M ของ hexgrad สร้างเสียงด้วยโมเดลขนาดกะทัดรัด 82 ล้านพารามิเตอร์ และเสียงสำเร็จรูปเฉพาะภาษา ขอบเขต v1.0 ตามเอกสารมีแปดภาษา 54 เสียง และเอาต์พุตเสียง 24 kHz
เกี่ยวกับโมเดล
คำอธิบายนี้ครอบคลุมความสามารถของโมเดล อินพุต เอาต์พุต และตัวเลือกที่ใช้ได้ใน Ailoot แสดงด้านล่างตามเมธอดที่เลือก
Kokoro 82M เป็นโมเดลแปลงข้อความเป็นเสียงแบบเปิดค่าน้ำหนักของ hexgrad มีพารามิเตอร์แปดสิบสองล้านตัว โมเดลการ์ดอธิบายสถาปัตยกรรมขนาดกะทัดรัดแบบตัวถอดรหัสอย่างเดียว ซึ่งอิง StyleTTS 2 และ iSTFTNet ข้อความเขียนถูกแปลงเป็นข้อมูลการออกเสียง แล้วจึงเป็นเสียงพูดตามเสียงที่เลือก รุ่น v1.0 ตามเอกสารมีห้าสิบสี่เสียงในแปดภาษา ขอบเขตนี้ต่างจาก v0.19 ก่อนหน้าที่ใช้ภาษาอังกฤษเท่านั้น
เลือกภาษาและเสียงที่ตรงกัน
รายการเสียงครอบคลุมอังกฤษอเมริกันและอังกฤษบริติช ญี่ปุ่น จีนกลาง สเปน ฝรั่งเศส ฮินดี อิตาลี และโปรตุเกสบราซิล สำเนียงอังกฤษสองแบบเป็นรูปแบบย่อยของภาษาเดียว ชื่อของเสียงผู้พูดกับการตั้งค่าภาษาต้องใช้คู่กัน af_heart เป็นตัวอย่างอังกฤษอเมริกันในเวิร์กโฟลว์ทางการ ส่วนรายการเสียงมีหมวดแยกสำหรับภาษาและสำเนียงอื่น
เลือกผู้พูดด้วยเนื้อหาจริงที่จะอ่าน เสียงบรรยายหลักสูตรสั้น ๆ ใช้เสียงสำเร็จรูปเดียวสม่ำเสมอตลอดแต่ละส่วนได้ ส่วนชุดเนื้อหาหลายภาษาเลือกเสียงจากหมวดภาษาที่ต้องการแต่ละหมวดได้ ความครอบคลุมของรายการต่างกันระหว่างหมวด เช่น ภาษาฝรั่งเศสมีเสียงที่ระบุไว้หนึ่งเสียง ไม่ใช่ตัวเลือกจำนวนมากแบบภาษาอังกฤษ
เตรียมการออกเสียงและย่อหน้า
ไปป์ไลน์อ้างอิงของ Kokoro แปลงรูปเขียนเป็นหน่วยเสียง ตัวอย่างอนุญาตให้ระบุรูปอ่านทางสัทศาสตร์ของคำได้ จึงเตรียมชื่อที่ยากได้แทนการปล่อยให้ขึ้นกับการสะกดที่กำกวม รักษาประโยครอบข้างให้เป็นธรรมชาติ และคงถ้อยคำที่ผู้ฟังควรได้ยิน
ตัวอย่างย่อหน้าคือ “คู่มือมีสามส่วน เริ่มจากเลือกเนื้อหา ต่อไปเปรียบเทียบตัวอย่าง สุดท้ายบันทึกเวอร์ชันที่ต้องการใช้” เขียนวลีที่สมบูรณ์และรักษาช่วงหยุดที่เครื่องหมายวรรคตอนสื่อ สำหรับชิ้นงานยาว ให้จัดอินพุตเป็นย่อหน้าที่ต่อเนื่องกัน ไม่ใช่ถือว่าเอกสารทั้งฉบับเป็นคำพูดยาวไม่หยุดชุดเดียว
คู่มือเสียงระบุว่าผู้พูดจำนวนมากทำงานได้ดีที่สุดกับย่อหน้าประมาณ 100–200 โทเคน ภายในช่วงราว 500 โทเคน โดยระบุจุดอ่อนกับคำพูดสั้นมาก โดยเฉพาะต่ำกว่า 10–20 โทเคน และแนวโน้มเร่งพูดเมื่อย่อหน้ายาว โดยเฉพาะเกิน 400 โทเคน นี่คือข้อสังเกตในการเตรียมงานตามจำนวนโทเคน ไม่ใช่ขีดจำกัดจำนวนคำหรือระยะเวลาบันทึกเสียง การรวมชิ้นสั้นหรือแยกย่อหน้ายาวอาจทำให้ได้หน่วยคำพูดที่เหมาะสมกว่า
เอาต์พุตเสียงและจังหวะ
เวิร์กโฟลว์ทางการให้ข้อความที่ประมวลผลแล้ว หน่วยเสียง และผลเสียงสำหรับแต่ละเซกเมนต์ที่สร้าง โดยบันทึกเป็น WAV ที่ 24,000 Hz และมีการตั้งค่าความเร็วในไปป์ไลน์อ้างอิง เก็บข้อความกับลำดับเซกเมนต์ให้เชื่อมกับเสียง เพื่อให้การบรรยายที่นำมาประกอบตามบทที่ต้องการ
การตรวจแก้ไขที่มีประโยชน์คือฟังข้ามรอยต่อของสองย่อหน้า แล้วตรวจชื่อที่ใช้ซ้ำกับจังหวะอ่านรายการ เอาต์พุตเสียงกับมุมมองหน่วยเสียงมีจุดประสงค์ต่างกัน อย่างหนึ่งคือเสียงบันทึกที่ผู้ฟังได้ยิน อีกอย่างช่วยตรวจว่าข้อความที่เขียนถูกออกเสียงอย่างไร
การรองรับภาษาและข้อจำกัดที่ควรใช้ประกอบงาน
ผู้ผลิตระบุชัดว่าการรองรับภาษาที่ไม่ใช่อังกฤษอาจมีจำกัด เพราะการประมวลผลการออกเสียงหรือข้อมูลฝึกเสียงมีไม่มาก จึงไม่ควรถือว่าหมวดเสียงสำเร็จรูปทุกหมวดรับประกันการถ่ายทอดเท่ากันในทุกย่อหน้า เลือกผู้พูดที่เหมาะและตรวจชื่อกับถ้อยคำจริงที่งานต้องใช้
ผลงานที่มีประโยชน์คือย่อหน้าเสียงพูดหรือการบรรยายที่ประกอบขึ้นด้วยเสียงสำเร็จรูปตามเอกสาร พร้อมข้อความที่เตรียมให้เหมาะกับการออกเสียงและความยาวย่อหน้า ข้อมูลนี้ตามเอกสาร Kokoro 82M v1.0 ของผู้ผลิต เช็กพอยต์อื่น ชุดทำงานแบบควอนไทซ์ หรือเสียงที่ภายนอกแก้ไข มีขอบเขตทางเทคนิคของตัวเอง
Ailoot Ultra · การสังเคราะห์เสียงพูด POST /v1/audio/speech hexgrad/kokoro-82m
hexgrad/kokoro-82mเริ่มต้น
Kokoro 82M ของ hexgrad สร้างเสียงด้วยโมเดลขนาดกะทัดรัด 82 ล้านพารามิเตอร์ และเสียงสำเร็จรูปเฉพาะภาษา ขอบเขต v1.0 ตามเอกสารมีแปดภาษา 54 เสียง และเอาต์พุตเสียง 24 kHz
- อินพุตที่รองรับ
- ข้อความ
- ผลลัพธ์
- เสียง
ใช้งานได้ใน Ailoot · อินพุตและเมธอด
Ailoot Ultra · การสังเคราะห์เสียงพูด POST /v1/audio/speech
- ขาเข้า
text- ขาออก
audio- รูปแบบเอาต์พุต
- mp3
| ฟิลด์ | ประเภท | ข้อกำหนด | ค่าและข้อจำกัด | ค่าเริ่มต้น |
|---|---|---|---|---|
ฟิลด์model | ประเภทstring | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด hexgrad/kokoro-82m | ค่าเริ่มต้น— |
ฟิลด์input | ประเภทstring | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด ความยาวขั้นต่ำ: 1 หน่วย: อักขระ Unicode | ค่าเริ่มต้น— |
ฟิลด์voice | ประเภทstring | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด af_alloy, af_aoede, af_bella, af_heart, af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky, am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa, bf_alice, bf_emma, bf_isabella, bf_lily, bm_daniel, bm_fable, bm_george, bm_lewis, ef_dora, em_alex, em_santa, ff_siwis, hf_alpha, hf_beta, hm_omega, hm_psi, if_sara, im_nicola, jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro, jm_kumo, pf_dora, pm_alex, pm_santa, zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi, zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang | ค่าเริ่มต้น— |
ฟิลด์response_format | ประเภทstring | ข้อกำหนดจำเป็น | ค่าและข้อจำกัด mp3 | ค่าเริ่มต้น— |
ชุดผสมของสื่ออินพุต
text_to_speech · จำเป็น: input
พารามิเตอร์และวงจรการทำงานของเมธอด
| พารามิเตอร์ | ข้อกำหนด |
|---|---|
พารามิเตอร์content_type | ข้อกำหนดapplication/json |
พารามิเตอร์required | ข้อกำหนดmodel, input, voice, response_format |
พารามิเตอร์voice_ids | ข้อกำหนดaf_alloy, af_aoede, af_bella, af_heart, af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky, am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa, bf_alice, bf_emma, bf_isabella, bf_lily, bm_daniel, bm_fable, bm_george, bm_lewis, ef_dora, em_alex, em_santa, ff_siwis, hf_alpha, hf_beta, hm_omega, hm_psi, if_sara, im_nicola, jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro, jm_kumo, pf_dora, pm_alex, pm_santa, zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi, zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang |
พารามิเตอร์response_format | ข้อกำหนดmp3 |
พารามิเตอร์max_input_characters | ข้อกำหนดnull |
พารามิเตอร์other_options | ข้อกำหนดfalse |
พารามิเตอร์input | ข้อกำหนดข้อความ UTF-8 ที่ตรงตามต้นฉบับ นับอักขระ Unicode โดยไม่ปรับรูปแบบมาตรฐาน |
พารามิเตอร์material_types | ข้อกำหนดtext |
วงจรการทำงาน: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · ค่า task_id ที่ส่งกลับมาจริง หรือระเบียนในคลังสื่อ
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
เลือกเสียงที่ตรงตามโปรไฟล์ของโมเดลนี้
อักขระขาเข้าและวินาทีเสียงเป็นหน่วยวัดคนละแบบ
ราคา
ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก
- โหมดรวดเร็ว
- ไม่ได้ระบุ เมื่อเลือกโหมดรวดเร็ว
- โหมดยืดหยุ่น
- ไม่ได้ระบุ เมื่อเลือกโหมด flex
- ระดับการใช้เหตุผลสูงสุด
- ไม่ได้ระบุ เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด
อัตราค่าบริการ Ailoot
ราคาตามการตั้งค่า
เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน
| การตั้งค่า | ตารางอัตราค่าบริการ | ปริมาณที่ใช้คิดค่าบริการ | หน่วยคิดค่าบริการ | ค่าบริการ |
|---|---|---|---|---|
| การตั้งค่าอัตราค่าบริการโทเคนพื้นฐาน | ตารางอัตราค่าบริการอัตราพื้นฐาน | ปริมาณที่ใช้คิดค่าบริการ— | หน่วยคิดค่าบริการ— | ค่าบริการ ขาเข้า · โทเค็นอินพุต — / 1K โทเค็น ขาออก · โทเค็นเอาต์พุต — / 1K โทเค็น ขาเข้า · การอ่านแคช — / 1K โทเค็น ขาเข้า · การเขียนแคช — / 1K โทเค็น ขาเข้า · การเขียนแคช, 1 ชั่วโมง — / 1K โทเค็น |
| การตั้งค่าUltra | ตารางอัตราค่าบริการ— | ปริมาณที่ใช้คิดค่าบริการนับแต่ละโค้ดพอยต์ Unicode เป็นหนึ่งอักขระ รวมถึงอักษรฮั่น | หน่วยคิดค่าบริการต่ออักขระอินพุต 1K ตัว | ค่าบริการ ขาเข้า · อักขระขาเข้า $0.008 ต่ออักขระอินพุต 1K ตัว |
รายละเอียดอัตราอ้างอิง
ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก
hexgrad: Kokoro 82M
ราคาตามการตั้งค่า
| การตั้งค่า | เงื่อนไขคิดค่าบริการ | ค่าบริการ |
|---|---|---|
| การตั้งค่าhexgrad: Kokoro 82M · การตั้งค่าเริ่มต้น | เงื่อนไขคิดค่าบริการการตั้งค่าเริ่มต้น | ค่าบริการ ขาเข้า · อักขระอินพุต US$0.00000124 ต่ออักขระอินพุต |
Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →
ตัวอย่างคำขอ
Ailoot Ultra · การสังเคราะห์เสียงพูด
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}"
export AILOOT_VOICE_ID
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "hexgrad/kokoro-82m", "input": "Good afternoon! This is a short voice take."}')
voice=os.environ["AILOOT_VOICE_ID"]
allowed=json.loads('["af_alloy", "af_aoede", "af_bella", "af_heart", "af_jessica", "af_kore", "af_nicole", "af_nova", "af_river", "af_sarah", "af_sky", "am_adam", "am_echo", "am_eric", "am_fenrir", "am_liam", "am_michael", "am_onyx", "am_puck", "am_santa", "bf_alice", "bf_emma", "bf_isabella", "bf_lily", "bm_daniel", "bm_fable", "bm_george", "bm_lewis", "ef_dora", "em_alex", "em_santa", "ff_siwis", "hf_alpha", "hf_beta", "hm_omega", "hm_psi", "if_sara", "im_nicola", "jf_alpha", "jf_gongitsune", "jf_nezumi", "jf_tebukuro", "jm_kumo", "pf_dora", "pm_alex", "pm_santa", "zf_xiaobei", "zf_xiaoni", "zf_xiaoxiao", "zf_xiaoyi", "zm_yunjian", "zm_yunxi", "zm_yunxia", "zm_yunyang"]')
if voice not in allowed: raise SystemExit("Choose an accepted voice ID from this exact model profile")
p["voice"]=voice
p["response_format"]="mp3"
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o speech.mp3
รับและบันทึกผลลัพธ์
Ailoot Ultra · การสังเคราะห์เสียงพูด
mp3
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
การอ่านเนื้อหาแบบอื่น
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-assets.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_MEDIA_TASK_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_MEDIA_TASK_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/tasks/$resource_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-task.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-task.json").read_text())))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_ASSET_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_ASSET_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/assets/$resource_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-asset.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-asset.json").read_text())))
PY_RESULT
เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด
เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน
เก็บผลลัพธ์ไบนารีและส่วนหัวให้ครบถ้วน หากได้รับ JSON/ผลลัพธ์หลายรายการ ให้เก็บข้อมูลทุกรายการและดึงไฟล์สื่อจาก URL แบบลงนามทุกรายการที่ได้รับจริง
เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ
เก็บ operation_id/X-Client-Request-ID เดิมไว้เพื่อกระทบยอดโดยไม่ส่งคำขอซ้ำ ไม่มีเส้นทางเฉพาะสำหรับตรวจสอบสถานะงานเสียงเป็นระยะ
ฟิลด์การตอบกลับ
| ฟิลด์ | ประเภท |
|---|---|
ฟิลด์binary audio | ประเภทbytes |
ฟิลด์response headers | ประเภทheaders |
ข้อผิดพลาดและขั้นตอนถัดไป
| การตอบกลับ | เงื่อนไข | ขั้นตอนถัดไป |
|---|---|---|
การตอบกลับ400 · invalid_request_error | เงื่อนไขฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง | ขั้นตอนถัดไปแก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่ |
การตอบกลับserver_error | เงื่อนไขการตอบกลับที่ได้รับระบุว่าต้องตรวจสอบการดำเนินการหรือผลลัพธ์ | ขั้นตอนถัดไปเก็บ ID การดำเนินการ/งานที่ส่งกลับมาแต่เดิม ส่วนหัวของคำขอ และการตอบกลับไว้ แล้วอ่านข้อมูลการดำเนินการเดิมนั้นต่อด้วยวิธีที่รองรับ ห้ามส่งคำขอสร้างซ้ำ |
ชื่ออื่น
ชื่ออื่นของโมเดล
Ailoot Ultra hexgrad/kokoro-82m
ชื่อพาธเมธอดอื่น
ใช้พาธเมธอดที่แสดงด้านบน
ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล
FAQ · hexgrad: Kokoro 82M
- มีอินพุตและผลลัพธ์ใดบ้าง?
POST /v1/audio/speech·hexgrad/kokoro-82m:text→audio- คำขอใช้ฟิลด์ใดบ้าง?
POST /v1/audio/speech·hexgrad/kokoro-82m:model,input,voice,response_format