
TTS 비용이 너무 비싸서 직접 만들었는데, 생각보다 정말 좋습니다
요약
클라우드 비용과 프라이버시 문제를 해결하기 위해 온디바이스(On-device) TTS 앱인 'Out Loud'를 개발했습니다. Kokoro-82M 모델과 ONNX를 활용하여 로컬 환경에서 자연스러운 음성 합성을 구현했습니다.
핵심 포인트
- 클라우드 없이 기기 내에서 실행되는 완전한 오프라인 TTS 구현
- Kokoro-82M 오픈 웨이트 모델을 활용한 경량화된 추론
- Electron, ONNX Runtime, espeak-ng를 결합한 아키텍처
- 로컬 HTTP API를 통해 브라우저 확장 프로그램과 연동 가능
저는 기사, 문서, 직접 작성한 초안 등 많은 양의 텍스트를 음성 합성 (Text-to-Speech, TTS)으로 읽습니다.
괜찮은 앱들은 모두 똑같은 두 가지 문제를 가지고 있었습니다. 바로 구독료, 그리고 클라우드 방식이며, 이를 사용하려면 읽고 있는 내용을 먼저 해당 서버에 업로드해야 한다는 점이었습니다.
두 번째 부분이 가격보다 저를 더 짜증 나게 했습니다. 독서는 가장 사적인 활동 중 하나인데, 단순히 소리로 듣기 위해 그 모든 내용을 다른 사람의 기기로 보내야 한다는 것은 역행하는 느낌이었습니다.
그래서 직접 만들었습니다. 이름은 Out Loud이며, MIT 라이선스로 제공되고, 완전히 사용자의 기기에서만 실행됩니다. 클라우드도 없고, 계정도 필요 없습니다. 놀라운 점은 이제 목소리가 정말 좋다는 것입니다. 이전에 사용하던 유료 앱 대신 매일 사용할 수 있을 정도로 충분히 좋습니다.
1년 전만 해도 자연스러운 TTS를 구현하려면 거대한 클라우드 모델이 필요할 것이라고 생각했을 것입니다. 하지만 이제는 그렇지 않습니다. Kokoro-82M과 같은 오픈 웨이트 (Open-weight) 모델은 일반 노트북에서 실행될 만큼 충분히 작으면서도, 로봇 같지 않고 자연스러운 소리를 들려줍니다. 어려운 부분은 이미 존재했고 공개되어 있었습니다. 다만 아무도 그것을 다운로드해서 바로 사용할 수 있는 형태로 패키징하지 않았을 뿐입니다.
이 앱이 구성된 방식이 흥미로운 부분이라고 생각합니다. 이것은 Electron 앱입니다. 메인 프로세스가 ONNX 모델을 소유하며, 추론 (Inference)은 워커 스레드 (Worker thread)에서 실행되므로 오디오가 생성되는 동안 UI가 차단되지 않습니다. 그런 다음 메인 프로세스는 127.0.0.1 포트 51730에 로컬 HTTP API를 노출합니다. Chrome 및 Safari 확장 프로그램은 모델을 전혀 포함하지 않으며, 단순히 해당 로컬 API로 텍스트를 보낼 뿐입니다. 덕분에 확장 프로그램의 크기를 작게 유지할 수 있고, 유지 관리해야 할 엔진도 하나로 통합됩니다. espeak-ng가 음소화 (Phonemization)를 처리하고 onnxruntime-node가 기기 내 추론 (On-device inference)을 수행합니다. 이 과정 중 그 어떤 것도 네트워크를 사용하지 않습니다.
데스크톱 UI, 확장 프로그램, 또는 curl 명령어를 통한 호출 등 어떤 방식이든 API는 동일합니다. /api/v1/audio/voices로 GET 요청을 보내 목소리 목록을 확인하거나, /api/v1/audio/speech로 텍스트와 목소리 이름을 POST로 보내 wav 파일을 받을 수 있습니다. 이 리포지토리(repo)는 약 99%가 JS와 TS로 구성되어 있습니다. UI는 React와 Vite를 사용하며, 엔진과 메인 프로세스는 TypeScript로 작성되었습니다.
현재 1,700회 이상의 다운로드를 기록했으며, 사람들이 계속해서 언급하는 부분은 가격이나 목소리 개수보다는 오프라인 및 프라이버시 측면입니다. 그것이 유의미한 신호였습니다. 갈증을 느낀 것은 저뿐만이 아니었습니다. 서비스를 임대하기보다 로컬(locally)에서 직접 실행하는 것을 선호하는 실제 사용자 그룹이 존재합니다.
8개 언어에 걸쳐 50개 이상의 목소리가 제공됩니다: 영어 (미국 및 영국), 일본어, 중국어, 스페인어, 브라질 포르투갈어, 이탈리아어, 그리고 힌디어입니다. macOS, Windows, Linux에서 실행되며, Chrome 확장 프로그램도 지원합니다.
무엇인가를 설치하기 전에 브라우저에서 목소리를 들어볼 수 있습니다: https://out-loud.io
코드는 여기에서 확인할 수 있습니다: https://github.com/light-cloud-com/out-loud
즐거운 감상 되세요!
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기