Engineering

음성과 비전의 만남: 옴니모달 모델이 멀티모달 음성 입력을 가능하게 하는 방법

오디오 전용 ASR에서 오디오 + 비전 + 텍스트로 — 음성 입력을 "내가 말한 걸 받아 적기"에서 "내가 의도한 곳에, 의도한 대로 쓰기"로 바꿔놓은 패러다임 전환.

TL;DR

멀티모달 음성 입력은 시스템이 음성과 로컬 컨텍스트를 함께 사용해서 그 말이 어떤 텍스트가 되어야 할지를 판단한다는 뜻이에요. Loqua는 맥용 컨텍스트 인식 음성 입력 도구예요. 사용자의 음성을 듣고, 로컬 목적지 컨텍스트를 읽고, 앱에 맞는 텍스트를 써줘요. 이 글은 전체 아키텍처로 깊이 들어가지 않고, 화면 인식 음성 입력이 왜 중요한지를 소개해요.

Loqua는 맥용 컨텍스트 인식 음성 입력 도구예요. 중요한 변화는 단순한 전사에서 목적지를 인식하는 글쓰기로 넘어간다는 거예요. 똑같이 말한 문구가 Slack, Cursor, GitHub, Apple Notes, 코드 에디터에서 각각 다른 텍스트가 되어야 하니까요.

이 글은 저희 음성 + 비전 AI 사고방식의 입문 버전이에요. 오디오, 언어, 멀티모달 시스템에 대한 공개 연구는 분야에 유용한 어휘를 제공하지만, Loqua의 프로덕션 스택은 맥 받아쓰기를 위해 사내에서 학습하고 최적화한 독자적인 작업물이에요.

전사에서 컨텍스트로의 전환

오디오 전용 ASR은 하나의 질문에 답해요. 사용자가 어떤 단어를 말했는가? 받아쓰기는 두 번째 질문을 던져요. 그 단어들이 커서 위치에서 어떤 텍스트가 되어야 하는가? 이 두 번째 질문 때문에 멀티모달 음성 입력이 존재해요. 전사가 정확해도 목적지에는 틀린 결과일 수 있거든요.

코드 에디터에 받아쓰기를 한다면 구두점, 식별자, 주석, 선택된 텍스트가 중요해요. 이메일에 받아쓰기를 한다면 톤과 단락 구조가 중요하고요. 작업 앱에 받아쓰기를 한다면 담당자와 마감일이 중요하죠. 화면 인식 음성 입력은 이런 눈에 보이는 단서들을 글쓰기의 제약 조건으로 바꿔줘요.

화면 컨텍스트가 받아쓰기를 바꾸는 이유

같은 문구라도 어떤 앱에 있는지에 따라 의미가 달라져요. "Add a guard before fetch profile"은 IDE에서는 코드 인접 텍스트, Linear에서는 작업, Slack에서는 평범한 요청이 되어야 해요. 오디오만으로는 이 세 형태 중 어느 쪽인지 안정적으로 고를 수 없어요.

Loqua의 컨텍스트 레이어는 활성 앱, 선택된 텍스트, 옆에 보이는 텍스트, 목적지 필드 타입 같은 로컬 신호를 읽어요. 전체 스크린샷 서술 같은 건 필요 없어요. 식별자를 보존하고, 새로 쓰는 건지 편집하는 건지 판단하고, 올바른 출력 형태를 고를 만한 로컬 증거만 있으면 돼요.

커서 위치에서 달라지는 것

사용자가 말함
"add a check that the user is logged in before we fetch the profile if not just redirect to sign in"
Loqua가 작성 (VS Code에서)
if (!user.isLoggedIn) {
  return redirect('/signin');
}
사용자가 말함 (같은 문장)
"add a check that the user is logged in before we fetch the profile if not just redirect to sign in"
Loqua가 작성 (Linear에서)
Add auth guard before profile fetch. If user is not logged in, redirect to sign-in instead of fetching profile.

출력이 달라지는 이유는 목적지가 다르기 때문이에요. 이게 제품 카테고리로서 옴니 모델 받아쓰기의 실질적인 가치예요. 컨텍스트는 전사가 할 수 없는 글쓰기 결정을 내려줘요.

프라이버시 경계

화면 컨텍스트는 강력한 만큼 명확한 경계가 필요해요. Loqua의 컨텍스트 경로는 기본적으로 로컬 우선이에요. 활성 앱, 선택된 텍스트, 근처에 보이는 콘텐츠는 현재 발화를 다듬는 데 사용되지, 일반적인 화면 기록을 만드는 데 쓰이지 않아요.

전체 경계에 대해서는 하이브리드 아키텍처로 설계한 프라이버시를 확인해보세요. 짧게 말하면 오디오와 화면 컨텍스트는 민감한 로컬 신호로 다뤄지고, 선택적 클라우드 기능은 원본 주변 화면 콘텐츠를 받지 않아요.

더 깊이 들어가기

추가 자료

관련 문헌이 궁금하시면 견고한 음성 인식에 대한 Whisper, 비주얼 인스트럭션 튜닝의 LLaVA, 그리고 크로스 모달 정렬의 ImageBind부터 시작해보세요. 이 링크들은 분야 설명일 뿐이고, Loqua의 출처에 대한 주장은 아니에요.

자주 묻는 질문

Loqua에서 화면 컨텍스트란 무엇인가요?
화면 컨텍스트는 현재 받아쓰기 대상 주변의 로컬 신호를 의미해요. 활성 앱, 선택된 텍스트, 근처에 보이는 텍스트, 파일 타입, 커서 위치, 입력 필드 형태가 모두 포함되죠. Loqua는 이런 단서들로 발화된 문구가 산문이 될지, 작업이 될지, 프롬프트가 될지, 코드 인접 텍스트가 될지를 판단해요.
Loqua는 스크린샷을 어딘가로 보내나요?
기본적으로 컨텍스트 경로는 로컬 우선이에요. Loqua는 화면에서 추출한 신호로 현재 발화를 다듬을 뿐, 선택적 클라우드 기능에 원본 주변 화면 콘텐츠를 보낼 필요는 없어요. 전체 경계에 대해서는 프라이버시 글을 확인해보세요.
컨텍스트가 지연 시간에 영향을 주나요?
컨텍스트는 음성 인식과 병렬로 수집돼요. 즉 최종 텍스트가 렌더링되어야 할 시점이면 보통 목적지 정보도 준비되어 있죠. 아키텍처 자체가 느린 후처리 호출이 아닌 200ms급 인터랙션을 중심으로 설계되어 있어요.
코드 작성에 음성과 비전이 함께 왜 중요한가요?
코드는 식별자, 대소문자, 문법, 선택된 영역으로 가득해서 소리만으로는 복원할 수 없어요. 모델이 커서 근처에 보이는 식별자를 볼 수 있다면 일반적인 전사 대신 그 이름을 그대로 보존할 수 있죠.
이건 화면에서 동작하는 에이전트인가요?
아니에요. 이 글은 자율적인 화면 제어가 아니라 받아쓰기에 관한 내용이에요. Loqua는 커서 위치에 더 나은 텍스트를 쓰기 위해 로컬 컨텍스트를 사용할 뿐, 앱을 돌아다니거나 별도 작업을 수행하지 않아요. 그런 작업은 다른 도구로 명시적으로 해야 해요.
더 깊은 아키텍처는 어디서 읽을 수 있나요?
멀티모달 명령 파이프라인은 Inside our omni-modal voice stack에서 시작하시고, 모호성 해결은 Building a listener that sees what you see에서, 프로토타입 단계의 비단어 오디오 방향은 Sounds with meaning에서 확인해보세요.

지금 Loqua를 사용해보세요

무료로 시작하세요. 맥 네이티브. 매일 직접 사용하는 알고리즘 연구자들이 만들었어요.

Download for Mac

Loqua Blog의 다른 글

engineering
옴니모달 음성 입력: 멀티모달 이해, MoE, 그리고 스트리밍 텍스트 출력
engineering
멀티모달 음성 인식: 보이는 것을 보는 리스너 만들기
engineering
오디오 이벤트 감지 받아쓰기: 단어 너머의 의미 있는 소리
productivity
보이스 생산성 스택: 글쓰고, 출시하고, 사고하기 위해 실제로 쓰는 9가지 도구
how-to
맥에서 코드를 받아쓰는 방법: Cursor, VS Code, Claude Code를 위한 완벽 가이드