LinguaForge는 YouTube 영어 오디오를 실시간으로 한국어 통역하는 localhost PoC입니다. Chrome 탭 오디오를 캡처하고, OpenAI Realtime Translation에 WebRTC로 전송한 뒤, 브라우저에서 번역 음성 및 번역 자막을 제공합니다. 종료 후에는 번역 transcript를 Markdown으로 저장할 수 있습니다.
이 저장소는 운영 서비스가 아니라 PoC입니다. 기본적으로 loopback 주소에만 bind되며, OpenAI API key는 로컬 서버에만 보관합니다.
검색 키워드: OpenAI Realtime Translation, OpenAI Codex, WebRTC translation, YouTube live translation, Chrome tab audio capture, Korean captions, speech-to-speech translation, AI interpreter, realtime subtitles.
- Chrome 탭 오디오 캡처
- 로컬 Express 서버에서 단기 OpenAI client secret 생성
gpt-realtime-translateWebRTC 통역 세션 연결- 번역 음성 재생
- 번역 자막 표시
- 원본/번역 볼륨 조절
- 수동 종료, 탭 종료 감지, 무음 종료, 최대 세션 시간 종료
- Markdown transcript 다운로드
이 프로젝트는 OpenAI Codex를 코딩 에이전트로 사용해 개발했습니다. 현재 저장소 상태 기준으로 공개해도 되는 환경 정보는 아래와 같습니다.
- 에이전트: Codex, GPT-5 기반 코딩 에이전트
- 로컬 환경: macOS 26.4.1,
zsh, Asia/Seoul timezone - 런타임 확인: Node.js
v24.7.0, npm11.5.1 - 앱 실행 방식: localhost Express server, 기본 포트
4000 - 저장소 대상: public GitHub project
rocosrex/LinguaForge
cd yt-translate-poc
npm install
cp .env.example .env.env를 수정합니다.
OPENAI_API_KEY=sk-...
PORT=4000
HOST=127.0.0.1실행:
npm start브라우저에서 엽니다.
http://127.0.0.1:4000
Chrome에서 Start를 누르고 YouTube 탭을 선택한 뒤, 탭 오디오 공유를 반드시 켜야 합니다.
.env는 git에서 ignore됩니다.- 서버는 기본적으로
127.0.0.1에서만 실행됩니다. 0.0.0.0같은 unsafe bind host는 차단됩니다./session은 localhost Host/Origin만 허용합니다.- 브라우저에는 OpenAI API key가 내려가지 않고, 단기 client secret만 전달됩니다.
최근 자동 테스트 결과:
npm test
24 passed, 0 failed
로컬 smoke check:
http://127.0.0.1:4000에서 서버 기동 확인- 정적 페이지 로딩 확인
- API key 설정 후
/session200 응답 확인 - non-local Host 요청 403 차단 확인
HOST=0.0.0.0실행 전 차단 확인- 브라우저 실시간 통역 동작은 PoC 테스트 중 수동 확인
비용 추정은 아직 정확하지 않습니다. 한 번의 거친 수동 테스트에서 약 8분에 USD 10 정도로 보였지만, 해당 테스트는 비용을 분리해 측정한 것이 아니라 신뢰할 수 있는 벤치마크로 쓰면 안 됩니다. 분당/시간당 비용은 별도의 통제된 재테스트 후 문서화해야 합니다.
YouTube transcript 전문은 public 저장소에 추적하지 않습니다. test-output/에는 전체 원문 transcript가 아니라 요약된 비교/평가 리포트만 남깁니다.
gpt-realtime-translate는 dynamic voice adaptation 방식이라 통역 음색이 세션 중 바뀔 수 있습니다.- glossary, 고정 음성 선택, custom prompting은 이번 PoC 범위가 아닙니다.
- 브라우저 테스트는 소스 계약 테스트 중심이며, WebRTC 전체 동작은 Chrome에서 수동 확인이 필요합니다.
- 현재 transcript export는 번역문만 저장합니다.
MIT
