- 짧은 참조 오디오만으로 화자의 음색을 복제하고 여러 언어로 말하게 하는 방식으로, 추가 화자별 학습 없이 동작하는 Zero-shot TTS 문제를 겨냥함
- 핵심은 음색 복제와 언어·스타일 제어를 분리하는 구조이며, base speaker TTS가 감정·억양·리듬·휴지·인트네이션을 만들고 tone color converter가 참조 화자의 음색을 입힘
- 새 언어에 대한 대규모 다화자 학습 데이터가 없어도 zero-shot cross-lingual 복제가 가능하며, 학습에는 base TTS용 30K 문장과 converter용 20K명·300K 오디오 샘플이 사용됨
- 전체 구현은 자기회귀나 확산 구성요소가 없는 feed-forward 구조로, 최적화 버전은 단일 A10G GPU에서 12× 실시간 성능을 내고 1초 음성 생성에 85ms가 걸림
- 소스 코드와 모델 가중치가 공개됐으며, OpenVoice는 MyShell.ai 음성 엔진으로 전 세계 200만 명 이상에게 제공됐고 내부 버전은 2023년 5월부터 10월까지 수천만 회 사용됨
OpenVoice가 겨냥한 즉각 음성 복제 문제
- 즉각 음성 복제(IVC)는 짧은 참조 오디오만으로 특정 화자의 목소리를 복제하는 TTS이며, 추가 화자별 학습 없이 동작하는 Zero-shot TTS로도 불림
- 활용처는 미디어 콘텐츠 제작, 맞춤형 챗봇, 인간과 컴퓨터 또는 대규모 언어 모델 간 멀티모달 상호작용까지 넓음
- 기존 방식은 속도, 제어성, 언어 확장성에서 각각 제약이 있음
- VALLE, XTTS 같은 자기회귀 방식은 참조 음성의 acoustic token이나 speaker embedding을 조건으로 음색을 복제하지만, 감정·억양·리듬·휴지·인트네이션 같은 스타일을 유연하게 조작하기 어려움
- YourTTS, Voicebox 같은 비자기회귀 방식은 추론 속도가 빠르지만, 음색 외 스타일 파라미터를 유연하게 제어하지 못함
- 기존 cross-lingual 음성 복제는 보통 각 언어에 많은 화자를 포함한 MSML 데이터셋이 필요해 새 언어를 추가하기 어려움
- OpenVoice는 세 가지 목표를 함께 다룸
- 참조 화자의 음색을 복제하면서 감정, 억양, 리듬, 휴지, 인트네이션을 별도로 제어
- MSML 학습 데이터에 없는 참조 화자 언어나 생성 언어에서도 cross-lingual 복제 수행
- 대규모 상용 환경에서 품질 저하 없이 빠른 실시간 추론 제공
음색과 스타일을 분리한 구조
- OpenVoice의 핵심 아이디어는 하나의 큰 모델이 음색·언어·스타일을 모두 동시에 배우게 하지 않고, 더 쉬운 하위 작업으로 나누는 것임
- base speaker TTS model은 언어와 스타일을 맡음
- 단일 화자 또는 다화자 TTS 모델을 사용할 수 있음
- VITS는 text encoder와 duration predictor에 스타일·언어 embedding을 넣도록 수정 가능함
- InstructTTS는 스타일 프롬프트를 받을 수 있음
- Microsoft TTS처럼 SSML로 감정, 휴지, 조음 방식을 지정하는 상용 모델도 사용할 수 있음
- 사람이 직접 원하는 스타일과 언어로 텍스트를 읽어 base voice를 만들 수도 있음
- 공개 구현에서는 기본적으로 VITS가 사용됨
- tone color converter는 base speaker 음성을 참조 화자의 음색으로 바꿈
- encoder는 base speaker 음성의 short-time Fourier transformed spectrum을 입력으로 받는 1D convolutional neural network임
- tone color extractor는 mel-spectrogram에서 음색 정보를 담은 단일 벡터를 추출하는 2D convolutional neural network임
- normalizing flow는 base 음성의 음색 정보를 제거하면서 언어와 스타일을 보존한 표현을 만듦
- 이 표현은 시간 축에서 IPA 기반 feature와 정렬됨
- inverse flow는 참조 화자의 음색 벡터를 조건으로 넣어 새 음색을 feature map에 입힘
- HiFi-GAN이 최종 raw waveform을 생성함
- 공개 구현의 전체 모델은 자기회귀 구성요소 없이 feed-forward로 동작함
- HuBERT 기반 unit 추출 방식은 음색 정보뿐 아니라 감정과 억양까지 제거하는 문제가 있음
- 정보 병목을 구성해 음성 내용만 보존하는 다른 방식은 음색을 완전히 제거하지 못함
- OpenVoice의 새로움은 개별 submodule 발명보다 스타일·언어 제어와 음색 복제를 분리한 프레임워크에 있음
학습 데이터와 학습 목표
- base speaker TTS 학습에는 4명의 화자 데이터가 사용됨
- 미국식 영어 화자 1명, 영국식 영어 화자 1명, 중국어 화자 1명, 일본어 화자 1명
- 총 30K 문장, 평균 문장 길이 7초
- 영어와 중국어 데이터에는 감정 분류 라벨이 있음
- 수정된 VITS는 emotion categorical embedding, language categorical embedding, speaker id를 text encoder, duration predictor, flow layer에 입력함
- 학습된 base model은 base speaker를 바꾸는 방식으로 억양과 언어를 바꾸고, 입력 텍스트를 서로 다른 감정으로 읽을 수 있음
- 추가 학습 데이터 실험에서는 리듬, 휴지, 인트네이션도 감정과 같은 방식으로 학습 가능함
- tone color converter 학습에는 20K명의 300K 오디오 샘플이 사용됨
- 영어 약 180K 샘플
- 중국어 약 60K 샘플
- 일본어 약 60K 샘플
- 이 데이터셋을 MSML 데이터셋으로 부름
- converter의 학습 목표는 두 가지임
- encoder-decoder가 자연스러운 소리를 만들도록 mel-spectrogram loss와 HiFi-GAN loss를 사용
- flow layer가 오디오 feature에서 음색 정보를 최대한 제거하도록 학습
- 음색 제거 학습은 텍스트를 IPA phoneme 시퀀스로 바꾼 뒤 learnable embedding과 transformer encoder로 text content feature를 만들고, 오디오 feature와 dynamic time warping으로 정렬해 KL-divergence를 최소화함
- flow layer에는 스타일이나 언어 정보를 조건으로 주지 않아 음색 외 정보를 제거하지 않도록 설계함
- flow layer는 invertible 구조라서 새 음색 정보를 조건으로 inverse process를 실행하면 동일한 내용과 스타일에 참조 화자의 음색을 다시 넣을 수 있음
실험 결과와 관찰된 제약
- 음성 복제 평가는 연구마다 학습셋, 테스트셋, Mean Opinion Score 평가 조건이 달라 객관적인 수치 비교가 어려움
- OpenVoice 평가는 기존 방법과의 수치 비교보다 자체 정성 성능 분석과 공개 오디오 샘플 제공에 초점을 둠
- 음색 복제 테스트셋은 유명인, 게임 캐릭터, 익명 개인의 참조 화자를 포함함
- 표현력이 강한 독특한 음성과 인간 음성 분포에서 중립적인 샘플을 함께 포함함
- 4개 base speaker와 여러 참조 화자 조합에서 참조 음색을 복제하고 여러 언어와 억양으로 음성을 생성함
- 스타일 제어 평가는 base speaker model과 Microsoft TTS SSML로 다양한 스타일의 1K 샘플 코퍼스를 만든 뒤 참조 음색으로 변환함
- 감정, 억양, 리듬, 휴지, 인트네이션이 잘 보존됨
- 드문 경우 감정이 약간 중립화됨
- 특정 문장의 tone color embedding vector를 같은 base speaker의 서로 다른 감정 문장 여러 개에서 얻은 평균 벡터로 바꾸면 이 문제가 완화됨
- cross-lingual 복제는 MSML 데이터셋에 없는 언어에 대해 near zero-shot으로 동작함
- 참조 화자의 언어가 MSML 데이터셋에 없어도 참조 화자의 음색을 복제할 수 있음
- 생성할 언어가 MSML 데이터셋에 없어도 base speaker TTS가 해당 언어를 지원하면 참조 음색으로 그 언어를 말할 수 있음
- 단, 해당 언어의 base speaker는 필요함
- 속도 실험에서 최적화된 OpenVoice는 base speaker model과 tone converter를 포함해 단일 A10G GPU에서 12× 실시간 성능을 달성함
- 1초 음성 생성에 85ms가 걸림
- GPU 사용 분석상 상한은 약 40× 실시간으로 추정되지만, 이 개선은 향후 작업으로 남아 있음
- IPA 사용은 cross-lingual 음색 변환에 중요함
- IPA는 언어 간 통합 음소 사전이라 flow layer가 언어 중립 표현을 만들 수 있게 함
- 다른 음소 사전 실험에서는 학습에 없던 언어의 일부 음소를 잘못 발음하는 경향이 나타남
- 입력 오디오가 정확해도 출력 오디오에 문제가 생기거나 비원어민처럼 들릴 가능성이 커짐
공개 자료와 사용 현황
- OpenVoice는 연구 재현과 후속 연구를 위해 소스 코드와 학습된 모델을 공개함
- 정성 결과는 OpenVoice demo에서 볼 수 있음
- 세부 데모는 다음 범주로 나뉨
- 공개 전 내부 버전은 2023년 5월부터 10월까지 전 세계 사용자에게 수천만 회 사용됨
- MyShell.ai에서는 OpenVoice를 즉각 음성 복제 백엔드로 사용했고, 해당 플랫폼에서 수백 배 사용자 증가를 경험함
- 현재 OpenVoice는 MyShell.ai의 음성 엔진으로 전 세계 200만 명 이상에게 제공됨