<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OBS on Physical AI 드림팀</title><link>https://ditis3g.github.io/tags/obs/</link><description>Recent content in OBS on Physical AI 드림팀</description><generator>Hugo -- gohugo.io</generator><language>ko</language><lastBuildDate>Thu, 02 Jul 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://ditis3g.github.io/tags/obs/index.xml" rel="self" type="application/rss+xml"/><item><title>대본만 쓰면 강의 영상이 나온다 — 버튜버 자동 제작 파이프라인 구축기</title><link>https://ditis3g.github.io/posts/2026-07-02-vtuber-lecture-automation/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0900</pubDate><guid>https://ditis3g.github.io/posts/2026-07-02-vtuber-lecture-automation/</guid><description>&lt;h2 id="무엇을-만들었나"&gt;무엇을 만들었나
&lt;/h2&gt;&lt;p&gt;블로그 1장 &amp;ldquo;AI가 화면 밖으로 나왔다 — 피지컬 AI 입문 가이드&amp;quot;를 10분짜리 유튜브 강의 영상으로 만들었다. 목표는 분명했다. &lt;strong&gt;사람이 카메라 앞에서 연기하지도, 녹화 버튼을 누르지도 않는 것.&lt;/strong&gt; 대본을 쓰면 AI 음성 합성 → 아바타 자동 립싱크 → 자동 녹화까지 한 번에 이어지도록 배선했고, 사용한 도구가 전부 무료라 총비용은 0원이었다.&lt;/p&gt;
&lt;p&gt;전체 흐름은 다음과 같다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;블로그 글 → 구어체 대본 (Claude 작성)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → Edge TTS로 mp3 생성 (tts.py)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 음성 내장 HTML 슬라이드, 타임스탬프 자동 전환 (slides.html)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → OBS 재생 음성을 가상 오디오 케이블로 VMagicMirror에 전달 → 아바타 립싱크
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → OBS WebSocket API로 녹화 시작/종료 자동화 (record.py)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="무료-도구로-짠-파이프라인"&gt;무료 도구로 짠 파이프라인
&lt;/h2&gt;&lt;p&gt;파이프라인을 구성하는 도구는 모두 무료이거나 오픈소스다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;VRoid Studio&lt;/strong&gt; (Pixiv): 슬라이더 조작만으로 3D 아바타를 만들어 VRM 파일로 내보낸다. 샘플 모델로 시작해도 충분하며, 내보낼 때는 호환성이 가장 좋은 VRM 0.0 형식을 쓴다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VMagicMirror&lt;/strong&gt; (MIT 라이선스): VRM 아바타를 띄우고 마이크 입력만으로 립싱크한다. 웹캠 없이 쓰는 것을 전제로 만들어져 숨쉬기·눈 깜빡임 같은 대기 모션이 자연스럽고, 그래서 &amp;ldquo;AITuber&amp;rdquo; 용도에 잘 맞는다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VB-Audio Cable&lt;/strong&gt; (도네이션웨어): 가상 오디오 케이블. 재생 소리를 가상 마이크(CABLE Output)로 흘려보내, mp3를 마이크 입력인 것처럼 넣어 준다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;edge-tts&lt;/strong&gt; (파이썬 패키지): 마이크로소프트 Edge의 한국어 TTS를 무료로 쓴다. &lt;code&gt;ko-KR-SunHiNeural&lt;/code&gt; 음성으로, 10분 분량 대본이 몇십 초 만에 mp3가 된다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OBS Studio&lt;/strong&gt;: 배경·슬라이드·아바타를 합성하고 녹화한다. WebSocket 서버를 켜면 파이썬으로 원격 제어할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 구조에서 가장 중요한 건 &lt;strong&gt;소리 배선&lt;/strong&gt;이다. mp3 재생음을 아바타의 &amp;ldquo;마이크 입력&amp;quot;으로 착각하게 만들어야 립싱크가 걸리기 때문이다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;OBS &lt;code&gt;설정 → 오디오 → 고급 → 모니터링 장치&lt;/code&gt;를 &lt;strong&gt;CABLE Input&lt;/strong&gt;으로.&lt;/li&gt;
&lt;li&gt;음성 소스(슬라이드 브라우저 소스)의 &lt;code&gt;고급 오디오 속성 → 모니터링&lt;/code&gt;을 **&amp;ldquo;모니터링과 출력&amp;rdquo;**으로.&lt;/li&gt;
&lt;li&gt;VMagicMirror &lt;code&gt;스트리밍 탭 → 립싱크&lt;/code&gt; 마이크를 &lt;strong&gt;CABLE Output&lt;/strong&gt;으로.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;정리하면 소리는 이렇게 흐른다. OBS가 mp3를 재생 → CABLE Input → CABLE Output → VMagicMirror가 마이크 입력으로 인식 → 립싱크. 같은 소리가 녹화 트랙에도 그대로 들어간다.&lt;/p&gt;
&lt;h2 id="슬라이드-자동-전환과-자동-녹화"&gt;슬라이드 자동 전환과 자동 녹화
&lt;/h2&gt;&lt;p&gt;슬라이드는 PPT가 아니라 &lt;strong&gt;HTML 한 파일&lt;/strong&gt;로 만들었다. 1920×1080 고정, 12장짜리이고 OBS 브라우저 소스로 바로 로드한다. HTML 안에 &lt;code&gt;&amp;lt;audio&amp;gt;&lt;/code&gt;로 강의 mp3를 내장하고, JS가 &lt;code&gt;audio.currentTime&lt;/code&gt;을 지켜보다가 미리 계산해 둔 타임스탬프에 슬라이드를 자동으로 넘긴다. 사람이 큐시트를 보며 넘길 필요가 없다.&lt;/p&gt;
&lt;p&gt;전환 시각은 섹션별 mp3 실측 길이에 대본 글자 수 비율을 얹어 계산했다. TTS 발화 속도가 균일해서 글자 비율만으로도 추정이 꽤 정확했다. 아바타가 우측 하단에 들어가므로 슬라이드 레이아웃에서는 그 자리를 비워 뒀다(padding-right 460px).&lt;/p&gt;
&lt;p&gt;녹화는 &lt;code&gt;record.py&lt;/code&gt;가 맡는다. OBS 28버전 이상은 WebSocket 서버가 내장돼 있어(&lt;code&gt;도구 → WebSocket 서버 설정 → 활성화&lt;/code&gt;), 파이썬 &lt;code&gt;obsws-python&lt;/code&gt; 패키지로 붙어 &lt;strong&gt;녹화 시작 → 브라우저 소스 새로고침(&lt;code&gt;refreshnocache&lt;/code&gt;로 페이지를 리로드해 음성을 처음부터 재생) → 재생 길이만큼 대기 → 녹화 종료&lt;/strong&gt;를 순서대로 실행한다. 결과적으로 명령 한 줄이면 10분 45초짜리 1080p60 영상이 나온다.&lt;/p&gt;
&lt;h2 id="막혔던-지점들"&gt;막혔던 지점들
&lt;/h2&gt;&lt;p&gt;자동화 과정에서 걸렸던 문제와 해결책을 남겨 둔다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;아바타 배경이 검게 찍힘&lt;/strong&gt;: VMagicMirror 배경 투명화를 켰을 때 OBS 게임 캡처의 &amp;ldquo;투명도 허용&amp;quot;을 체크하지 않으면 투명 영역이 검정으로 나온다. 게임 캡처 속성에서 체크 하나로 해결.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;얼굴이 잘림&lt;/strong&gt;: VMM 카메라를 &amp;ldquo;프리 카메라 모드&amp;quot;로 두고 아바타 창에서 휠(줌)·휠 드래그(이동)·우클릭 드래그(회전)로 구도를 잡는다. 잡은 구도는 퀵 세이브 슬롯에 저장할 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;10분 맞추기&lt;/strong&gt;: 첫 대본이 11분 10초로 나와, 중복 문장을 덜어 10분 39초로 맞췄다. 한국어 TTS 기본 속도 기준 10분은 공백 포함 4,000자 안팎이다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TTS 오독&lt;/strong&gt;: &amp;ldquo;유니트리 G1&amp;quot;을 &amp;ldquo;지원&amp;quot;으로 읽는 식의 오독이 있어, 외래어·기호는 대본 단계에서 미리 한글로 풀어썼다(챗지피티, 러로봇, 아이작 랩 등).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;조작용 UI가 화면에 찍힘&lt;/strong&gt;: 슬라이드 카운터(HUD)가 녹화에 들어가서, 자동 재생 중에는 숨기도록 고쳤다. 녹화 화면에 들어가는 소스에 &amp;ldquo;조작용 표시&amp;quot;가 없는지 확인할 것.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;창을 가려도 되나&lt;/strong&gt;: OBS 게임 캡처는 GPU 렌더링을 직접 후킹하므로 다른 창에 가려져도 캡처된다. 다만 &lt;strong&gt;최소화는 금지&lt;/strong&gt;(렌더링이 멈춘다). OBS 자체는 최소화해도 녹화가 계속된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;한 가지 한계도 분명하다. 립싱크·표정·대기 모션까지는 자동이지만, 손짓이나 판서 같은 큰 제스처는 안 된다. 다만 강의 영상은 슬라이드 하이라이트로 대체할 수 있어 실용상 문제는 없었다. 이제 다음 장부터는 &amp;ldquo;대본 작성 → TTS → 슬라이드 생성 → 자동 녹화&amp;quot;가 명령 몇 번으로 끝난다. 유튜브 강의 채널을 글 쓰는 속도로 운영할 수 있는 구조가 된 셈이다.&lt;/p&gt;
&lt;h2 id="한-줄-정리"&gt;한 줄 정리
&lt;/h2&gt;&lt;p&gt;대본만 쓰면 TTS·아바타 립싱크·슬라이드 전환·녹화까지 이어지는 무료 파이프라인을 짜서, 유튜브 강의 영상을 글 쓰는 속도로 찍어낼 수 있게 됐다.&lt;/p&gt;</description></item></channel></rss>