5P by GN⁺ | ★ favorite | 댓글 1개
  • 짧은 참조 오디오만으로 화자의 음색을 복제하고 여러 언어로 말하게 하는 방식으로, 추가 화자별 학습 없이 동작하는 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만 명 이상에게 제공됨

댓글과 토론

Hacker News 의견들
  • 저자들이 바로 시험해 보기 쉽게 만든 점은 좋지만, 일반적인 음성 복제 용도로는 잘 맞지 않았음
    책에 관한 Wikipedia 첫 문단을 읽게 하고 다음 문장을 생성했는데, 귀에는 명백히 컴퓨터가 만든 소리처럼 들림
    오디오 샘플: https://storage.googleapis.com/dalle-party/sample.mp3
    복제 음성(mp3 변환): https://storage.googleapis.com/dalle-party/output_en_default...
    pip로 패키지를 설치하고 오디오 샘플을 넣어 demo_part1.ipynb를 실행했을 뿐이며, 노트북 3070 Ti / 8GB에서 거의 즉시 끝났음

    • README에도 내부 음성 복제 기술 성능을 근사한 오픈소스 구현이며, myshell.ai의 온라인 버전이 음질·복제 유사도·말의 자연스러움·계산 효율에서 더 낫다고 적혀 있음
    • 실제 예시는 고마웠고, 내 귀에도 꽤 생성된 소리처럼 들렸음
      원본 음성 자료를 더 많이 넣으면 얼마나 나아질지 궁금함
    • 웹사이트와 예시를 보면 꽤 명확하게 스타일화된 애니메이션 목소리를 만들도록 구성된 것 같음
    • xtts 같은 다른 도구를 써본 경험상, 최상의 결과를 얻으려면 스튜디오급 음성 샘플이 정말 필요함
  • 이걸, 또는 Eleven Labs를 써서 Android 휴대폰의 TTS에 꽂아 넣을 음성 모델을 만들 수 있을까 궁금함
    후두가 마비된 친구가 휴대폰이나 작은 노트북에 글을 입력해 소통하는 일이 많음
    예전 녹음에서 그 친구의 목소리를 가져와 조금이나마 “자기” 목소리를 돌려줄 수 있다면 정말 좋아할 것 같음

    • Acapela [0], SpeakUnique [1], VOCALiD [2] 같은 해법을 살펴볼 수 있음
      다만 Android용 해법이 있는지는 확실하지 않음
      Google이 ALS 환자를 위해 만든 맞춤 음성 영상을 최근 봤는데 온라인에서 찾지 못하겠음
      Android에서는 아직 맞춤 음성 생성이 제공되지 않지만, 최신 iOS 17은 개인화 음성 생성을 지원함
      ModelTalker [3]는 언어 장애가 있는 사람을 위한 맞춤 음성 생성 장기 연구 프로젝트로 보이고, TTS가 Android를 지원하는 듯해서 또 다른 선택지가 될 수 있음
      [0] https://www.acapela-group.com/
      [1] https://www.speakunique.co.uk/
      [2] https://vocalid.ai/
      [3] https://www.modeltalker.org/
    • 안타깝지만 지금은 안 됨
      Google에서 TTS에 기여했고 Android 쪽도 해봤는데, iOS에는 이 기능이 내장되어 있음
      “Apple이 막 출시한 것”만큼 강한 Google 제품 관리자는 없으니, 오히려 희망적인 신호일 수도 있음
      지금 크로스플랫폼 온디바이스 추론 작업을 하고 있고 GitHub의 FONNX를 참고하면 되며, 이건 한동안 마음에 남을 100가지 항목 중 하나라 시간이 나면 연락해 보겠음
      편집: 키보드와 “말하기” 버튼이 있고 Eleven Labs API를 호출하는 Android 앱이면 시도해 볼 만한 수준으로 충분할까?
  • GitHub: https://github.com/myshell-ai/OpenVoice
    체크포인트: hxxps://myshell-public-repo-hosting.s3.amazonaws.com/checkpoints_1226.zip
    Amazon에 호스팅된 zip 파일로 바로 연결되는 링크에는 거부감이 있어서 체크포인트 링크는 무력화했음
    파일 안에 무엇이 들어 있는지도 검토하지 않았음

  • 이 논문이 마음에 듦
    “우리는 이렇게 했고, 다른 사람들도 할 수 있게 돕고 싶다”는 식으로 읽힘
    특히 “Remark on Novelty” 절이 훌륭한데, OpenVoice가 모델 구조의 하위 모듈을 발명하려는 게 아니라 음성 스타일·언어 제어를 음색 복제에서 분리한 프레임워크가 기여라고 말함
    자기 기여를 과장하려 하지 않음

  • 예시: https://research.myshell.ai/open-voice
    꽤 인상적으로 보임

  • 라이선스가 Creative Commons Attribution-NonCommercial 4.0 International License라 상업적 사용을 금지하고, MyShell이 워터마크가 있든 없든 OpenVoice로 생성된 오디오인지 감지할 수 있다고 되어 있음
    그렇다면 “open”이 아니고, 이걸로 돈도 벌 수 없는 것 아닌가?

    • 당신의 정의와 다를 뿐 open은 맞음
      코드를 보고, 쓰고, 원하는 만큼 수정할 수 있으니 꽤 열려 있다고 봄
    • 돈은 벌 수 없음
      비상업 라이선스를 신경 쓰지 않는 사기꾼들은 물론 가능하겠지만
  • 잘 홍보되어 있지는 않고 Apple이 계속 개발 중인지도 모르겠지만, iOS에는 Personal Voice라는 음성 복제 기능이 있음
    자기 목소리로 학습하는 데 약 15분 걸리고, 잠금 상태에서 온디바이스로 처리하는 데 몇 시간이 걸림
    전화 통화와 FaceTime에서 쓸 수 있고 다른 곳에서도 가능할지 모름
    일반 TTS에도 쓸 수 있으면 좋겠음

    • 이건 목소리를 잃어가거나 잃을 위기에 있는 사람들을 위한 접근성 기능
      전화나 FaceTime에서 쓸 수 있다는 표현 때문에 음성-음성 변환처럼 들리지만, 실제로는 TTS 전용임
      음성-음성 변환이 아니라서 말을 더듬는 특성, 운율 같은 실제 목소리처럼 느끼게 하는 신호는 유지하지 못함
  • 며칠 전 영국 대형 시중은행 중 하나에 전화했는데, 아직도 멍청한 “내 목소리가 내 비밀번호” 프로그램에 가입하라고 권하고 있었음
    AI가 여기까지 온 단계에서 이건 그냥 부주의하게 느껴짐

    • Fidelity Investments는 약 일주일 전에 더 나쁜 일을 했음
      몇 가지 질문에 답하라고 하더니, 방금 음성 식별 프로그램에 등록되었다고 알렸음
      이제 그걸 취소하는 일이 할 일 목록에 하나 더 생김
      모든 회사가 가장 멍청한 사람들을 관리직으로 승진시키는 건가 싶음
    • Investec인가? 나도 전화해서 비활성화해야 할 것 같음
  • 음성 복제의 비도덕적·범죄적 사용이 합법적인 사용보다 훨씬 많을 것 같다는 생각이 먼저 들고, 지금도 그렇다

    • 먼저 떠오르는 건 익명성
      실제 목소리를 쓰지 않고 YouTube 영상을 만들 수 있으면서도, TTS AI 음성이 못 하는 개인적인 억양과 강조는 유지할 수 있음
      또는 인디 게임 개발에서도 쓸 수 있음
      기본적인 성우 연기를 배워 어색함을 줄이고, 여러 목소리로 모든 캐릭터를 직접 연기할 수 있음
    • 합법적인 활용 사례를 무엇을, 얼마나 고려해 봤는지 궁금함
    • 상업적 사용이 불법적 사용보다 더 많아지는 경우는 어떤가?
      YouTube는 사람들이 원작자의 목소리로 현지화된 언어를 들을 수 있게 만들 것임
    • 동의하지 않음
      우리는 그냥 목소리를 인증 수단으로 받아들이지 말아야
      가장 흔한 활용은 성우 없이 예술과 콘텐츠를 프로그램적으로 만드는 일이 될 것 같음
      영상이나 3D 모델 파이프라인과 프레임 단위 변환을 완성해 사실적으로 보이게 만들 수 있게 되면, 배우도 거의 필요 없어질 가능성이 큼
    • 사랑하는 사람들과 미리 이야기해서, 비상 상황에 갇혀 송금이 필요하다는 식의 상황에서 쓸 암구호를 정해 두면 됨
      어떤 은행들은 전화할 때 음성 인증을 쓰고, 직접 요청해야 빠질 수 있음