speak
모든 텍스트를 음성 오디오로 변환합니다. 두 가지 백엔드(Kokoro 로컬, Noiz 클라우드), 두 가지 모드(단순 또는 타임라인 정밀), 그리고 구간별 음성 제어를 지원합니다.
트리거
- 텍스트 음성 변환 / 말하기 / 발음 / TTS
- 음성 복제 / 더빙
- EPUB를 오디오로 / SRT를 오디오로 / 오디오로 변환
단순 모드 — 텍스트를 오디오로
# Kokoro (설치 시 자동 감지)
bash skills/speak/scripts/tts.sh speak -t "Hello world" -v af_sarah -o hello.wav
bash skills/speak/scripts/tts.sh speak -f article.txt -v zf_xiaoni --lang cmn -o out.mp3 --format mp3
# Noiz (NOIZ_API_KEY 설정 시 자동 감지, 또는 --backend noiz로 강제 지정)
# --voice-id를 생략하면 스크립트가 사용 가능한 5개의 내장 음성을 출력하고 종료됩니다.
# 출력에서 하나를 선택하고 --voice-id <id>로 다시 실행하세요.
bash skills/speak/scripts/tts.sh speak -f input.txt --voice-id voice_abc --auto-emotion --emo '{"Joy":0.5}' -o out.wav
# Noiz: 선택적 --duration (float, 초, 범위 (0, 36]) 대상 오디오 길이 지정
bash skills/speak/scripts/tts.sh speak -t "Short line" --voice-id voice_abc --duration 3.5 -o out.wav
# 음성 복제 (Noiz 전용 — voice-id 불필요, 참조 오디오 사용)
# 자신의 참조 오디오 사용: 로컬 파일 경로 또는 URL (Noiz 사용 시에만).
bash skills/speak/scripts/tts.sh speak -t "Hello" --ref-audio ./ref.wav -o clone.wav
bash skills/speak/scripts/tts.sh speak -t "Hello" --ref-audio https://example.com/my_voice.wav -o clone.wav
타임라인 모드 — SRT를 시간 정렬 오디오로
정밀한 구간별 타이밍(더빙, 자막, 비디오 내레이션)을 위해 사용합니다.
1단계: SRT 가져오기 또는 생성
사용자가 SRT가 없으면 텍스트로부터 생성합니다:
bash skills/speak/scripts/tts.sh to-srt -i article.txt -o article.srt
bash skills/speak/scripts/tts.sh to-srt -i article.txt -o article.srt --cps 15 --gap 500
--cps = 초당 문자 수 (기본값 4, 중국어에 적합; 영어는 ~15). 에이전트가 수동으로 SRT를 작성할 수도 있습니다.
2단계: 음성 맵 생성
기본값 및 구간별 음성 설정을 제어하는 JSON 파일입니다. segments 키는 단일 인덱스 "3" 또는 범위 "5-8"를 지원합니다.
Kokoro 음성 맵:
{
"default": { "voice": "zf_xiaoni", "lang": "cmn" },
"segments": {
"1": { "voice": "zm_yunxi" },
"5-8": { "voice": "af_sarah", "lang": "en-us", "speed": 0.9 }
}
}
Noiz 음성 맵 (emo, reference_audio 지원 추가). reference_audio는 로컬 경로 또는 URL(사용자 자신의 오디오, Noiz 전용)일 수 있습니다:
{
"default": { "voice_id": "voice_123", "target_lang": "zh" },
"segments": {
"1": { "voice_id": "voice_host", "emo": { "Joy": 0.6 } },
"2-4": { "reference_audio": "./refs/guest.wav" }
}
}
동적 참조 오디오 슬라이싱:
비디오를 번역하거나 더빙할 때 각 문장이 원본 비디오의 동일한 타임스탬프에 있는 오디오를 자동으로 참조 오디오로 사용하려면, 맵에 reference_audio를 설정하는 대신 --ref-audio-track 인수를 사용하세요:
bash skills/speak/scripts/tts.sh render --srt input.srt --voice-map vm.json --ref-audio-track original_video.mp4 -o output.wav
전체 예제는 examples/를 참조하세요.
3단계: 렌더링
bash skills/speak/scripts/tts.sh render --srt input.srt --voice-map vm.json -o output.wav
bash skills/speak/scripts/tts.sh render --srt input.srt --voice-map vm.json --backend noiz --auto-emotion -o output.wav
어떤 것을 선택할지
| 필요 사항 | 권장 사항 |
|---|---|
| 그냥 텍스트를 소리내어 읽기, 복잡함 없음 | Kokoro (기본값) |
| 챕터가 있는 EPUB/PDF 오디오북 | Kokoro (기본 지원) |
음성 혼합 ("v1:60,v2:40") | Kokoro |
| 참조 오디오로 음성 복제 | Noiz |
감정 제어 (emo 매개변수) | Noiz |
| 구간별 정확한 서버 측 길이 | Noiz |
사용자가 감정 제어 + 음성 복제 + 정확한 길이를 동시에 필요로 할 때, Noiz가 세 가지를 모두 지원하는 유일한 백엔드입니다.
요구 사항
ffmpeg가 PATH에 있어야 함 (타임라인 모드)- Noiz: developers.noiz.ai에서 API 키를 받은 후
bash skills/speak/scripts/tts.sh config --set-api-key YOUR_KEY실행 - Kokoro: 이미 설치된 경우
--backend kokoro를 전달하여 로컬 백엔드 사용
백엔드 세부 정보 및 전체 인수 참조는 reference.md를 참조하세요.