이 문서는 영어 원문을 기반으로 자동 번역되었습니다. 표현이 어색하거나 모호한 부분이 있을 수 있으니, 정확한 내용은 영어 원문을 함께 확인해 주세요.
supertone으로 공개되어 있습니다. 소스: supertone-inc/supertone-python.
한눈에 보기
| 패키지 | PyPI의 supertone |
| 저장소 | supertone-inc/supertone-python |
| 언어 | Python 3.9+ |
| 인증 | Supertone(api_key=...) |
| 동기 API | 지원(기본) |
| 비동기 API | *_async 메서드 + async with |
| 스트리밍 | iter_bytes() / aiter_bytes() |
| 긴 텍스트 자동 청크 분할 | ✅ 300자, 최대 3 워커 병렬 |
| 커스텀 재시도 | ✅ retry_config로 설정 |
| HTTP 백엔드 | httpx |
설치
- pip
- uv
- poetry
API Key 설정
SDK는 환경 변수에서 자동으로 키를 읽지 않습니다.api_key를 명시적으로 전달하세요. 관례적으로 SUPERTONE_API_KEY에서 읽어옵니다.
음성 생성하기(동기)
권장되는 패턴은 컨텍스트 매니저를 사용해 내부 HTTP 연결이 깔끔하게 닫히도록 하는 것입니다.음성 생성하기(비동기)
_async 접미사와 async with를 사용하세요.
create_speech / create_speech_async, stream_speech / stream_speech_async, list_voices / list_voices_async 등.
음성 스트리밍
스트리밍은 오디오 청크의 이터레이터(또는 비동기 이터레이터)를 반환합니다.async for chunk in response.result.aiter_bytes()를 사용하세요. 스트리밍은 현재 sona_speech_1에서만 지원됩니다.
긴 텍스트 자동 청크 분할
create_speech, create_speech_async, stream_speech, stream_speech_async는 300자보다 긴 텍스트를 자동으로 분할합니다. create_speech는 최대 3개 세그먼트를 병렬로 실행해 오디오를 병합하며, stream_speech는 순차적으로 세그먼트를 실행해 이터레이터로 청크를 전달합니다.
predict_duration은 자동 청크 분할을 수행하지 않습니다. 입력을 300자 이내로 유지하고, 더 긴 스크립트는 직접 길이를 합산하세요.
자세한 내용과 튜닝은 긴 텍스트를 참고하세요.
자주 사용하는 작업
타입 안전 enum(선택)
타입 안전성을 위해 SDK는supertone.models에 enum 상수를 노출합니다.
"en", "sona_speech_1")도 동일하게 동작합니다 — 선호하는 방식을 선택하세요.
오류 처리
오류는supertone.errors에 있으며 모두 SupertoneError를 상속합니다.
| Error class | HTTP status |
|---|---|
BadRequestErrorResponse | 400 |
UnauthorizedErrorResponse | 401 |
PaymentRequiredErrorResponse | 402 |
ForbiddenErrorResponse | 403 |
NotFoundErrorResponse | 404 |
RequestTimeoutErrorResponse | 408 |
PayloadTooLargeErrorResponse | 413 |
UnsupportedMediaTypeErrorResponse | 415 |
TooManyRequestsErrorResponse | 429 |
InternalServerErrorResponse | 500 |
httpx에서 발생하며 SupertoneError를 상속하지 않습니다.
설정
관련 문서
TypeScript SDK
Node 및 Bun을 위한 동등한 SDK입니다.
예제
자주 사용하는 워크플로에 대한 레시피입니다.