Few-Shot 학습의 한계, 인간 목소리와 음성변환 모델의 특징
(+2025.03.22 over fitting 설명 추가)
(내용을 전혀 모르면 한 번 보는 걸 추천한다. 추가로 해당 영상은 실제로 AI딥페이크 음성은 아니지만 실제 딥페이크랑 매우 유사하다.)
결론을 미리 말하자면, 통화 상대끼리만 아는 내용을 말하는 것이 가장 안전하고 좋다. 그리고 보이스피싱은 목소리를 바꾸는 것뿐만 아니라, 응급전화나 중요 사실 확인전화를 가로채기도 하기 때문에 실제로는 목소리만 갖고 판별하긴 어렵다. 이 글의 내용은 AI 음성 업계에선 흔한 사실이어서, 글을 작성 중인 현시점에서는 보이스피싱 실시간 구분 AI까지 이미 존재하는 상태이다. 그러니 이 글은 그저 재미로만 봐주길 바란다.
요즘 AI 음성변환 기술을 활용하는 신종 보이스피싱에 대해 사회적으로 관심이 많은 것 같다. 물론 현대 사회에선 대한민국 전 국민이 공유하는 대중문화나 매체는 거의 존재하지 않지만, 이 문제에 대해 관공서나 학교에서도 예방 차원의 교육을 한다는 것은 사회적으로 관심이 많다는 것의 방증이 될 것이다. 그런데 사건의 어느 부분에 그렇게 관심이 쏠리는 것일까? 그건 AI 음성변조 기술이 5~10초 정도 되는 아주 짧은 시간의 목소리 데이터만 가지고도, 그 사람의 목소리를 거의 정확하게 복사해 낸다는 것에 있다.
보통 이런 보이스피싱에 대해서 가족끼리만 아는 암구호 격의 정보를 물어보며 대처한다. 그런데 과연 그것이 최선일까? 즉, 암구호같이 멀리 돌아가는 방식이 아니라, 보이스피싱에 사용되는 AI 음성변조 기술이 갖는 근본적인 문제점을 캐치해 낼 수 있는 보편적인 방법은 없을까? 이번 글에서는 보이스피싱에 사용되는 Few-shot Real Time Voice Conversion 모델이 갖는 문제점을 살펴보며, 암구호 없이 보이스피싱 목소리와 실제 목소리를 구분하는 방법을 알아보겠다.
먼저 용어의 설명으로 시작하자. Few-Shot, 그리고 Real Time Voice Conversion이 뭘까? 일단 후자부터 알아보겠다. "실시간 음성 변환"이라는 직역 그대로 음성을 입력받고 실시간으로 변환된 음성을 출력하는 모델을 의미한다. 실시간이 아닌 모델 같은 경우엔 원본 음성 파일을 다른 목소리의 음성 파일로 변환하는 모델인데, 예를 들자면 유튜브에 자주 나오는 ai cover, 신창섭(메이플스토리 디렉터) 합성 음악같이 음악 모델들이 있다.
그런데 이런 AI 합성 음악을 들어보면 알겠지만, 생각보다 조금 부자연스러운 부분들이 많다. 그 원인에 대해 기술적으로 얘기하자면 한국어의 발음 구조, 남성과 여성의 성대 구조, 문장 사이 호흡의 패턴 등 할 말이 많지만, 그런 기술적인 사항을 고려하지 않아도 그냥 직감적으로 부자연스러움이 느껴진다. 상대적으로 긴 시간 동안 AI가 연산을 해서 변환한 음성인 'AI cover'도 부자연스러운데, 연산도 얼마 하지 않고 실시간으로 변환하는 경우엔 정말 성능이 떨어질 것 같다.
그런데 실제론 그렇지 않다. 당장 보이스피싱이라는 사례가 있듯이, 실시간 음성변환 기술은 적은 학습데이터만 가지고도 인간을 속일 정도로 완벽히 음성을 모방할 수 있다. 이게 어떻게 가능한 걸까? 그 해답은 Few-shot Learning과 '실시간' 음성변환의 원리에 있다. 지금부터 이 두 개념에 대해 알아보면서 한계점을 파악해 볼 것이다. 그러면 자연스레 화자가 어떻게 말해야지 AI음성변조를 파훼할 수 있는 지도 알 수 있게 될 것이다.
먼저 Few-Shot Learning이다. 'few'라는 단어에서 예상했을지 몰라도, 적은 양의 학습 데이터만 갖고 높은 퀄리티로 학습한다는 것을 말하는 용어이다. 5~10초, 또는 한 문장의 음성만을 갖고도 목소리 전체를 복사한다는 것이 바로 이 내용이다. 이렇게 목소리의 가중치를 학습하여 저장했다가 실시간 음성변환 단계에서 사용하는 것이다.
그런데 AI 업계에서 불문율이 하나 있다면, 많은 양의 데이터는 어떻게든 더 좋은 성능을 이끌어낸다는 점이다. "최신 모델이 몇 억, 몇 조 개의 데이터로 학습했다~"는 식의 이야기의 베이스엔 이 아이디어가 깔려있다. 그래서 적은 양의 데이터만 갖고도 좋은 성능을 뽑으려면, 데이터를 부풀리거나 확대 해석하는 등의 조작이 포함될 수밖에 없다.
그렇게 되면 AI에게 과적합(Over fitting)이라는 문제가 발생한다. 개발자의 의도대로 원본 데이터의 보편적인 패턴을 학습하는 것이 아니라, 원본 데이터에서만 성능이 잘 나오도록 학습되는 것이다. 수학 공부를 하는데 공부할 문제의 양 자체가 적다면, 풀이과정을 이해하는 것보단 답을 통째로 암기하는 게 더 낫지 않겠는가? AI도 똑같다. 그래서 숫자만 바꿔도, 즉 문제 상황이 조금만 달라져도 성적이 크게 낮아지는 것이다. 이것이 Few-shot이 피해 갈 수 없는 한계점이다.
위의 한계가 음성 모델에선 다음과 같이 드러난다. 몇 초 남짓한 음성에서는 화자의 목소리 톤, 감정상태, 말의 빠르기, 억양, 특정 단어의 발음습관 등을 전부 캐치할 수 없다. 보통 공격자는 "여보세요~"로 이어지는 평소투, 존댓말을 접할 텐데, 이러면 위에서 말한 것들이 전부 고정되거나 파악할 수 없다.
재밌는 예시를 하나 소개한다. 당신의 몇 초짜리 음성을 학습한 AI는 어떻게 '소스' 발음을 할까? 정답은 사전학습된 모델이 발음하는 방식대로 한다는 것이다. 원래 미국인 화자였다면 정석 발음으로, 한국 화자는 콩글리쉬로(그마저도 위와 같이 4개로 갈리지만), 일본 화자는 일본식 영어발음으로 발음한다. 그렇기에 이전까지는 쭉 한국어로 잘 말하다가 갑자기 미국식 혹은 일본식의 발음이 갑자기 튀어나올 수 있다는 것이다.
여기에 추가로 '실시간' 변환의 한계는 음성 변환에 충분한 시간을 주지 않는다는 것에 있다. 음성 변환이 빠를수록 기계음 같은 것, 인터뷰 시에 목소리를 가려줄 때 나오는 그런 소리가 더 많이 섞여 나온다. 이게 잘 드러나는 것이 이성의 목소리로 바꾸는 경우이다. 음악을 배운 사람이라면 알겠지만 남자와 여자의 톤 차이는 1옥타브 = 12 피치다. 그래서 남자 목소리에 12 피치만 더하면 여자 목소리가 되는데, 여기에 음성변조를 더하면 평서투로 말했을 때 기계음이 상당히 많이 묻어 나온다. 결국 남자와 여자의 성대 구조나 억양 등에 근본적인 차이가 있어서 부자연스러움을 피할 수가 없는 것이다.
그런데 보이스피싱 상황에서 기계음이 없이 자연스러운 이유가 뭘까? 그건 '울먹이는 상황'이라는 특수한 상황 때문이다. 훈련소 군인들이 크게 소리 지를 때 누가 누구 목소리인지 잘 구분할 수 없고, 여자가 엄청 울먹이면서 말하면 원래 목소리가 '잠겨서' 안 나오는 상황이 대표적인 예시이다. 이렇게 특수한 상황은 개인의 목소리의 개성을 삭제한다. 그리고 울먹일 때는 억양, 호흡 패턴, 목소리 톤 등을 일부러 어색하게 만들기도 힘들기 때문이다.
슬슬 이쯤 되면 적은 데이터만 갖고 하는 실시간 음성변조가 얼마나 힘든지 느껴질 것이라고 생각한다. 마술에서는 '미스디렉션'이라고 해서, 관객의 주의를 돌려서 트릭을 숨긴다는 의미를 가진 용어가 있는데, 보이스피싱의 음성변조 성능은 일종의 미스디렉션이라고 보면 좋겠다. 특수한 상황 부여, 발음하기 어려운 대답 회피, 빠르게 끊기 등 음성모델이 유리한 필드 안쪽으로 끌고 오는 것이다.
원 주제로 돌아가서 어떻게 AI목소리와 사람 목소리를 구분하는가?라고 한다면 그 필드를 벗어나게 만들면 된다. 스피커폰을 사용하라고 한다거나, 울지 말고 말하게끔 한다거나, 발음이 제각각인 단어를 말하게 한다거나.. 결국 음성 자체만으로 분석하려면 이 정도가 최선이다. 그래서 보이스피싱 구분에서는 못써먹지만 인터넷에서 목소리 변조하는 사람들 잡는 데에는 꽤 도움 될 것이라고 생각한다.
논점을 조금 이탈했는데, 그건 보이스피싱을 음성만으로 구분하는 건 비효율이라서 그렇다. 그렇지만 여기서 분석한 결과들은 음성변조를 파악하는 데에 유용하게 써먹을 수 있는 확실한 방법들이다. 음성 분야가 현재 매우 활발하게 연구되며 발전 중인만큼, 필자도 음성에 대해 깊게 알지 못하기에 세세하게 다른 부분들이 있을 수 있다. 이 글의 목적은 어디까지나 보이스 피싱 대처보다는 음성변조 구별 그리고 재미였기 때문에 재미있게 봐주셨다면 감사한다. 이상으로 글을 마친다.