어떻게 상담사처럼 발화하는 모델을 만들 수 있을까?
robin • ML Engineer
저희가 개발한 TTS 모델 (Channel-TTS) 가 실제 전화ALF 에서 '하나' 로 사용되는 예시 입니다.
안녕하세요. 채널톡 AI팀 스피치 조직의 Robin(신승윤), Belle(김지우), Day(안동하), Luke(전승욱)입니다. 저희는 AI 전화 상담을 위한 TTS (Text‑to‑Speech) 모델을 연구·개발하고 있습니다.
여러 상용 TTS가 이미 존재하지만, 저희가 자체 모델을 만드는 이유는 명확합니다.
상담사향 프로소디의 일관성과 자연스러움이 부족합니다.
한국어 특유의 상식 기반 발화 처리에 취약합니다 (한·영 혼용, 날짜·시간, 주문/고유번호, URL·이메일 등).
궁극적으로 정말 사람 같은 목소리를 만들어 자연스러운 상담 경험을 제공하고자 합니다.
이를 개선하기 위해 공개/합성 데이터를 활용해 SFT(Supervised Fine-Tuning)을 수행하고, GRPO,DPO 등 RL 기반의 post-training을 추가 수행하여 실제 상담 시나리오에 적합한 상담사향 발화(prosody)를 구현하는 방법을 제안합니다. 이 페이지에서는 저희가 결과를 도출하기까지 직면했던 다양한 도전과제들과 이를 해결하기 위해 어떤 고민과 노력을 기울였는지를 소개하고자 합니다.
Fig1. 내부 벤치마크에서 A/B 테스트를 진행하였고 DPO Round 2 모델이 슈퍼톤, 일레븐랩스, GPT4o 등을 재치고 더 '상담사향에 적합하며' 사람같다라는 평가를 받았습니다.
외부에 공개된 오픈소스 TTS(Text-to-Speech) 모델들은 대부분 영어 기반 모델들이기 때문에 여기에 한국어를 발화할 수 있게 학습시켜주는 작업이 필요합니다. 모델이 한국어를 발화할 수 있게 하기 위해 저희는 약 3~4만시간의 한국어 학습데이터를 AIHUB 로 부터 수집했습니다. AIHUB로 부터 수집한 데이터는 (Audio,Text) 형태의 쌍으로 이루어져있고 해당 데이터를 LLaSA-1B 모델에 Continual Pre-training 하여 한국어를 발화하도록 하는 방법을 선택했습니다. [1]
이렇게 학습된 모델은 화자를 원하는 대로 컨트롤이 어렵고 (남여 나이대 정도는 컨트롤 가능) 같은 텍스트에 대해서 항상 다른 목소리가 나온다는 단점이 있습니다. 또한 AIHUB 에 발화 특색이 대부분 적어놓은 텍스트를 읽는 식이다 보니 자연스러운 음색 (Prosody)이 나오지 않는 다는 점도 문제입니다.
20대 여자 상담사로 prompt 를 주고 생성한 결과 다음과 같은 목소리가 나옵니다. 어색하지는 않지만 같은 텍스트에 대해서 한번 더 음성을 생성해보겠습니다.
전혀 다른 목소리가 나오는 것을 알 수 있습니다.
또한 음질이나 음색 측면에서도 정성적으로 조금더 개선할 여지가 있다고 판단하였습니다.
제품에 들어가기 위해서는 매번 다른 텍스트 및 같은 텍스트에 대해서도 같은 화자가 발화해야 합니다(Speaker similarity). 그래서 저희는 우선 16시간의 동일 상담사의 내부 발화 데이터를 활용했습니다. (현재 저희 전화ALF 서비스에서 '하나'로 활약하고있습니다!)
자연스러움을 위해서 저희는 텍스트를 주고 발화하는 형식의 녹음이 아닌 실제 대화에서 녹음된 상담사-유저간의 대화에서 상담사 채널만 활용하여 speaker segmentation 을 진행하였고 segment 된 audio 에 whisper-large-v3 를 이용하여 자동화된 전사 파이프라인을 구성했습니다.
자동화 전사 파이프라인을 통해 매니저-유저간의 stereo 오디오가 들어가면
아래와 같은 형식의 TTS 훈련 포맷으로 바꿔줄 수 있게됩니다.
이렇게 실제 상담사음성으로부터 16시간만 학습하더라도 훨씬 더 좋음 prosody (음색) 의 발화가 일관적으로 나오는것을 확인할 수 있습니다.
이렇게 해도 한가지 문제가 있습니다. 모든 발화가 완벽하지 않다는 것이죠 예를 들어 안녕하세요를 "아 안녕하세요"라고 너무 자연스럽게 읽는다던가하는 문제가 생길수 있습니다. 그래서 첫번째로 시도해본 개선방법은 발화 명료도 (intelligibility) 를 높이는 것 입니다.
발화 명료도 즉, intelligibility 를 검증(verify) 하는 방식은 상당히 쉬운데 CER(Character Error Rate) 을 이용하는 것 입니다. CER를 Verifiable Reward 로 하는 강화학습을 한다면 데이터가 없이도 텍스트만 주어진다면 무한히 학습이 가능하게 됩니다.
저희는 이를 위해 TTS 용 GRPO 학습 파이프라인을 구성하고 오픈소스로 공개했습니다.
해당 학습 파이프라인을 통해 intelligibility를 높이는 것을 목표로 GRPO 로 학습했을때가 CER이 가장 낮게 나오는 것을 확인할 수 있었고 baseline (Mono-Speaker Finetuning - Figure 에서 baseline) 보다 발화명료도가 개선된것을 확인할 수 있었습니다. [2]
이 경우 한가지 문제가 있었는데 발화명료도만 높이는 것을 목적으로 하다보니 마치 국어책을 읽는 듯 발화가 단조로워지는 (monotone) 해지는 문제가 생겼습니다.
국어책을 읽는듯한 단조로운 발화를 해결하고 가끔씩 발생하는 fallback (안녕하세요를 넣었는데 아~~~안녕하세요가 나온다던지) 을 줄이기 위해 저희는 우선적으로 DPO 를 수행했습니다. [3]
우선 baseline 모델로 부터 sampling 한 서로 다른 두개의 결과를 들어보도록 하겠습니다.
전자보다는 후자가 발화의 명료도와 음색 측면에서 훨씬 우수한것을 모두 공감할 것입니다. 저희는 (win, lose) 선호쌍을 수집하고, 모델이 동일 입력에 대해 win을 lose보다 더 높은 확률로 생성하도록(DPO) 학습했습니다.
이를 ~200개 샘플정도로 반복적으로 학습했을때 Fig1. 결과와 같이 A/B테스트에서 더 우수한 성능을 기록하였고 저희가 원하는 방향의 음색으로 모델 튜닝할 수 있다는 것도 알 수 있었습니다. 더 자세한 내용은 저희의 논문 No Verifiable Reward for Prosody: Toward Preference-Guided Prosody Learning in TTS 에서 확인할 수 있습니다.
우리는 higgs-audio·CSM 같은 conversational TTS와 qwen3-omni가 보여주는 '듣고 이해하고 행동하는' 흐름에 맞춰, Channel-TTS를 단순 낭독을 넘어 상황 맥락에 맞게 말하는 모델로 확장하고 있습니다. GRPO로 명료도를, DPO로 상담사향 프로소디를 다듬어 실제 콜에서 사람 같은 톤·턴테이킹을 꾸준히 개선 중입니다.
채널톡에서 함께 일해보고 싶다면? → 채용공고 보러가기
[1] Ye, Z., Zhu, X., Chan, C.-M., Wang, X., Tan, X., Lei, J., Peng, Y., Liu, H., Jin, Y., Dai, Z., et al. (2025). Llasa: Scaling train-time and inference-time compute for llama-based speech synthesis. arXiv preprint arXiv:2502.04128.
[2] Shao, Z., Wang, P., Zhu, Q., Xu, R., Song, J., Bi, X., Zhang, H., Zhang, M., Li, Y. K., Wu, Y., et al. (2024). DeepSeekMath: Pushing the limits of mathematical reasoning in open language models. arXiv preprint arXiv:2402.03300.
[3] Rafailov, R., Sharma, A., Mitchell, E., Ermon, S., Manning, C. D., & Finn, C. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv preprint arXiv:2305.18290.
We Make a Future Classic Product