AISpeechTTSSTT

AI 음성 기본

·5 min read

https://www.youtube.com/watch?v=8Z3AKGqQ2Gg&pp=ygUJQUkg7Luk67KE

file_cNyk6z8oYJtCBwBYZ4

요즘 세상이 말세라 유튜브 보면

스폰지밥이 노래를 부르고 있다.

AI 커버라는게 목소리 갈아 끼우기라고 보면 되는데,

가수 A가 부른 노래에서 A 목소리를 빼네고 그 자리에 내가 원하는 최애 목소리를 입히는 기술이다.

전문 용어로는 SVC(Singing Voice Conversion) 또는 RVC(Retrieval-based Voice Conversion) 이라고 부른다

요즘은 기술이 좋아져서 10초 분량 목소리로 TTS 복제가 가능한 정도다.

어케함?

AI 커버를 만드는데는 3가지 과정이 필요하다.

  1. 노래 (MR과 보컬): 내가 바꾸고 싶은 원곡

  2. 목소리 모델 (AI 모델): 내가 입히고 싶은 목소리 파일(스폰지밥)

  3. 프로그램 (RVC, UVR): 이 둘을 섞어주는 믹서기.

전처리

재료만 있다고 다 되는건 아니고, 먼저 전처리가 필요하다

노래 파일은 보통 목소리와 반주(악기)가 합쳐져있다.

이걸 그대로 쓰면 악기에 목소리 입히기가 되버리니 분리하는 과정이 필요하다.

분리 과정에서는 UVR(Ultimate Vocal Remover) 라는 기술이 쓰인다.

UVR을 통해 사람 목소리(보컬)과 배경 음악(MR)을 깨끗하게 분리하는 것이다.

변환

이제 분리해낸 '원곡 가수 목소리'를 가져와서 AI에게 명령한다.

"이 노래랑 같은 음정과 박자로, 스폰지밥 목소리로 다시 불러봐"

이 과정을 "추론(Inference)"이라고 한다.

이때 사용되는게 바로 RVC다.

합치기

이제 우리는 배경음악(MR)과 새로운 스폰지밥 목소리가 있다.

두 개를 합치면? 짜잔, 스폰지밥이 "사랑.. 그게 뭔데"를 불러준다.

보컬 분리 모델

AI의 꽃은 데이터 전처리에 있다.

AI 음성에 꽃은? 물론 전처리다.

음악을 어떻게 잘 분리해내서 깨끗한 데이터를 분리하느냐가 중요하다는 것이다.

Bleedless 그리고 Fullness

음악에서 특정 악기 소리나 목소리를 분리할 때 사용하는 성능 척도다.

스펙트로그램이라고 소리를 시간의 흐름에 따라 각 주파수(음의 높낮이)별 세기를 색깔로 시각화한 그래프가 있다.

그래프는 뭐다? 이미지다.

음성의 대한 처리는 생각보다 이미지 처리와 유사하다.

아무튼 AI가 분리해낸 소리와 원본 소리를 시각화한 그래프로 비교해서 성능을 측정한다는 것이다.

비교시에 분리된 보컬 소리에 악기 소리 또는 환경 소리가 섞여들어 있다면,

원치 않는 신호가 추가(+)된 상태로 본다.

Bleedless는 불필요하게 섞여 들어온 소리가 많을수록 낮은 점수를 준다.

반대로 보컬의 울림이나, 숨소리 같은 원래 있어야 할 소리가 사라졌다면,

이는 있어야 할 소리가 누락된(-) 상태로 본다.

Fullness는 원래 있어야 할 소리가 사라진 정도가 클수록 점수는 낮게 매긴다.

즉 두 지표 값이 모두 높을 수록 분리 성능이 뛰어나다는 의미다.

마무리

실제로 어떻게 진행하는지, 툴에 대해서는 지금 다루지는 않겠다.

아직 환경 설정부터 진행하는데 시간이 좀 걸리기 때문에, 기회가 된다면 나중에 다뤄보겠다.

← Previous
퍼사드 패턴에 대해 알아보자
Next →
프론트엔드 모던 AI 챗 인터페이스 구축 - 1부작, Vercel AI SDK