음성 합성(TTS)
텍스트를 자연스러운 음성으로 바꿉니다 — 단일 보이스로 빠르게 읽어 주거나, 대본을 여러 화자가 나눠 연기합니다.
텍스트나 URL 콘텐츠를 자연스러운 음성 오디오로 바꿉니다. 이 skill은 무엇을 넘겼는지에 따라 두 가지 경로 중 하나를 고릅니다: 단일 보이스로 처음부터 끝까지 읽거나, 한 줄씩 표시해 둔 대본을 여러 화자가 나눠 연기하거나.
트리거
/tts로 이 skill을 호출하거나, 다음 문구 중 아무거나 사용하세요:
| 문구 | 언어 |
|---|---|
read aloud / read this aloud | 영어 |
TTS / text to speech | 영어 |
voice narration | 영어 |
朗读这段 | 중국어 |
配音 / 语音合成 | 중국어 |
ListenHub Skills가 설치되어 있어야 합니다 — 시작하기를 참고하세요.
빠른 예시
Read this article aloud: https://en.wikipedia.org/wiki/Podcast이 skill이 콘텐츠를 가져오고, 보이스를 고르고, 자연스러운 음성 오디오를 생성합니다.
빠른 모드 vs 스크립트 모드
이 skill은 무엇을 묻기 전에 먼저 두 모드 중 하나를 정합니다. 둘 다 스트리밍하거나 다운로드할 수 있는 MP3를 만들며, 보이스를 몇 개 쓰는지와 한 줄 한 줄을 얼마나 통제할 수 있는지가 다릅니다.
| 빠른 모드 | 스크립트 모드 | |
|---|---|---|
| CLI 플래그 | --mode direct | --mode smart |
| 보이스 | 하나 | 캐릭터마다 하나 |
| 속도 | 빠르고 지연이 짧음(약 1~2분) | 보통(약 2~3분) |
| 적합한 용도 | 기사 읽어 주기, 가벼운 TTS, 1인 내레이션 | 대화, 오디오북, 대본이 있는 다중 캐릭터 콘텐츠 |
| 제어 수준 | 텍스트를 한 덩어리로 읽음 | 각 세그먼트를 지정한 화자가 연기 |
**빠른 모드(Quick mode)**는 텍스트 한 덩어리(또는 URL)를 받아 단일 보이스로 끝까지 읽습니다. 동기로 실행되며 오디오 링크를 빠르게 돌려줍니다.
**스크립트 모드(Script mode)**는 각 줄에 화자가 표시된 대본을 받아 캐릭터마다 다른 보이스를 배정하고, 각 세그먼트를 하나의 트랙으로 이어 붙입니다. 긴 대본은 백그라운드로 실행됩니다 — 이 skill이 작업을 제출한 뒤 완료될 때까지 폴링합니다.
CLI의 tts create 명령은 기본값이 --mode smart입니다. 이 skill이 아래의 모드 감지 규칙에 따라 플래그를 대신 골라 주므로, 직접 지정할 일은 거의 없습니다.
모드는 어떻게 감지되나요
이 skill은 질문을 시작하기 전에 요청을 읽고 자동으로 모드를 정합니다:
| 입력에 담긴 신호 | 모드 |
|---|---|
| "多角色", "脚本", "对话", "script", "dialogue", "multi-speaker" | 스크립트 모드 |
| 이름이나 역할로 여러 캐릭터가 지정됨 | 스크립트 모드 |
A: ... / B: ... 같은 구조화된 세그먼트 | 스크립트 모드 |
| 캐릭터 표시가 없는 한 문단짜리 텍스트 | 빠른 모드 |
| 일반 텍스트와 함께 쓰인 "read this", "TTS", "朗读" | 빠른 모드 |
| 모호함 | 빠른 모드(기본값) |
모드 선택이 잘못된 것 같으면 그렇게 말하세요 — 예를 들어 "do this as a multi-speaker script"라고 하면 이 skill이 모드를 바꿉니다.
대본 쓰기(스크립트 모드)
스크립트 모드에서는 각 줄에 화자를 붙여 대사를 넘깁니다. 가장 단순한 형식은 한 턴에 한 줄씩 쓰는 Speaker: text입니다:
Alex: Hello everyone, welcome to the show.
Sam: Thanks for having me!
Alex: Let's get into today's topic.이 skill은 각 Speaker: 표시를 세그먼트로 파싱하고, 고유한 캐릭터(Alex, Sam)를 모아 각각에 보이스를 배정합니다. 이 표시는 내부적으로 /v1/flow-speech/episodes/tts 요청으로 이어지며, API를 직접 호출한다면 명시적인 scripts 배열도 받습니다:
{
"scripts": [
{ "content": "Hello everyone, welcome to the show.", "speakerId": "cozy-man-english" },
{ "content": "Thanks for having me!", "speakerId": "travel-girl-english" }
]
}각 세그먼트는 배정된 화자가 순서대로 읽습니다.
대본 작성 팁
- 말이 자연스럽게 끊기는 지점에서 나누세요 — 한 줄에 한 문장이나 짧은 문단.
- 대화처럼 들리도록 화자를 번갈아 배치하세요.
- 모든 화자를 같은 언어로 유지하세요.
- API를 직접 호출한다면 각
speakerId는 speakers 엔드포인트에서 받은 유효한 ID여야 합니다.
보이스 선택과 저장된 기본 설정
보이스를 직접 고를 필요는 없습니다. 이 skill은 다음 순서를 따릅니다:
저장된 기본 설정. 감지된 언어에 대해 저장해 둔 기본 보이스가 있으면 조용히 그것을 사용합니다.
내장 기본값. 없으면 해당 언어의 내장 기본 보이스로 넘어갑니다 — 영어는 중립적인 내레이터, 중국어는 다중 캐릭터 대본용 주 보이스와 보조 보이스.
명시적 변경. 보이스를 바꿔 달라고 요청할 때만 화자 목록을 보여 주고 고르게 합니다.
새로운 보이스를 고르면(기본값이 사용될 때는 해당 없음) 이 skill이 그 선택을 기억할지 물어봅니다:
- 빠른 모드 — "이걸
{language}의 기본 보이스로 저장할까요?" - 스크립트 모드 — "이 보이스 배정을 다음 세션에도 쓰도록 저장할까요?"
저장된 기본 설정은 작업 디렉터리의 .listenhub/tts/config.json에, 언어를 키로 하는 defaultSpeakers 아래에 놓입니다. 빠른 모드는 보이스 하나를, 스크립트 모드는 그 세션에서 배정한 보이스 전체를 저장합니다. "아니요"를 고르면 그 보이스는 이번 실행에만 쓰이고 설정 파일은 그대로 둡니다.
기본 설정은 작업 디렉터리별로 관리됩니다. 다른 프로젝트에서 이 skill을 실행하면 다시 내장 기본값에서 시작합니다.
파라미터
| 파라미터 | 선택지 | 기본값 |
|---|---|---|
| 입력 | 텍스트 또는 URL | — |
| 모드 | direct(빠른 모드), smart(스크립트 모드) | 자동 감지 |
| 언어 | en, zh, ja | 텍스트에서 자동 감지 |
| 화자 | 화자 이름 또는 speakerId | 저장된 기본 설정, 없으면 내장 기본값 |
음성 합성과 팟캐스트 중 무엇을 쓸까
두 skill 모두 다중 화자 오디오를 만들 수 있지만, 목적이 다릅니다:
| 사용 사례 | Skill |
|---|---|
| 자연스러운 대화 흐름의 주제 기반 토론 | 팟캐스트 |
| 모든 대사와 화자를 정밀하게 제어 | 음성 합성(스크립트 모드) |
| 기사나 텍스트 읽어 주기 | 음성 합성(빠른 모드) |
제한
- FlowTTS 텍스트 입력: 최대 10,000자.
- 더 긴 콘텐츠는 URL로 넘기세요 — API가 알아서 가져와 처리합니다.
- 일반
text소스는 최소 10자 이상이어야 합니다.
크레딧
생성에는 크레딧이 소모됩니다. 비용은 길이, 모드, 보이스에 따라 달라지므로, 큰 작업 전에는 고정 가격을 가정하지 말고 해당하는 estimate-credits 엔드포인트로 확인하세요. 견적용 엔드포인트는 FlowSpeech API 레퍼런스를 참고하세요.
출력
생성이 끝나면:
- 듣기 링크 — ListenHub에서 오디오를 스트리밍합니다.
- 자막 — 스크립트 모드에서는 자막 URL도 제공되면 함께 반환합니다.
- 다운로드 — "download audio"라고 하면 주제를 딴 파일 이름으로 현재 디렉터리에 MP3를 저장합니다.
API 레퍼런스
/v1/flow-speech/episodes, /v1/flow-speech/episodes/tts, 그리고 /v1/speech 음성 합성 인터페이스는 FlowSpeech API 레퍼런스를 참고하세요.