Logo
Junwoo
2024-08-27 12:38:59

비하인드
모든 TTS 엔진에서 한국어를 제대로 읽게하기 위한 UX 디테일

비디오스튜에는 다양한 AI 보이스들이 탑재되어 있습니다. Google Wavenet, Amazon Polly, KT AI Voice, Naver Clova, Azure, ElevenLabs까지…

그렇다보니 자연스레 파생되는 이슈는 다들 학습된 모델이 달라서 똑같은 문장이 주어져도 읽는 방식이 미묘하게 다르다는 것입니다. 특히 단위를 읽을 때 그 차이가 두드러졌습니다.

이 포스팅을 통해 TTS 생성 시 한국어로 단위를 읽을 때 제대로 읽기 위해 고려했던 점들에 대해 이야기해보고자 합니다.

측정 단위 제대로 읽게 하기

TTS 엔진들을 다양하게 사용하다보니, 예를 들어 "100kg"이라는 표현을 읽을 때도 각 엔진들은 제각각으로 읽는 이슈가 있었습니다. "백 케이쥐"라고 읽는 엔진도 있고, "백 크흐..."라고 말끝을 흐리는 AI도 있었죠. (AI도 당황하면 말끝을 흐리나…)

물론 "백 킬로그램"이라고 정확하게 읽는 엔진도 있습니다.

그래서 이러한 단위들을 라이브러리화해서 전처리를 하는 프로세스를 개발했습니다. 모든 엔진들이 동일하게 읽도록 하기 위함이었죠.

  • 길이/거리: m, cm, km, mm, nm
  • 부피: l, ml, kl
  • 무게/질량: g, kg, mg
  • 전기 관련: V, MV, mV, A, MA, mA, Ω, MΩ, mΩ, VA, V/cell, V/m, Var
  • 데이터 용량: B, KB, MB, GB, TB
  • 기타 물리량: mol, N, N/C, rad, Wb
  • 시간: s, sec
  • 전력: W, kW, MW, kVA, mVA
  • 주파수: Hz, kHz, MHz, GHz
  • 온도: °C, ℃
  • 각도: °
  • 조도: lx
  • 백분율: %


숫자 제대로 읽게 하기

이렇게 서비스를 운영하다보니, 생각치 못한 이슈에 또 봉착하게 되었습니다. (한국어는 정말 매력덩어리..)

한국어에서는 숫자를 읽는 방식이 두 가지라는 점이죠. 우리는 본능적으로 사용하고 있어 잘 느끼지 못할 수 있습니다.

예를 들어, 시간을 말할 때 "10시 10분"은 "열 시 십 분"으로 읽죠. 왜죠…?

그리고 일반적인 숫자는 "일, 이, 삼"과 같은 한자어로 읽지만, 뒤에 수량을 나타내는 단위(수량사라고 해요. 저도 처음 들어봤어요…)가 붙으면 "한 개, 두 개, 세 개"로 읽게 됩니다. 공식적으로 수치를 재는 단위는 한자어를 쓰고요. (예: 10cm = “십 센치미터”)

자, 제가 숫자를 하나 드려볼께요. “90개”. 어떻게 읽으시나요?

원칙적으로는 90개까지는 “아흔 개”라고 읽는 것이 맞습니다. 아마 “구십 개”라고 읽으신 분들도 있으실꺼에요. 숫자가 커질 수록 우리가 일반적으로 더 편한 방식이 있기 마련이죠.

작은 숫자로 생각해볼까요? “9개”. 네, 이건 모두가 다 “아홉 개”라고 읽으셨을 것입니다.

이 원칙에 따라서 1~99까지는 고유한글로 읽는 방식으로 전처리 프로세스를 개발하게 되었습니다. 하지만 이는 말그대로 원칙적인 것이고, 고객들의 피드백에 따라 이 기준을 변경할 가능성을 열어두고 있습니다. 40개라면 “마흔 개”보다 “사십 개”가 더 자연스럽게 받아들여질 수 있으니까요.

어쨋든 일관된 사용경험을 위해 “하나, 둘, 셋”의 고유한글에 대응되는 단위 라이브러리를 만들게 되었습니다.

  • 일반적인 수량: 개, 명
  • 동물: 마리
  • 식물: 그루, 송이
  • 의류/신발: 켤레, 벌
  • 기계/차량: 대
  • 용기: 병, 잔, 접시, 그릇, 가마
  • 긴 물건: 자루, 줄
  • 평평한 물건: 장
  • 책/문서: 권, 문장, 글자
  • 음식: 조각, 접시
  • 묶음 단위: 다발, 묶음, 뭉치, 박스
  • 순서: 번
  • 작은 물건: 톨
  • 건물: 채
  • 시간: 시
  • 나이: 살
  • 무게: 근, 돈
  • 종류: 가지
  • 기타: 마디, 송이

이 라이브러리는 TTS 서비스를 구현하려는 분들이라면 참고해주세요. 단, 지금도 끊임없이 고객 피드백을 통해 생각치 못한 단위들이 발견되고 있어서 완전한 버전은 아님을 말씀드립니다.

UX의 디테일 = SaaS의 성공

수량사라는 처음 듣는 표현을 접하면서, 한국에서 동영상 편집 SaaS 솔루션을 서비스하면서 많은 어려움이 있었는데, 또 한번 느끼게 되는 계기가 되었습니다. 정말이지 한국어는 변화무쌍하고 대단한 언어입니다…

동시에 영어권 서비스가 부럽다는 생각도 들었지만, 그 쪽은 또 그 쪽 나름대로의 고충이 있겠죠.

물론 비디오스튜에는 [텍스트 수동 지정]이라는 기능이 있습니다. 화면에 보이는 것과 상관없이 TTS를 생성하는 방법이죠.

< 화면에 보여지는 자막과 상관없이 TTS에서 읽을 소리를 설정하기 >

이 방법을 통해서 원하는대로, 소리나는대로 적어주면 되니까 TTS가 더 자연스럽게 발음하도록 유도할 수도 있고 잘못 읽는 단위를 사용자가 직접 수정할 수도 있습니다.

그럼에도 저희가 이렇게 디테일에 집중하는 이유는, 이런 작은 차이들이 서비스의 성장을 결정짓는다는 확신 때문입니다.

사용자는 숫자 표현이 포함된 문장을 입력하는 순간 어떻게 읽겠다라는 생각이 있습니다. 일단 그대로 생성되지 않는 다면 일차적으로 문제일 것이고요. 그걸 추가 편집을 하지 않아도 생각했던 그대로의 결과물이 가장 빠르게 나오도록 하는 것이 저희가 지향하는 UX의 종착점입니다.

앞으로도 계속 이렇게 저희가 하는 UX적인 고민들을 포스팅해보도록 하겠습니다. 앞서 말씀드린 것 처럼 모든 서비스들이 상향평준화되고 있는 현 상황에서는 이러한 디테일에 대한 고민이 서비스의 명암을 가른다고 믿으니까요.

게시물로 이동
🤔 모든 TTS 엔진에서 한국어를 제대로 읽게하기 위한 UX 디테일 비디오스튜에는 다양한 AI 보이스들이 탑재되어 있습니다. Google Wavenet, Amazon Polly, KT AI Voice, Naver Clova, Azure, ElevenLabs까지…그렇다보니 자연스레 파생되는 이슈는 다들 학습된 모델이 달라서 똑같은 문장이 주어져도 읽는 방...
모든 TTS 엔진에서 한국어를 제대로 읽게하기 위한 UX 디테일
Junwoo 2024-08-27
🤔 스타트업의 마케터의 GPT 실무활용법 (GPT라고 말했지만, 실제로는 클로드만 썼음) 안녕하세요, 비디오스튜의 Jun입니다.요즘은 비하인드 포스팅을 많이 쓰고 있는데요. 이번 포스팅에서는 제가 스타트업의 비개발자로서 각종 AI 기술들을 어떻게 쓰고 있는지 한번 정리해보는 포스팅입니다.비개발자라고 표현을 한 이유는 기획, 마케팅, 운영, CS, 경영지원 등등 정말 개발 빼...
스타트업의 마케터의 GPT 실무활용법 (GPT라고 말했지만, 실제로는 클로드만 썼음)
Junwoo 2024-07-22
🤔 비디오스튜: 당신의 메시지를 영상으로, 생각한 그대로 안녕하세요, 비디오스튜의 Jun입니다. 오늘은 우리가 어떻게 비디오스튜를 만들게 되었는지, 그리고 왜 이런 방식으로 만들었는지에 대해 이야기해보려 합니다. 어찌보면 저희의 브랜딩 혹은 방향성이라고 할까요?우리의 여정: 카드뉴스에서 동영상까지우리 회사는 카드뉴스 제작 툴로 시작해 마케터들...
비디오스튜: 당신의 메시지를 영상으로, 생각한 그대로
Junwoo 2024-07-15
🤔 SaaS 스타트업의 오픈채팅을 통한 바이럴 마케팅 고군분투기 시작하며대부분의 스타트업은 돈이 없죠. 특히 마케팅에 쓸 돈은 더 없습니다! (더 아끼게 됩니다.) 그래서 일까요, 스타트업의 무료 마케팅 방법은 항상 좋은 포스팅 주제가 되죠.저희도 다르지 않았습니다. 비디오스튜가 어느정도 윤곽을 드러내고 베타 서비스가 가능해졌던 2022년 말부터 저...
SaaS 스타트업의 오픈채팅을 통한 바이럴 마케팅 고군분투기
Junwoo 2023-12-01
🤔 뉴맥북의 배터리 자가수리 후기 맥의 문제는 고장시 수리비 살 떨리다는 점인데요, 그래서 저는 오래전부터 팀과 저의 맥 수리를 직접 진행해왔습니다. 지금까지 아이맥 SSD 교체, 아이폰 배터리/메인보드 교체, 맥북 키보드/배터리 교체 등 10여 건 정도 진행해왔는데, 다행히 실패는 발생하지 않았습니다.애플케어가 안 된...
뉴맥북의 배터리 자가수리 후기
hhlee 2022-08-05
[중단]