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
- לא צוין כאשר נבחר מצב flex
- מאמץ חשיבה מרבי
- לא צוין כאשר מאמץ החשיבה המרבי משתמש בהתאמת ברירת המחדל (default)
תעריפי Ailoot
מחירים לפי תצורה
התאימו כל חיוב לתנאים המוצגים. השתמשו בתעריף אחד לכל קבוצה של תצורות חלופיות.
| תצורה | טבלת תעריפים | כמות לחיוב | יחידת חיוב | חיוב |
|---|---|---|---|---|
| תצורהתעריפי בסיס לטוקנים | טבלת תעריפיםתעריף בסיס | כמות לחיוב— | יחידת חיוב— | חיוב קלט · טוקני קלט — / 1K טוקנים פלט · טוקני פלט — / 1K טוקנים קלט · קריאה מהמטמון — / 1K טוקנים קלט · כתיבה למטמון — / 1K טוקנים קלט · כתיבה למטמון, 1 שעה — / 1K טוקנים |
| תצורהUltra | טבלת תעריפים— | כמות לחיובכל נקודת קוד של Unicode נספרת כתו אחד, כולל סימני האן. | יחידת חיובלכל 1K תווי קלט | חיוב קלט · תו בקלט $0.008 לכל 1K תווי קלט |
פרטי תעריף הייחוס
טבלאות הייחוס ברמת המודל אינן משנות את בחירת השיטה, הצעות המחיר או החיובים. החיובים בפועל משתמשים בתעריפי שיטת Ailoot שנבחרה.
hexgrad: Kokoro 82M
מחירים לפי תצורה
| תצורה | תנאי חיוב | חיוב |
|---|---|---|
| תצורהhexgrad: Kokoro 82M · תצורת ברירת המחדל | תנאי חיובתצורת ברירת מחדל | חיוב קלט · תווי קלט 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 | תנאיהתשובה שהוחזרה מציינת שהפעולה או התוצאה דורשת בדיקה | השלב הבאשמרו את מזהה הפעולה/המשימה המקורי שהוחזר, את כותרות הבקשה ואת התשובה; המשיכו לבצע פעולות קריאה נתמכות של אותה פעולה מקורית. אל תשלחו שוב את בקשת היצירה. |
כינויים
כינויים למודל
Ailoot Ultra hexgrad/kokoro-82m
כינויים לנתיבי שיטות
השתמשו בנתיבי השיטות המוצגים למעלה.
מזהי מודלים קשורים IDs
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