CTranslate2가 글을 소리로 바꾸는 Drama 3 모델의 실험적 오프라인 실행 기능을 추가했다. 음성 합성을 로컬 서비스에 넣으려는 개발자는 일반 프로세서만으로 시작하고, 필요하면 그래픽 처리 장치로 일부 연산을 가속할 수 있다.
공식 모델 파일을 변환해 준비하면 합성할 때 별도 대형 프레임워크가 필요하지 않다. 모델을 준비하는 단계와 실제 음성을 만드는 단계를 나눠, 기존 CTranslate2 실행 환경에서 로컬 음성 합성을 시도하는 경로다.
1. 실험 기능은 오디오 코드 생성부터 파형 복원까지 맡는다
CTranslate2 4.8.4는 2026년 10월 25일 공개됐다. 이번 기능은 텍스트에서 소리의 중간 표현인 오디오 코드를 만든 뒤, 이를 단일 채널, 한 갈래 소리 신호의 파형으로 복원한다. 모델 변환뿐 아니라 실제로 들을 수 있는 음성을 만드는 과정까지 제공한다.
릴리스에는 오디오 모델에 쓰이는 연산의 CPU·GPU 구현도 추가됐다. 공식 가이드는 CPU를 기본 실행 경로로 설명하고, 선택적 가속에는 CUDA와 ROCm을 제시한다. 가속 장치 없이도 음성 합성을 시작할 수 있는 구성이다.
2. 공식 체크포인트를 변환해 로컬 모델로 준비한다
Drama 3 체크포인트, 학습 결과를 저장한 모델 파일의 변환에는 Transformers 변환기를 사용한다. 아래는 매핑, 이름과 위치를 대응시키는 방식과 텐서, 여러 축으로 배열한 숫자 데이터의 모양을 확인하는 시뮬레이션 명령이다. 가중치, 모델이 학습으로 얻은 수치들을 읽거나 출력 디렉터리를 만들지 않으며, 실제 변환에서는 --dry-run을 제거한다.
ct2-transformers-converter \
--model /path/to/drama-3-official \
--output_dir /path/to/drama-3-ct2 \
--quantization float32 --dry-run변환 과정은 파일을 내려받지 않으므로 로컬에 준비한 체크포인트를 사용한다. 파이썬에서도 표준 CTranslate2 변환기 인터페이스를 쓸 수 있다. 실제 변환에서는 저장 전에 모델과 파형 복원용 가중치가 메모리에 올라간다.
3. 텍스트 프롬프트를 만들어 합성을 호출한다
합성을 호출하려면 변환된 모델의 로컬 토크나이저, 문장을 모델 입력 단위로 나누는 도구로 텍스트를 숫자 배열로 바꾸는 준비가 필요하다. 텍스트 구간을 각각 인코딩해 토큰 경계를 보존하고, 첫 열에는 토크나이저 ID를, 나머지 오디오 코드 열에는 0을 채운다.
이 배열이 모델의 입력이 되고, 생성 결과는 단일 채널의 PCM16 WAV, 음량을 16비트로 기록하는 오디오 형식의 파일로 저장할 수 있다. 개발자는 텍스트 입력을 준비하는 부분과 음성 파일로 저장하는 부분을 애플리케이션에 연결하게 된다.
4. GPU는 일부 모델 연산을 가속하고 파형은 CPU가 처리한다
CPU에서는 합성 과정과 파형 복원에 32비트 부동소수점, 소수를 근사해 표현하는 수치 방식의 연산을 사용한다. 가중치를 압축해 저장한 기본 FP8, 부동소수점 수치를 8비트로 저장하는 형식의 체크포인트를 그대로 쓸 수 있고, 별도 INT8, 정수를 8비트로 저장하는 형식의 모델을 준비할 필요는 없다. 입력에 따라 일부 전문가 가중치 묶음, 입력에 따라 선택되는 모델 내부 계산 그룹을 골라 계산하지만, 전체 묶음은 RAM에 남는다.
NVIDIA 장치는 CUDA, AMD 장치는 ROCm을 지원하도록 빌드해 사용할 수 있다. GPU는 모델 중심부와 출력 변환에 쓰이는 연산을 맡고, 나머지 연산과 최종 파형 복원은 CPU가 처리한다. 전문가 가중치는 처음 사용될 때 GPU로 올라가 캐시, 자주 쓰는 데이터를 임시 보관하는 공간에 남으므로 새 묶음이 선택될수록 GPU 메모리 사용량이 커진다.
5. 로컬 실행의 이점과 실험 단계의 범위
로컬 실행은 합성 시점에 PyTorch나 Transformers 같은 대형 프레임워크를 요구하지 않아 실행 환경의 의존성을 줄인다. 대신 메모리 용량을 따져야 한다. 예를 들어 FP8 가중치에 INT8 실행을 선택하면 변환된 텐서가 추가 메모리를 차지하므로, 저장 형식과 실행 정밀도를 함께 결정하는 편이 낫다.
독립 요청은 여러 실행 복제본, 따로 구동하는 동일한 모델 인스턴스에 나눠 처리할 수 있다. 각 복제본이 한 번에 하나의 수열, 순서대로 나열된 값들을 생성하는 방식이므로, 요청을 여러 복제본에 배분하는 방법으로 동시 처리를 구성한다.
현재 지원 범위는 오프라인 합성과 파형 복원이며, 참조 녹음으로 목소리를 복제하거나 긴 글을 자동으로 나누고 스트리밍하는 기능은 지원하지 않는다. GPU 전문가 캐시의 크기를 제한해도 전체 GPU 메모리 상한까지 정해지는 것은 아니다.
이번 릴리스의 실용적 가치는 CPU로 로컬 음성 합성을 시작하고, 필요에 따라 모델 연산 일부에 GPU를 더하는 선택지를 제공한 데 있다.
