Skip to content

AI Dubbing ​

이 문서는 Tencent Cloud 공식 문서 AI Dubbing Integration을 참고합니다.

AI 음성 합성(TTS)과 음성 클로닝을 제공합니다. 오디오북, 팟캐스트, 영상 더빙 등에 사용하며 40개 이상의 언어를 지원합니다. 동기 API(SyncDubbing)는 클로닝과 단문 합성을 즉시 처리하고, 비동기 API(ProcessMedia)는 장문 합성(TextToSpeech)과 화자 교체(SpeechToSpeech)를 처리합니다.

API 정보 ​

항목값
서비스MPS
API ActionSyncDubbing(clone/tts), ProcessMedia(async-tts/async-sts)
엔드포인트mps.tencentcloudapi.com
API 버전2019-06-12
처리 방식비동기 (TaskId 발급 후 결과 조회)

인증은 모든 API가 공통으로 TC3-HMAC-SHA256(SecretId/SecretKey) 서명을 사용합니다. 서명 생성 방법은 Quick Start의 TokenHub 문서를 참고하세요.

결과 조회는 DescribeTaskDetail 또는 완료 콜백으로 받을 수 있습니다.

SyncDubbing (clone / tts) ​

파라미터타입필수예시설명
TextStringtts 시 필수Hello, welcome!합성할 텍스트. 동기 모드는 2000자 이하
TextLangString선택en텍스트 언어. 기본 zh. 아래 언어 표 참조
VoiceIdStringtts 시 필수v1_Pi1pR9Q9UHqVOrQ0YpZFwL+Q/...음성 ID. 시스템 음성 또는 clone 모드가 반환한 VoiceId
AudioDataStringclone 시 필수(택일)base64 문자열클로닝 오디오 base64. WAV/MP3/MP4 등 지원
AudioUrlStringclone 시 필수(택일)https://example.com/voice.wav클로닝 오디오 URL. AudioData와 택일
AudioLangString선택zh클로닝 오디오 언어. 기본 zh
ExtParamString선택{"synExt":{"sampleRate":44100,"pitch":2},"cloneExt":{"timeRanges":[[5.2,20]]}}확장 파라미터(JSON 문자열). synExt: sampleRate / pitch / duration, cloneExt: timeRanges(초 단위 [start, end] 목록)
Output.OutputTypeString선택URLURL 지정 시 base64 대신 24시간 유효한 오디오 URL 반환
ResourceIdString선택-리소스 ID. 기본값은 계정의 주 리소스 ID

ProcessMedia (async-tts / async-sts) ​

파라미터타입필수예시설명
InputInfoObject필수{"Type":"URL","UrlInputInfo":{"Url":"https://example.com/video.mp4"}}async-sts는 실제 입력 미디어. async-tts는 접근 가능한 URL이면 placeholder로 사용 가능
OutputStorageObject필수{"Type":"COS","CosOutputStorage":{"Bucket":"mybucket-125xxx","Region":"ap-guangzhou"}}출력 COS 저장소. 비동기 모드는 COS 필수
OutputDirString필수/output/dubbing/출력 디렉터리. /로 시작하고 /로 끝나야 함
AiAnalysisTask.DefinitionInteger필수36더빙 태스크 템플릿 ID. 고정값 36
AiAnalysisTask.ExtendedParameterString필수{"dubbing":{"dubbingType":"TextToSpeech","text":"...","voiceId":"v1_..."}}더빙 설정(JSON 문자열). 아래 표 참조
TaskNotifyConfig.NotifyUrlString선택https://example.com/callback태스크 완료 콜백 URL. NotifyType은 URL

ExtendedParameter의 dubbing 객체 필드는 다음과 같습니다.

파라미터타입필수예시설명
dubbingTypeString필수TextToSpeechTextToSpeech(장문 TTS) 또는 SpeechToSpeech(화자 교체)
textStringTextToSpeech 시 필수긴 텍스트...합성할 텍스트
textLangString선택zh텍스트 언어
voiceIdString조건부 필수v1_Pi1pR9Q9UHqVOrQ0YpZFwL+Q/...음성 ID. SpeechToSpeech에서는 voiceId 또는 cloneVideoUrl 중 하나 필수
cloneVideoUrlString조건부 필수https://example.com/train.mp4클로닝할 영상/오디오 URL. 5초 이상, 단일 화자
cloneVideoLangString선택zh클로닝 영상/오디오 언어
srcLangString선택zh원본 영상/오디오 언어(SpeechToSpeech)
outputPatternString선택{taskType}-{timestamp}출력 파일명 접두사. {taskType}, {timestamp} 플레이스홀더 지원
extraPara.synExtObject선택{"pitch":2,"sampleRate":44100}음질 파라미터. pitch는 -12~12, sampleRate는 8000 / 16000(기본) / 22050 / 32000 / 44100. sampleRate는 TTS에서 사용

지원 언어 코드(일부): zh / en / ja / ko / de / fr / es / it / ru / pt / ar / hi / th / vi / id / ms / tr / nl / pl / sv / fi / yue / he / fa 등 40개 이상.

SyncDubbing ​

파라미터타입필수예시설명
ErrorCodeInteger항상0처리 결과 코드. 0이면 성공
MsgString항상success결과 메시지
VoiceIdStringclone 시v1_Pi1pR9Q9UHqVOrQ0YpZFwL+Q/...발급된 음성 ID. 이후 tts/async 모드에서 사용
AudioDataStringtts 시(택일)base64 문자열합성된 오디오 base64. OutputType 미지정 시 반환
AudioUrlStringtts 시(택일)https://...합성 오디오 URL. OutputType=URL 지정 시 반환, 24시간 유효
RequestIdString항상3c140219-cfe9-470e-b241-907877d6fb03요청 식별자

ProcessMedia ​

파라미터타입필수예시설명
TaskIdString항상2600011633-WorkflowTask-xxxxx발급된 태스크 ID. 결과 조회에 사용
RequestIdString항상3c140219-cfe9-470e-b241-907877d6fb03요청 식별자

호출 예시 ​

python
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.mps.v20190612 import mps_client, models

cred = credential.Credential("<SecretId>", "<SecretKey>")
http_profile = HttpProfile
http_profile.endpoint = "mps.tencentcloudapi.com"
client = mps_client.MpsClient(cred, "ap-guangzhou", ClientProfile(httpProfile=http_profile))

# tts 모드: 텍스트 + VoiceId로 동기 합성
params = {
    "Text": "Hello, welcome to Tencent Cloud voice synthesis!",
    "TextLang": "en",
    "VoiceId": "v1_Pi1pR9Q9UHqVOrQ0YpZFwL+Q/...",
    "ExtParam": json.dumps({"synExt": {"sampleRate": 44100, "pitch": 0}})
}

req = models.SyncDubbingRequest
req.from_json_string(json.dumps(params))
resp = client.SyncDubbing(req)
print(resp.to_json_string)
python
# async-sts 모드: 영상 화자 교체 (ProcessMedia, Definition=36)
params = {
    "InputInfo": {
        "Type": "URL",
        "UrlInputInfo": {"Url": "https://example.com/video.mp4"}
    },
    "OutputStorage": {
        "Type": "COS",
        "CosOutputStorage": {"Bucket": "mybucket-125xxx", "Region": "ap-guangzhou"}
    },
    "OutputDir": "/output/sts/",
    "AiAnalysisTask": {
        "Definition": 36,
        "ExtendedParameter": json.dumps({
            "dubbing": {
                "dubbingType": "SpeechToSpeech",
                "voiceId": "v1_Pi1pR9Q9UHqVOrQ0YpZFwL+Q/...",
                "srcLang": "zh"
            }
        })
    }
}

req = models.ProcessMediaRequest
req.from_json_string(json.dumps(params))
resp = client.ProcessMedia(req)
print(resp.to_json_string)

응답 예시 ​

json
{
  "ErrorCode": 0,
  "Msg": "success",
  "AudioData": "UklGRiQAAABXQVZFZm10...",
  "RequestId": "3c140219-cfe9-470e-b241-907877d6fb03"
}

사용 안내 ​

clone 모드가 반환한 전체 VoiceId를 사용합니다. v1_ 접두사로 시작하는 80자 이상의 암호화 base64 값입니다.

async-tts의 InputInfo에는 접근 가능한 URL을 지정합니다. OutputDir는 /로 시작하고 끝나도록 지정하고, 출력 COS Bucket을 설정합니다.

모드 선택 기준: VoiceId 발급이 필요하면 clone(오디오 필수), 2000자 이하 단문 합성은 tts(VoiceId 필수), 장문 합성은 async-tts, 기존 오디오/영상의 화자 교체는 async-sts(실제 입력과 voiceId 또는 cloneVideoUrl 필수)입니다.

基于 VitePress 构建 · 部署于腾讯云 EdgeOne Pages