llama.cpp가 Pocket TTS 모델에 미리 담긴 목소리를 이름으로 선택하도록 지원하는 새 빌드를 내놨다. 음성 합성, 글자를 말소리로 바꾸는 기능을 붙이는 개발자는 서버에서 선택 가능한 목소리를 확인할 수 있고, 모델을 변환할 때는 음성 정보가 가중치, 모델이 학습한 수치 정보와 얼마나 잘 맞는지 로그로 살펴볼 수 있다.

1. 미리 담긴 음성을 이름으로 선택

b12061의 지원 대상은 음성 복제, 참고 목소리를 본떠 음성을 만드는 기능이 없는 kyutai/pocket-tts-without-voice-cloning 가중치다. 미리 정해진 음성은 음성 프롬프트, 모델에 참고 음성을 넣는 입력을 처리한 뒤 모델 내부에 남는 상태 정보, 모델이 처리 중 보관하는 값으로 들어 있다. 변환기, 모델 형식을 바꾸는 도구는 이를 모델에 다시 입력할 수 있는 표현으로 되돌려 저장하고, 값이 0인 음성 인코더, 음성을 모델 입력으로 바꾸는 구성 요소는 제외한다.

서버 요청에서는 voice 필드에, 명령줄 도구에서는 --tts-voice 옵션에 음성 이름을 넣는다. 별도 녹음에서 목소리를 가져오는 대신, 모델과 함께 제공된 목소리 중 하나를 고르는 방식이다. 음성 인코더가 없는 모델에 화자 참조, 목소리를 본뜰 기준 음성을 보내면 요청은 거절된다.

2. 변환 상태의 차이를 음성별로 기록

릴리스 노트에 따르면 Kyutai가 제공한 음성 상태는 해당 패키지의 가중치가 같은 프롬프트로 생성하는 상태와 차이가 날 수 있다. 이탈리아어·독일어·스페인어 상태는 bf16, 소수 정밀도를 낮춘 16비트 수치 형식의 반올림 오차 범위 안에서 일치한다. 반면 english_2026-04는 2%, french는 20% 차이가 난다. 프랑스어 상태의 0번 층은 다른 가중치에서 왔다.

이는 음질 점수가 아니라, 제공된 음성 정보와 가중치로 다시 만든 정보 사이의 차이다. 릴리스 노트는 참조 구현, 동작 기준으로 삼는 프로그램이 제공된 상태를 그대로 불러와도 같은 음성으로 들린다고 설명한다.

새 변환기는 복구한 입력으로 모델을 다시 실행한 뒤 전체 상태를 비교해 음성별 차이를 기록한다. 차이가 5%를 넘으면 경고하고, 해당 가중치와 전혀 맞지 않는 상태는 건너뛴다. 이 처리로 kyutai/pocket-tts 패키지도 변환할 수 있게 됐다.

3. 목록 조회와 잘못된 이름 처리

모델에 미리 정해진 음성이 있으면 서버의 GET /props 응답에서 voices 항목으로 이름 목록을 확인할 수 있다.

C API에는 음성 수를 제공하는 n_voices와 이름 조회 함수 mtmd_gen_audio_voice_name()이 추가됐다. 릴리스 노트는 음성을 특정 모델만의 기능이 아니라 오디오 생성 모델의 기능으로 다루도록 정리했다고 밝혔다.

미리 정해진 음성이 있는 모델에 존재하지 않는 이름을 보내면 서버는 오류 응답을 500 대신 400으로 바꾸고, 응답에 해당 음성 이름을 담는다. 서버 자체 문제처럼 보이던 실패를 요청한 이름의 문제로 안내하는 변화다. 음성 목록이 없는 모델은 voice 입력을 경고와 함께 무시한다.

기본 선택도 생겼다. 릴리스 노트에 따르면 이런 모델은 음성 프롬프트 없이 거의 무음만 출력한다. 이에 음성과 화자 참조를 모두 생략하면 첫 번째 음성을 선택하고, llama-tts와 서버 로그에 선택 사실을 남기도록 했다.

4. 이름 비교 방식과 사용상 변화

LFM3-Audio 채팅 템플릿, 대화를 모델 입력 형식으로 바꾸는 규칙은 음성 이름을 소문자로 바꿔 처리한다. 음성 조회도 대소문자를 구분하지 않도록 맞춰 Male처럼 대문자가 섞인 이름도 해당 음성과 일치시킨다. 사용자가 적은 이름과 템플릿이 처리한 이름의 대소문자가 달라도 같은 음성을 찾도록 맞춘 것이다.

사용자는 목록 조회와 기본 음성 선택으로 요청을 구성하기 쉬워진다. 그 대신 변환 과정에는 모델 재실행과 전체 상태 비교, 음성별 로그 기록이라는 작업이 추가된다. 선택 과정은 단순해지고, 가중치와 음성 정보가 맞는지 살피는 일은 변환 단계에서 더 명시적으로 다뤄진다.

서버 연동 코드는 잘못된 음성 이름에 대한 오류 처리 경로를 확인할 만하다. 같은 요청 실수라도 이제 500이 아니라 400 응답에 이름이 담기므로, 사용자에게 어떤 이름을 수정해야 하는지 안내하는 데 활용할 수 있다.

b12061은 Pocket TTS의 내장 음성을 이름으로 선택하게 하고, 가중치와 음성 상태의 차이를 변환 로그에서 확인하도록 개선했다.