내 컴퓨터에서 음성 AI를 돌리는 Hugging Face Speech To Speech

말을 듣고 답하는 AI를 만들려면 음성 감지, 받아쓰기, 답변 생성, 음성 합성을 차례로 연결해야 해요. Hugging Face의 Speech To Speech는 이 과정을 한 파이프라인으로 묶고, 각 부품을 원하는 모델로 바꿀 수 있게 만든 오픈소스 프로젝트예요. 1
핵심 요약
| 구분 | 내용 |
| 처리 구조 | VAD, STT, LLM, TTS가 각각 별도 스레드에서 움직이고 큐로 데이터를 넘겨요. |
| 연결 방식 | OpenAI Realtime의 핵심 이벤트를 WebSocket과 WebRTC로 제공해요. |
| 모델 선택 | STT, LLM, TTS를 하드웨어와 언어에 맞춰 교체할 수 있어요. |
| 로컬 실행 | llama.cpp, vLLM, MLX LM 같은 백엔드를 연결하면 LLM까지 로컬에서 돌릴 수 있어요. |
| 라이선스 | 저장소 코드는 Apache 2.0으로 공개돼 있어요. |
1. 음성 에이전트의 네 단계를 교체 가능한 부품으로 만들었어요
Speech To Speech는 Silero VAD로 발화 구간을 찾고, STT가 음성을 글로 바꾼 뒤 LLM에 전달해요. LLM이 만든 답변은 TTS가 다시 음성으로 바꿔 클라이언트에 흘려보내요. 네 단계가 한 줄로 기다리는 방식이 아니라 별도 스레드와 큐로 연결돼 있어서, 부분 자막과 답변, 합성 음성을 순차적으로 내보낼 수 있어요. 2
기본 구성은 Parakeet TDT와 Qwen3-TTS를 사용해요. STT는 Whisper, Faster Whisper, Paraformer 등으로 바꿀 수 있고, TTS는 Kokoro, Pocket TTS, ChatTTS, MMS도 선택할 수 있어요. Apple Silicon에서는 MLX 기반 STT·LLM·TTS 조합도 지원해요. 모델마다 지원 언어와 필요한 메모리가 다르기 때문에, 한국어 음성 품질은 선택한 STT와 TTS를 따로 확인해야 해요.
설치 뒤 `speech-to-speech serve`를 실행하면 기본적으로 로컬 주소의 Realtime 서버가 열려요. 마이크와 스피커까지 한 번에 붙여 시험하려면 `speech-to-speech local`을 쓸 수 있어요. 앱이나 기기에서 연결할 때는 WebSocket 또는 WebRTC를 선택해요. 공식 OpenAI Agents SDK도 두 전송 방식으로 테스트돼 있어요.
OpenAI Realtime 호환이라는 표현에는 범위가 있어요. 저장소가 구현한 대상은 입력 오디오, 세션 변경, 응답 생성·취소, 스트리밍 자막과 음성 같은 핵심 이벤트예요. OpenAI Realtime API 전체와 같다고 보장하는 프로젝트는 아니에요. 기존 클라이언트를 옮길 때는 사용하는 이벤트가 지원 목록에 들어가는지 먼저 대조해야 해요.
완전한 로컬 실행은 백엔드 설정이 필요해요
서버를 내 컴퓨터에서 띄웠다고 LLM 호출까지 자동으로 로컬이 되는 것은 아니에요. 기본 LLM 백엔드는 OpenAI 호환 API를 사용해요. 외부 호출을 없애려면 llama.cpp나 vLLM 서버의 로컬 주소를 지정하거나, Apple Silicon의 MLX LM 또는 로컬 Transformers 백엔드를 선택해야 해요. 필요한 모델과 부속 파일을 미리 내려받으면 오프라인 실행도 가능해요.
이 구분은 개인정보를 다루는 음성 서비스에서 특히 중요해요. STT와 TTS만 로컬이어도 대화문이 외부 LLM으로 전송될 수 있어요. 네 단계의 실행 위치, 로그 저장 방식, 네트워크 요청을 함께 확인해야 실제 데이터 경로를 알 수 있어요.
빠른 실험과 제품 연결을 같은 인터페이스로 이어가요
처음에는 노트북의 마이크와 스피커로 대화를 시험하고, 이후 같은 서버를 브라우저나 앱에 연결할 수 있어요. LLM 슬롯이 OpenAI 호환 프로토콜을 받아서 호스팅 서비스와 자체 서버 사이를 바꾸기도 쉬워요. 저장소 설명에 따르면 이 파이프라인은 수천 대의 Reachy Mini 로봇 대화 백엔드에도 쓰이고 있어요. 2
다만 실제 지연 시간은 모델 크기, GPU나 Apple Silicon 성능, 네트워크 호출 여부에 따라 달라져요. 음성이 끊겼다고 판단하는 VAD 설정과 LLM의 첫 토큰 시간, TTS의 스트리밍 지원 여부도 체감 속도에 영향을 줘요. 데모가 자연스럽게 들려도 목표 기기에서 다시 측정해야 해요.
왜 중요한가요
음성 에이전트 개발자는 보통 서로 다른 라이브러리의 오디오 형식과 스트리밍 규칙을 직접 맞춰야 해요. Speech To Speech는 이 연결부와 Realtime 서버를 함께 제공해 초기 실험 범위를 줄여 줘요. 특정 모델의 품질이 부족하면 전체 앱을 다시 만들지 않고 해당 단계만 교체할 수 있어요. 2
로컬 실행 선택지가 넓다는 점도 실용적이에요. 대화 데이터를 외부로 보내기 어려운 사내 도구, 로봇, 키오스크에서는 STT부터 LLM과 TTS까지 같은 장비나 사설망에 둘 수 있어요. 반대로 작은 기기에서는 무거운 LLM만 외부 API로 보내는 혼합 구성도 가능해요. 어느 구성이 맞는지는 개인정보 요구사항, 응답 속도, 하드웨어 비용을 함께 놓고 정하면 돼요.
참고 자료
- Huggingface Speech To Speech - 오픈소스 모델로 로컬 음성 에이전트를 만드는 파이프라인 — GeekNews
- Speech To Speech: Build voice agents with open-source models — Hugging Face GitHub
'IT & AI' 카테고리의 다른 글
| Linux 7.2, 스케줄링과 라즈베리 파이 전력 관리를 다듬었어요 (0) | 2026.08.22 |
|---|---|
| Pixel 11 Pro Fold는 좋은 폴더블인데 왜 낡아 보일까요 (0) | 2026.08.22 |
| 악보보다 코드가 편한 개발자를 위한 음악 이론 (0) | 2026.08.21 |
| 소리 없는 AliExpress 탭이 Bluetooth 전환을 막은 이유 (0) | 2026.08.21 |
| Google의 소스 공개가 Git 태그에서 Drive 신청제로 바뀌었어요 (0) | 2026.08.21 |