llama.cpp 프로젝트가 2026년 10월 24일 공개한 b11850 빌드에 Soprano-80M과 Soprano-1.1-80M 모델 지원이 들어갔다. 두 모델은 텍스트를 소리로 바꾸는 음성 합성 모델이며, 풀 리퀘스트 #28607로 반영됐다.1
Soprano는 Qwen3 기반 백본에 Vocos 디코더를 붙인 구조다. llama.cpp는 이 디코더를 소리 생성 전용 mmproj로 실행한다. 같은 날 b11846부터 b11849까지 네 개 빌드도 나왔다. CUDA 코드에 정적 검사를 넣고, AMD GPU용 HIP 빌드 오류를 고치고, 여러 프로세스의 동시 다운로드를 허용하고, Hexagon 백엔드에 SGN 연산을 추가한 변경이다.1,2,3,4,5
Soprano 지원의 구성
변환 도구는 Soprano 체크포인트를 알아보고 백본을 qwen3 모델로, decoder.pth에 담긴 Vocos 가중치를 mmproj로 내보낸다. 토크나이저에는 soprano 전용 전처리 방식이 추가됐다. 이 방식은 문자를 소문자로 바꾸고, 연속된 공백을 하나로 합치고, 숫자를 한 자리씩 나누며, 모르는 문자는 [UNK]로 처리한다.
멀티모달 모듈 mtmd에는 Vocos 연산 그래프와 ISTFT(역 단시간 푸리에 변환)가 들어갔다. Soprano는 소리 생성 전용 mmproj를 불러올 수 있고, 이 생성용 오디오 컨텍스트는 mtmd_get_memory_usage가 계산하는 메모리 사용량에 포함된다. mtmd-helper에는 Soprano 처리 경로가 생겼다. 디코더가 발화 전체를 한꺼번에 처리하기 때문에 스트림 모드에서는 flush() 이후 오디오가 한 덩어리로 전달된다. TTS 사용법 문서도 갱신됐다.
커밋 설명에는 Codex와 Claude Opus 5.5가 도움 표기로 올라 있다. 대상 모델은 Hugging Face의 ekwek/Soprano-1.1-80M 등이다.1
함께 나온 빌드
| 빌드 | 변경 내용 |
|---|---|
| b11846 | CUDA 백엔드에서 DP4A MMQ 타일 높이를 워프 크기의 배수로 강제하는 정적 검사 추가(#30837) |
| b11847 | HIP 빌드에서 BF16 WMMA 피연산자의 벡터 타입 수정(#30885) |
| b11848 | 여러 프로세스가 동시에 내려받을 수 있도록 허용(#29312) |
| b11849 | Hexagon 백엔드에 SGN 연산 추가(#30346) |
| b11850 | Soprano 음성 생성 모델 지원(#28607) |
b11847은 AMD GPU용 HIP 빌드 오류를 고친다. builtin_amdgcn_wmma_f32_16x16x16_bf16_w32 계열 내장 함수는 A·B 피연산자를 bf16이 아닌 short 벡터로 받는데, 조각을 bf16 벡터로 선언해 컴파일이 실패했다. short와 bf16은 둘 다 16비트이고 값이 원시 바이트로만 전달되므로, 타입을 바꿔도 결과는 비트 단위로 같다고 설명돼 있다. 내장 함수 도입 때부터 short였기 때문에 LLVM·ROCm 버전 조건 없이 동작한다. 수정 대상은 RDNA3(gfx1150, gfx1151)와 RDNA4(gfx1200, gfx1201)용 HIP 빌드이며, Pablo Cholaky가 서명했다.3
b11848은 Adrien Gallouët이 서명한 변경으로, 공용 코드가 여러 프로세스의 동시 다운로드를 허용한다. b11849는 Hexagon에 SGN 연산을 넣고 부호 비트를 이용해 최적화했으며 f16 지원도 추가했다. 공통 단항 연산 처리에서 차원을 합치는 로직도 고쳐 호스트 쪽 솔버에서 실행하도록 했다. Max Krasnyansky가 공동 작성자로 올랐고, 이 작업에는 OpenCode의 도움이 명시돼 있다.4,5
b11850의 배포 파일은 macOS, iOS XCFramework, Ubuntu, Android, Windows용이 있다. Linux arm64와 Android arm64에는 Snapdragon의 CPU, Adreno GPU, Hexagon NPU용 패키지도 올라왔다. Vulkan, CUDA 12·13, ROCm 10.0, OpenVINO, SYCL 빌드도 함께 있다. macOS의 KleidiAI 활성 빌드와 openEuler 빌드는 이번에도 비활성 상태다.1
출처
- ggml-org/llama.cpp b11850 github.com
- ggml-org/llama.cpp b11846 github.com
- ggml-org/llama.cpp b11847 github.com
- ggml-org/llama.cpp b11848 github.com
- ggml-org/llama.cpp b11849 github.com