mtmd: Pocket tts - 음성 복제 없이 지원되는 목소리
(#31429)
- feat: 음성 복제가 필요 없는 PocketTTS 음성 지원
kyutai/pocket-tts-without-voice-cloning 가중치(weights)는 음성 프롬프트 이후의 백본 (backbone) KV 상태로 미리 정의된 음성을 전송합니다. 컨버터는 각 상태를 다시 프롬프트 임베딩으로 변환하여 mmproj (voice.)에 저장하고, 제로화된 음성 인코더(zeroed voice encoder)는 제외하며, /tts의 "voice" 필드와 --tts-voice가 이들 중 하나를 선택합니다. 모델에 음성 인코더가 없는 경우 스피커 참조(speaker reference)는 거부됩니다.
Assisted-by: Claude Fable 5.1
- convert : pocket-tts 음성은 변환 실패가 없음, 상태의 편차 (drift) 기록
Kyutai가 전송하는 음성 상태는 패키지의 가중치가 프롬프트에 제공하는 상태와 항상 일치하지 않습니다: 이탈리아어, 독일어, 스페인어는 bf16 반올림 내에서 일치하며, english_2026-04는 2% 차이, 프랑스어는 20% 차이(레이어 0 상태가 다른 가중치에서 나옴)를 보입니다. 반면 참조(reference)는 이를 그대로 로드하며 여전히 같은 음성처럼 들립니다. 컨버터는 이제 복구된 임베딩으로 백본을 재-프롬프트하고, 전체 상태를 비교하여 음성별 거리를 기록하며 5% 이상일 경우 경고합니다. 가중치에 전혀 속하지 않은 상태는 건너뛰어지므로 kyutai/pocket-tts 패키지도 변환됩니다.
Assisted-by: Claude Fable 5.1
- mtmd : 미리 정의된 음성 목록화, GET /props에서 노출
mtmd_gen_audio_info에 n_voices가 추가되고 mtmd_gen_audio_voice_name()이 이름과 함께 추가되어, 음성은 모든 오디오 생성 모델의 기능으로 취급됩니다. 서버는 모델이 일부를 전송할 때 /props 아래 "voices"에서 이들을 목록화합니다.
Assisted-by: Claude Fable 5.1
- server : 알 수 없는 음성은 잘못된 요청 (bad request)
미리 정의된 음성을 가진 모델은 500 "TTS 프롬프트 처리 실패" 대신 400으로 음성 이름을 응답합니다. 그러지 않은 모델은 다른 오디오 생성 모델처럼 경고와 함께 "voice"를 무시합니다.
Assisted-by: Claude Fable 5.1
• API 리팩토링
• 변환 오류 수정
• 사소한 이름 변경
• 린트(Lint) 오류 수정
• TTS: 미리 정의된 음성을 가진 모델은 기본적으로 첫 번째 음성으로 발화합니다.
음성 프롬프트가 없는 경우, 이러한 모델은 거의 침묵만 생성합니다. 음성이나 스피커 참조를 제공하지 않으면, llama-tts와 서버는 이제 첫 번째 미리 정의된 음성을 사용하며 로그에 이를 표시합니다. 이는 LFM3-Audio 템플릿이 기본 음성과 함께 하는 방식과 같습니다.
도움 제공: Claude Fable 5.1
• mtmd: 각 음성 접근자(voice accessor)마다 하나의 주석을 추가하고, 변환기(converter)는 규칙만 명시합니다.
clip.h의 주석은 clip_gen_get_voice를 설명했지만 세 함수 모두 위에 위치했습니다. 변환기의 주석은 패키지별로 측정된 드리프트(drift)를 인용했는데, 이는 가중치 업로드 시점에 구식이 됩니다.
도움 제공: Claude Fable 5.1
• 중복 코드 및 주석 정리
• mtmd: LFM3-Audio 음성 이름의 대소문자를 구분하지 않고 일치시킵니다.
tts 채팅 템플릿은 음성 이름을 소문자로 변환하므로, Male은 남성 음성으로 발화합니다. 음성 조회(voice lookup)도 동일하게 소문자로 변환하며 비트맵의 이름을 표준 음성(canonical voice)을 따르게 합니다.
공동 작성자: Xuan Son Nguyen [email protected]
공동 작성자: Pascal [email protected]
웹사이트:
증명(Attestations):
macOS/iOS:
Linux:
안드로이드:
윈도우:
openEuler:
⚠️ 비활성화됨
- openEuler x86 (310p)
- openEuler x86 (910b, ACL Graph)
- openEuler aarch64 (310p)
- openEuler aarch64 (910b, ACL Graph)
사용자 인터페이스 (UI):