WelVoice가 말을 듣고 답하기까지

IntuneLabs와 WelVoice의 관계, 음성 대화 파이프라인, 제품 통합 작업, 그리고 코드 상태와 실제 제공 상태의 차이를 설명합니다.

집 안쪽으로 이어진 여러 개의 열린 문을 통과해 보는 시선, 문턱마다 빛이 들어오는 모습.

사용자가 한 문장을 말하고 잠시 뒤 목소리로 답을 듣습니다. 겉으로 보면 짧은 왕복이지만, 그 사이에는 서로 다른 일을 맡은 구성요소가 차례로 움직입니다. 음성 대화 제품을 이해하려면 이름보다 먼저 이 이동 경로를 따라가 보는 편이 좋습니다. 어디서 외부 기술을 쓰고, 어디서 제품의 판단이 들어가며, 코드가 준비됐다는 말이 어디까지를 뜻하는지도 함께 보이기 때문입니다.

IntuneLabs는 저장소에 구현된 통합 음성 인공지능 제품 영역을 구축하는 회사입니다.1 이 글에서는 저장소의 WelVoice 영역을 음성 대화 제품 층위로 구분해 설명합니다. IntuneLabs가 음성인식이나 언어모델, 음성합성의 기반모델을 모두 직접 만들었다는 뜻은 아닙니다. WelVoice라는 제품 안에서 그 구성요소가 한 번의 대화로 이어지도록 설계하고 연결하는 일이 구분되어 있습니다.2

회사와 제품, 모델의 이름을 나누는 일은 소개 문구를 정리하는 데서 그치지 않습니다. 어떤 부분이 외부 구성요소의 능력에 기대는지, 어떤 선택을 IntuneLabs가 책임지는지, 사용자가 접하는 WelVoice가 어느 상태에 있는지를 따로 설명할 수 있게 합니다. 이 구분이 없으면 아키텍처를 제품의 현재 가용성으로 오해하거나, 외부 모델의 능력을 회사가 직접 개발한 기술처럼 받아들이기 쉽습니다.

한 문장이 출발합니다

저장소에 문서화된 흐름은 실시간 전송과 턴 처리 안에서 음성인식, Gemini 언어모델, 음성합성을 연결합니다.3 이 흐름을 사용자의 한 문장이 움직이는 순서대로 풀면 여섯 단계가 됩니다.

첫째, 사용자가 말을 시작하면 인터페이스가 소리를 받습니다. 이어서 전송을 맡은 부분이 오디오를 대화 처리 쪽으로 보냅니다. 여기서 인터페이스는 말하기와 듣기가 만나는 접점이고, 전송은 소리가 다음 단계로 건너가는 길입니다. 저장소의 ‘실시간’ 구조는 이 왕복을 대화 흐름 안에서 다루도록 설계됐다는 뜻입니다.3 모든 기기와 네트워크에서 지연이 없다는 보장은 아닙니다.

이 첫 구간은 단순한 입구처럼 보이지만 뒤의 모든 단계가 시작되는 자리입니다. 말소리가 처리 쪽에 도착해야 인식이 시작되고, 나중에 만들어진 답도 반대 방향으로 같은 접점까지 돌아와야 합니다. 사용자는 하나의 화면과 목소리를 마주하지만, 제품은 들어가는 길과 돌아오는 길을 모두 이어야 합니다.3

둘째, 음성인식이 말소리를 다음 단계에서 다룰 수 있는 형태로 바꿉니다. 사람에게는 한 문장으로 들려도 시스템은 들어오는 소리와 멈춤을 처리해야 합니다. 음성인식은 소리를 글로 옮기는 역할을 맡고, 그 결과는 아직 완성된 답이 아니라 다음 판단을 위한 입력입니다.3

이때 음성인식 결과와 최종 응답을 혼동하지 않는 것이 중요합니다. 인식은 사용자의 말을 다음 구성요소가 읽을 수 있게 만드는 과정입니다. 무엇이라고 답할지는 그 뒤에 이어지는 턴 처리와 언어모델의 몫입니다. 한 단계가 여러 일을 한꺼번에 맡는다고 설명하기보다 역할을 나눠 보면, 문제가 생겼을 때 어느 구간을 확인해야 하는지도 더 선명해집니다.3

셋째, 턴 처리가 이번 입력의 경계를 잡습니다. 턴은 한 사람이 말하고 시스템이 응답하는 한 차례의 교환입니다. 사용자가 말을 마친 것으로 볼지, 앞선 대화의 어떤 맥락을 이어갈지 정리해야 다음 단계가 움직일 수 있습니다.3 이 설명은 각 구성요소의 역할을 이해하기 위한 것입니다. 저장소 문서만으로 모든 끊김과 예외가 해결됐다고 볼 수는 없습니다.

턴 처리는 소리와 답 사이에 놓인 작은 교통정리와 비슷합니다. 인식된 문장을 언제 넘길지 정하지 못하면 언어모델이 너무 일찍 움직이거나 대화가 불필요하게 늦어질 수 있습니다. 반대로 경계를 잘 잡는다는 말도 실제 통화에서 충분히 검증됐다는 뜻은 아닙니다. 문서가 보여 주는 것은 이런 역할이 파이프라인에 포함돼 있다는 사실입니다.3

넷째, 정리된 입력이 Gemini 언어모델로 넘어가면 답할 문장이 만들어집니다.3 Gemini는 외부 언어모델입니다. 이 지점이 특히 중요합니다. 언어모델이 답의 문장을 만든다고 해서 그 모델을 IntuneLabs가 소유하거나 자체 기반모델로 훈련했다고 말할 수는 없습니다.2

WelVoice의 역할은 Gemini라는 이름을 제품 앞에 붙이는 일이 아닙니다. 앞 단계에서 마련한 입력을 대화의 알맞은 시점에 넘기고, 나온 문장을 다음 단계로 이어 주는 흐름 안에 언어모델을 놓는 일입니다.2 모델이 바뀌거나 출력이 기대와 다를 때 제품이 어디까지 대응할 수 있는지는 별도의 확인이 필요합니다.

다섯째, 만들어진 문장이 음성합성으로 넘어갑니다. 음성합성은 글을 사용자가 들을 수 있는 소리로 바꿉니다.3 목소리가 자연스럽게 들리는 것과 시스템이 사람의 감정이나 의도를 이해하는 것은 별개의 일입니다.

이 단계에서 답은 다시 귀로 들을 수 있는 형태가 됩니다. 하지만 소리의 인상이 부드럽다는 사실만으로 앞선 인식이 정확했는지, 언어모델의 문장이 알맞았는지까지 알 수는 없습니다. 음성합성은 대화의 마지막 내용을 만드는 곳이 아니라, 이미 만들어진 문장을 소리로 전달하는 역할을 맡습니다.3

여섯째, 합성된 소리가 다시 전송 경로와 인터페이스를 거쳐 사용자에게 돌아옵니다.3 사용자는 이 여섯 단계를 하나의 대화로 듣습니다. 그래서 제품에서는 각 단계의 성능뿐 아니라 앞 단계의 결과를 다음 단계에 언제 넘길지, 중간에 멈춰야 할 때 무엇부터 멈출지도 중요해집니다.

답이 돌아오는 순간에는 앞선 단계가 모두 한 줄로 이어져 있습니다. 인식이 늦거나 턴의 경계가 흔들리고, 언어모델의 출력이나 합성된 소리가 늦어지면 사용자는 그것을 따로 떼어 경험하지 않습니다. 대화 전체가 끊기거나 늦는 것으로 느끼게 됩니다. 구조를 설명할 때 개별 모델 이름보다 연결 순서를 함께 봐야 하는 이유입니다.3

모델 사이를 잇는 일이 제품이 됩니다

IntuneLabs의 제품 작업은 외부 모델과 오디오 구성요소를 연결하고 조율하며, 튜닝하고 안정화하는 데 있습니다.2 오디오를 언제 보내고, 인식 결과를 언제 한 턴으로 확정하며, 언어모델이 만든 문장을 언제 음성으로 바꿀지 순서를 맞추는 일입니다. 한 구성요소가 늦거나 멈췄을 때 대화 전체를 어떤 상태로 둘지도 이 연결 과정에서 다뤄야 합니다.

이런 조율을 흔히 오케스트레이션이라고 부릅니다. 어려운 이름이지만 하는 일은 분명합니다. 각 구성요소를 호출하는 순서를 정하고, 한 단계의 결과를 다음 단계가 받을 수 있게 넘기며, 중간에 흐름이 끊겼을 때 대화를 무작정 이어 가지 않도록 다루는 일입니다. 구성요소가 따로 작동하는 것과 사용자가 한 번의 대화로 경험하는 것 사이를 메우는 제품 작업입니다.

여기서 자연스러운 의문이 생깁니다. 결국 외부 모델을 이어 붙인 것뿐이라면, 그것을 하나의 제품 작업이라고 부를 수 있느냐는 질문입니다. 외부 모델의 능력과 한계가 제품 경험에 직접 영향을 준다는 점에서는 맞는 지적입니다. 연결한다고 해서 그 한계가 사라지거나, 통합 자체가 좋은 대화를 보증하지는 않습니다.

그렇지만 개별 모델은 대화 전체의 순서를 대신 정해 주지 않습니다. 말을 어느 시점에 한 턴으로 볼지, 응답을 언제 읽기 시작할지, 실패한 단계를 멈춘 뒤 어디서 다시 이어갈지는 제품이 선택해야 합니다. IntuneLabs가 설명할 책임이 있는 부분도 외부 기술의 성과가 아니라, 그런 선택을 거쳐 WelVoice가 어떻게 움직이고 어디까지 확인됐는가입니다.

따라서 “외부 모델을 쓴다”와 “제품에서 할 일이 적다”는 같은 문장이 아닙니다. 외부 구성요소의 한계를 인정하면서도, 그 한계가 대화 전체로 번질 때 어떤 동작을 택할지는 제품의 책임으로 남습니다. 반대로 연결과 조율을 했다는 사실만으로 실제 품질이 좋다고 결론 내리는 것도 성급합니다. 구조는 책임의 위치를 보여 줄 뿐, 결과의 수준은 운영 환경에서 따로 확인해야 합니다.

한국어 튜닝도 같은 기준으로 봐야 합니다. 저장소에서 확인되는 범위는 IntuneLabs가 외부 구성요소를 튜닝하는 제품 작업을 맡는다는 점까지입니다.2 구체적으로 어떤 한국어 조정을 했는지, 어떤 방식으로 평가했는지, 인식률이나 억양별 성능이 어떠한지는 현재 근거에서 알 수 없습니다. ‘안정화한다’는 표현 역시 장애가 없다는 보증이나 실제 통화 검증을 뜻하지 않습니다.

답이 돌아왔다고 해서 제품이 라이브인 것은 아닙니다

지금까지의 여섯 단계는 문서에 나타난 구조를 설명합니다. 구조가 존재하는 것, 기능이 코드에 구현된 것, 일부 환경에 배포되는 것, 실제 서비스에서 확인되는 것은 서로 다른 상태입니다. 이 글에서 shipped code는 구현이 제품 코드에 들어 있다는 뜻입니다. 공개 배포나 모든 사용자의 접근, 운영 환경의 검증까지 포함하지 않습니다.

상태를 나누면 같은 기능을 두고도 더 정확하게 말할 수 있습니다. 저장소에서 구현을 찾았을 때는 무엇이 코드에 들어 있는지 설명할 수 있습니다. 그러나 그 코드가 어느 배포 환경에서 켜졌는지, 누가 접근할 수 있는지, 실제 통화에서 어떻게 움직였는지는 다른 증거가 필요합니다. 코드가 있다는 문장을 곧바로 “지금 쓸 수 있다”로 바꾸지 않는 이유입니다.

WelVoice 제품 코드에는 프리셋을 고르고 앱 언어에 맞춘 음성과 자막을 사용하며 시작과 중지를 제어하는 로컬 명상 플레이어가 구현돼 있습니다.4 코드에는 로컬·원격 콘텐츠 구조를 나누고 카테고리와 길이, 음성, 재생목록, 자막을 다루는 명상 레지스트리도 있습니다.5 두 기능의 상태는 모두 shipped code입니다. 모바일 앱이 공개됐거나 누구나 지금 이 기능을 쓸 수 있다는 의미로 넓힐 수 없습니다.

Runtime V2 보고서도 코드가 완성되고 게이트를 통과한 상태를 기록하면서, 롤아웃과 실제 통화 검증 전에는 프로덕션 라이브가 아니라고 밝힙니다.6 Runtime V2 역시 shipped code입니다. 코드 완성 다음에는 배포와 실제 환경의 확인이 남아 있습니다.

이 경계가 필요한 이유는 진척을 작게 보이게 하려는 데 있지 않습니다. 구조는 누가 어떤 일을 맡는지 보여 주고, 코드는 무엇을 구현했는지 보여 줍니다. 실제 사용 품질을 말하려면 어느 환경에 배포됐는지, 지연과 중단은 어떻게 나타나는지, 한국어 대화는 어떤 조건에서 평가됐는지 같은 운영 증거가 따로 필요합니다. 현재 근거는 공개 모바일 앱, 일반 제공 범위, 실제 통화 품질, 지연 시간, 음성인식 정확도, 건강이나 관계의 변화를 알려 주지 않습니다.

그래서 파트너와 독자에게 필요한 설명도 한 문장으로 끝나지 않습니다. 아키텍처를 말할 때는 구성요소와 책임을 밝히고, 기능을 말할 때는 코드 상태를 붙이며, 품질을 말하려면 실제 환경의 측정 범위를 함께 제시해야 합니다. 지금 이 글이 할 수 있는 일은 앞의 두 가지를 분명히 하는 데까지입니다.

좋은 대화는 구조만으로 끝나지 않습니다

한 문장이 답으로 돌아오는 길을 그리면 외부 모델과 IntuneLabs의 제품 작업, WelVoice의 코드 상태를 구분할 수 있습니다. 하지만 좋은 대화인지는 실제 환경에서 듣고 측정해야 합니다. 저는 구현한 것과 확인한 것을 계속 나누어 말하는 태도도 제품을 만드는 일의 일부라고 생각합니다.

Footnotes

  1. IntuneLabs 저장소 문서, 리비전 7b658e17…, infra/docs/marketing/voice-platform-brief-2026-07.md:1-15.

  2. IntuneLabs 저장소 문서, 리비전 7b658e17…, infra/docs/marketing/voice-platform-brief-2026-07.md:40-67. 2 3 4 5

  3. IntuneLabs 저장소 문서, 리비전 7b658e17…, services/bot/README.md:10-35. 2 3 4 5 6 7 8 9 10 11 12

  4. IntuneLabs 저장소 문서, 리비전 7b658e17…, apps/welvoice/mobile-v2/src/screens/MeditationScreen.tsx:3-11,91-99.

  5. IntuneLabs 저장소 문서, 리비전 7b658e17…, apps/welvoice/mobile-v2/src/meditation/registry.ts:1-18,41-56,65-111,138-180.

  6. IntuneLabs 저장소 문서, 리비전 7b658e17…, apps/welvoice/web/.task-reports/2026/07/TR-0011-runtime-v2-live-settings.md:1-20,155-167.

이 글은 작성 시점의 구현 상태를 설명합니다. 수치는 저장소에서 직접 센 값이며, 공개 벤치마크나 성능 보증이 아닙니다.