hexgrad: Kokoro 82M
hexgrad의 Kokoro 82M은 8,200만 개 매개변수의 소형 모델과 언어별 사전 설정 목소리로 음성을 생성합니다. 문서에 명시된 v1.0 규격에는 8개 언어, 54개 목소리, 24 kHz 오디오 출력이 포함됩니다.
모델 소개
이 설명은 모델의 기능을 다룹니다. Ailoot에서 사용할 수 있는 입력, 출력 및 옵션은 아래에 선택한 메서드별로 표시됩니다.
Kokoro 82M은 8,200만 개의 매개변수를 가진 hexgrad의 공개 가중치 텍스트 음성 변환 모델입니다. 모델 카드는 StyleTTS 2와 iSTFTNet을 기반으로 하는 소형 디코더 전용 구조를 설명합니다. 작성된 텍스트는 발음 정보로 변환된 뒤 선택한 목소리의 음성이 됩니다. 문서에 명시된 v1.0 릴리스는 8개 언어에 걸쳐 54개 목소리를 제공합니다. 이는 이전의 영어 전용 v0.19 릴리스와 구분됩니다.
맞는 언어와 목소리 선택
목소리 목록은 미국·영국 영어, 일본어, 표준 중국어, 스페인어, 프랑스어, 힌디어, 이탈리아어, 브라질 포르투갈어를 다룹니다. 두 영어 억양은 한 언어의 변형입니다. 목소리 이름과 언어 설정은 함께 사용해야 합니다. 공식 워크플로의 af_heart는 미국 영어 예이며 다른 언어와 억양에는 별도의 그룹이 있습니다.
실제로 읽을 자료를 기준으로 화자를 선택하세요. 짧은 강의 내레이션은 각 구간에서 하나의 일관된 사전 설정 목소리를 사용할 수 있습니다. 다국어 자료 모음은 필요한 언어 그룹마다 목소리를 선택할 수 있습니다. 목록의 범위는 그룹별로 다릅니다. 예를 들어 프랑스어는 영어의 다양한 선택지와 달리 목소리 하나가 나열되어 있습니다.
발음과 문단 준비
Kokoro의 참조 파이프라인은 작성된 표기를 음소로 변환합니다. 예제에서는 용어의 발음 표기를 명시할 수 있어 어려운 이름을 모호한 철자에 맡기지 않고 준비할 수 있습니다. 주변 문장을 자연스럽게 유지하고 청취자가 들어야 할 문구를 보존하세요.
예를 들어 “가이드는 세 부분으로 구성됩니다. 먼저 자료를 선택하세요. 다음으로 예제를 비교하세요. 마지막으로 사용할 버전을 저장하세요.”라고 쓸 수 있습니다. 완결된 문구를 쓰고 문장부호가 암시하는 멈춤을 유지하세요. 긴 작품은 전체 문서를 끊김 없는 하나의 발화로 취급하지 말고 내용이 이어지는 문단으로 입력을 구성하세요.
목소리 안내에 따르면 많은 화자는 약 500토큰 범위 안에서 100~200토큰 정도의 문단일 때 가장 잘 작동합니다. 매우 짧은 발화, 특히 10~20토큰 미만에서의 약점과 긴 문단, 특히 400토큰 초과 시 서둘러 말하는 경향을 언급합니다. 이는 토큰을 기준으로 한 준비 관련 관찰이며 단어 수나 녹음 시간 한도가 아닙니다. 짧은 조각을 합치거나 긴 문단을 나누면 더 적절한 발화 단위를 만들 수 있습니다.
오디오 출력과 속도
공식 워크플로는 생성된 각 세그먼트에 대해 처리된 텍스트, 음소, 오디오 결과를 제공합니다. 세그먼트를 24,000 Hz WAV로 저장하며 참조 파이프라인에 속도 설정을 제공합니다. 조립한 내레이션이 의도한 대본을 따르도록 세그먼트 텍스트와 순서를 오디오에 연결해 보관하세요.
유용한 편집 점검은 두 문단의 경계를 이어 들어 본 다음 반복되는 이름과 목록의 말하기 속도를 살피는 것입니다. 오디오 출력과 음소 보기는 목적이 다릅니다. 하나는 청취자가 듣는 녹음이고 다른 하나는 작성된 텍스트가 어떻게 발음되는지 살펴보는 데 도움이 됩니다.
언어 범위와 실용적 한계
제조사는 발음 처리나 음성 학습 데이터가 제한되어 비영어 지원이 부족할 수 있음을 명시합니다. 따라서 사전 설정 그룹을 모든 문단에서 동등한 표현을 보장하는 것으로 취급해서는 안 됩니다. 적합한 화자를 선택하고 작업에 필요한 실제 이름과 문구를 검토하세요.
유용한 결과물은 문서에 명시된 사전 설정 목소리를 사용한 발화 문단이나 조립된 내레이션이며, 텍스트는 발음 및 문단 길이 요구에 맞춰 준비합니다. 이 소개는 제조사의 v1.0 Kokoro 82M 자료를 따릅니다. 다른 체크포인트, 양자화 구현, 외부에서 수정한 목소리는 각각의 기술적 범위를 가집니다.
Ailoot Ultra · 음성 합성 POST /v1/audio/speech hexgrad/kokoro-82m
hexgrad/kokoro-82m시작하기
hexgrad의 Kokoro 82M은 8,200만 개 매개변수의 소형 모델과 언어별 사전 설정 목소리로 음성을 생성합니다. 문서에 명시된 v1.0 규격에는 8개 언어, 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 텍스트; 정규화 없이 계산한 유니코드 문자 수 |
매개변수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 · 기본 설정 | 과금 조건기본 설정 | 요금 입력 · 입력 문자 수 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