기기 내 Whisper로 로컬, 프라이빗한 음성 입력
MadoHub이 클라우드 API를 부르는 대신 머신에서 음성 인식을 실행하는 이유, 프라이버시와 비용에 그것이 무엇을 의미하는지, 받아쓰기를 최대한 활용하는 방법.
MadoHub은 코드베이스 옆에 앉습니다. 받아쓸 때, 종종 지금 보고 있는 것을 기술하고 있습니다 — 스택 트레이스, 변수 이름, 설정 파일 조각, 때로는 에이전트에게 설명하기 위해 .env 파일에서 읽는 비밀. 그건 기본적으로 제3자 음성 API에 넘기길 원하는 오디오가 아닙니다. 그래서 MadoHub의 음성 입력은 그것을 부르지 않습니다. 앱의 나머지와 같은 프로세스에서 whisper.cpp를 로컬로 실행합니다.
이 글은 그 결정이 왜 중요한지, 그리고 행동할 수 있는 수준의 디테일로 MadoHub에서 받아쓰기를 최대한 활용하는 방법에 관한 것입니다.
MadoHub이 다루는 방법
오디오는 머신을 떠나지 않습니다
스트리밍 업로드도, API 키도, 음성-투-텍스트 벤더로 나가는 요청도 없습니다. 캡처된 오디오는 디스크에 있는 로컬 Whisper 모델이 전사합니다. 전체 기능에서 유일한 네트워크 호출은 일회성 모델 다운로드입니다; 그 이후에는 머신이 오프라인인 채로 녹음과 전사가 모두 일어납니다.
직접적으로 이름 붙일 만한 두 가지 결과가 있습니다:
- 말하는 내용(또는 말하는 동안 화면에 있는 것)에 대한 어떤 것도 어디로도 전송되지 않습니다. 작업 코드베이스 안에 자리잡기 위해 만들어진 도구에게, 그것은 nice-to-have가 아닙니다 — 음성 입력이 민감한 어떤 것에도 사용 가능한 이유입니다.
- 분당 또는 요청당 비용이 없습니다. 모델이 다운로드되면 전사는 무료이고 미터링되지 않습니다 — 청구되는 API 호출이 아닌 로컬 컴퓨트입니다.
오프라인으로 작동
모델이 디스크에 있고 전사기가 프로세스 내에서 실행되므로, 모델 파일이 이미 있는 한 음성 입력은 인터넷 연결이 전혀 없이도 작동합니다. MadoHub은 마이크를 열기 전에 이것을 확인합니다: 선택한 모델이 다운로드되어 있지 않으면, 침묵에 녹음하고 나중에 전사에서 실패하는 대신, 다운로드하라는 프롬프트와 함께 설정 → 음성 입력으로 보냅니다.
짧은 발화를 위해 패딩, 노이즈를 위해 필터
Whisper의 인코더는 30초 청크로 훈련되었고 몇 초의 컨텍스트가 더 잘 처리합니다. 매우 짧은 발화 — 빠른 단어 한두 개 — 는 디코더가 같은 구를 반복하는 알려진 Whisper 실패 모드를 촉발할 수 있습니다. MadoHub은 짧은 녹음을 전사 전 짧은 정적으로 패딩해, 디코더가 일관된 단일 패스를 찾을 충분한 여유를 줘 이를 막습니다.
조용하거나 모호한 오디오도 여전히 쓰레기를 만들 수 있어, MadoHub은 텍스트가 되기 전에 침묵이나 낮은 신뢰도 노이즈처럼 보이는 세그먼트를 버리는 두 임계값을 적용합니다. 결과는 조용한 구간이 프롬프트에 환각된 전사로 바뀌지 않는 것입니다.
한 번 로드, 재사용, 그리고 필요 시 언로드
Whisper 모델은 지연 로드됩니다: 첫 전사 요청 전까지 디스크에서 읽히는 것이 없습니다. 로드되면 메모리에 상주하며 호출에 걸쳐 재사용됩니다 — 기본 small 모델의 경우, 음성 입력이 사용 중인 동안 약 500 MB가 RAM에 잡혀 있습니다. 설정 → 음성 입력에서 모델 크기를 바꾸면, MadoHub은 오래된 모델이 부실한 버퍼로 남기지 않고 버리고, 다음 전사에 새로 선택한 것을 로드합니다.
실용적 안내
- 필요하기 전에 모델을 다운로드하세요. 음성 입력은 모델이 있어야 마이크를 엽니다. 첫 받아쓰기가 다운로드에 막히지 않게 설정 → 음성 입력에서 미리 하나를 고르세요.
- 머신에 맞는 모델 크기를 고르세요. 기본
small모델은 정확도와 풋프린트의 좋은 균형입니다(~500 MB 상주). 더 큰 모델은 더 정확하지만 더 무겁고; 더 작은 것은 더 가볍지만 덜 정확합니다. 설정 → 음성 입력에서 바꾸고 다음 전사에 적용됩니다. - 단어 단위가 아닌 자연스럽게 말하세요. Whisper가 1초 미만보다 30초 청크를 더 잘 다루므로, 일반 문장이 고립된 키워드보다 더 안정적으로 전사됩니다. 한 단어씩 받아쓰면, 가끔 반복 아티팩트가 있을 수 있습니다.
- 화면에 있는 것에 사용하세요. 스택 트레이스를 기술하거나, 버그를 훑거나, 코드를 보며 계획을 말할 때 받아쓰기가 빛납니다 — 오디오를 클라우드 API에 넘기길 싫어하는 바로 그 경우.
- 원하면 오프라인을 유지하세요. 모델이 다운로드되면 전사는 네트워크가 완전히 꺼진 채로 작동합니다. 민감한 것을 작업 중이면, 그것은 호기심이 아닌 의미 있는 속성입니다.
이들 어느 것도 이국적인 엔지니어링이 아닙니다 — 매력은 마이크에서 텍스트까지의 전체 경로가 짧고, 로컬이고, 검사 가능하다는 것입니다, 받아쓰는 것이 노트북을 떠나면 안 되는 코드의 기술일 수 있을 때 원하는 바로 그것입니다.