영상 만들 때마다 마이크 앞에 앉는 게 지겨우셨다면, 이 프로그램 하나로 끝납니다. 목소리는 한 번만 등록하면 됩니다. 그다음부터는 대본만 넣으세요.
🖥️ 뭘 하는 프로그램인가요
내 컴퓨터에서 브라우저 창이 하나 열리고, 거기서 두 가지만 하면 됩니다.
- 목소리 등록 — 이미 찍어둔 영상을 끌어다 놓으면, 프로그램이 말이 온전하게 이어지는 구간을 알아서 찾아 후보를 들려줍니다. 마음에 드는 걸 고르기만 하면 끝. 새로 녹음할 필요 없습니다.
- 대본 넣고 읽히기 — 한 줄에 한 문장씩 적고 버튼을 누르면 내 목소리로 읽은 음성 파일이 나옵니다.
다 만들고 나면 프로그램이 자기가 만든 음성을 다시 받아쓰기해서원래 대본과 글자로 대조합니다. 발음이 틀렸거나 없는 말을 지어냈으면 여기서 걸립니다. 고유명사와 숫자가 특히 잘 틀리는데, 그걸 사람이 일일이 듣지 않아도 되게 만들었습니다.
🧭 나에게 맞는 길 고르기
어느 길로 가든 준비물은 똑같습니다. 내 목소리가 담긴 영상이나 녹음 파일 하나 (말이 10초 이상 이어지는 것), 그리고 저장공간 10GB. 목소리 모델이 4GB쯤 됩니다.
압축을 푼 뒤, 아래를 통째로 복사해서 에이전트에게 주세요. 첫 줄의 폴더 경로만 본인 것으로 바꾸면 됩니다.
내려받은 "대신읽" 폴더를 설치하고 실행해줘.
- 폴더 위치: (여기에 압축 푼 폴더 경로를 적으세요)
순서
1. 파이썬 3.12 와 ffmpeg 가 있는지 확인하고 없으면 설치해라.
2. 그 폴더 안에 가상환경(.venv)을 만들고 requirements.txt 를 설치해라.
3. python run.py 로 실행하고 브라우저가 열리는지 확인해라.
주의
- 애플 실리콘 맥이면 config.py 의 TTS_DEVICE 를 "cpu" 그대로 둬라.
MPS는 이 모델의 Mimi 코덱 conv1d에서
"Output channels > 65536 not supported" 로 실패한다.
- NVIDIA GPU가 있는 윈도우면 환경변수 DAESHIN_DEVICE=cuda 로 실행해봐라.
오류가 나면 cpu 로 되돌려라.
- 처음 실행하면 목소리 모델 약 4GB를 내려받는다. 멈춘 게 아니니 기다려라.아예 직접 만들게 하고 싶다면
남이 만든 걸 쓰기 싫고 내 손으로 만들고 싶다면, 아래를 주세요. 제가 하나씩 실패하면서 알아낸 조건들이 들어 있습니다. 이걸 안 주면 에이전트도 저와 똑같은 함정에 빠집니다.
내 목소리를 복제해서 대본을 읽어주는 로컬 TTS를 직접 만들어줘.
[내 재료]
- 내 목소리가 담긴 영상/음성 파일: (여기에 파일 경로를 적으세요)
[반드시 지킬 것 — 실제로 실패해보고 얻은 조건이다]
1. 모델은 Qwen/Qwen3-TTS-12Hz-1.7B-Base 를 쓴다.
XTTS-v2(coqui-tts)는 한국어에서 고유명사를 틀리고 원문에 없는 문장을
지어내니 쓰지 마라.
2. device_map="cpu" 로 고정한다. 애플 실리콘 MPS는 Mimi 코덱 conv1d에서
"Output channels > 65536 not supported" 로 실패한다.
3. 견본 클립에 노이즈 제거(afftdn 등)를 절대 걸지 마라.
명료도(2~5kHz)와 공기감(5~12kHz)이 원본의 절반으로 깎여서
합성음이 동굴처럼 먹먹해진다. highpass=f=70 과 loudnorm 까지만 허용한다.
4. 견본은 8~10초로 자르되 문장이 온전히 시작하고 끝나는 구간을 골라라.
무음 탐지로는 문장 경계를 못 찾는다(말이 촘촘하면 구간이 20~40초씩 된다).
받아쓰기 엔진이 주는 문장 타임스탬프를 경계로 써라.
5. Qwen 클로닝은 ref_audio 와 ref_text(그 구간의 정확한 전사)를 쌍으로
요구한다. 전사가 정확할수록 발음이 정확해진다.
[만들어줘]
- 대본 txt를 줄 단위로 읽어 생성하고 문장 사이 0.35초를 넣어 합치는 스크립트
- 줄 단위 캐시(문장 해시로 저장). 한 줄만 고치면 그 줄만 재생성되게 해라.
[검수]
생성한 음성을 whisper로 다시 전사해서 원본 대본과 글자로 대조해줘.
특히 고유명사와 숫자를 확인해라.에이전트는 "완료했습니다"라고 말하지만 소리를 듣지는 못합니다. 발음이 틀렸는지는 글자 대조로 잡히지만, 목소리가 나와 닮았는지는 사람만 판단할 수 있습니다.
📌 시작 전에 딱 2가지만
터미널이 뭔가요? 컴퓨터에게 글자로 명령을 내리는 창입니다. 정해진 글자를 붙여넣기만 하면 돼요.
- 키보드 ⌘(커맨드) + 스페이스바
터미널입력 후 Enter- 창이 뜨면 성공. 붙여넣기는 ⌘ + V, 실행은 Enter입니다.

cd가 뭔가요? "이 폴더로 들어가라"는 명령입니다. 프로그램을 실행하려면 먼저 그 폴더로 들어가야 해요.
cd 까지 치고 한 칸 띄운 뒤 폴더를 터미널 창으로 드래그하면 경로가 자동 입력됩니다. 그다음 Enter.
1단계. 준비물 설치
brew install python@3.12 ffmpeg(brew: command not found가 나오면 Homebrew부터 설치하세요.brew.sh의 설치 명령을 복사해 붙여넣으면 됩니다.)
확인: python3.12 --version과 ffmpeg -version이 각각 뭔가 출력하면 성공
2단계. 프로그램 내려받기
압축을 풀면 대신읽 폴더가 나옵니다. 원하는 곳에 두세요. 폴더 안에 run.py, config.py, core 폴더가 보이면 정상입니다.
3단계. 설치 — 한 줄씩
터미널에서 그 폴더로 들어간 다음,
cd (여기에 대신읽 폴더를 드래그) 
python3.12 -m venv .venv아무 메시지 없이 몇 초 뒤 입력이 가능해지면 성공
source .venv/bin/activate줄 맨 앞에 (.venv)가 붙으면 성공

pip install -r requirements.txt마지막에 Successfully installed …가 나오면 성공 (5분쯤 걸립니다)
4단계. 실행
python run.py
브라우저가 자동으로 열립니다. 안 열리면 주소창에 http://127.0.0.1:8770 을 직접 입력하세요.
닫으면 프로그램도 꺼집니다. 끄고 싶을 때는 터미널에서 Control + C.
🆘 맥에서 자주 나오는 오류
❗ command not found: python3.12
파이썬이 안 깔린 겁니다. brew install python@3.12를 다시 실행하세요.
❗ No module named 'fastapi'
줄 앞에 (.venv)가 없습니다. source .venv/bin/activate를 먼저 하세요.
❗ ffmpeg 가 없습니다 라고 화면에 뜸brew install ffmpeg 후 프로그램을 다시 켜세요.
🔁 다음부터는 이 3줄만
cd (대신읽 폴더 드래그)
source .venv/bin/activate
python run.py윈도우는 창 모양과 경로 표기(C:\\대신읽)가 다르게 보입니다. 하지만 해야 할 순서와 «성공했는지 확인하는 지점»은 똑같습니다.사진은 그 지점이 어떻게 생겼는지 참고용으로 보세요.
📌 시작 전에 딱 2가지만
cmd(명령 프롬프트)가 뭔가요? 컴퓨터에게 글자로 명령을 내리는 검은 창입니다.
- 왼쪽 아래 윈도우 키(⊞) 누르기
cmd입력- "명령 프롬프트" 클릭. 붙여넣기는 마우스 오른쪽 클릭 한 번입니다.
cd가 뭔가요? "이 폴더로 들어가라"는 명령입니다.
cd 까지 치고 한 칸 띄운 뒤 폴더를 cmd 창으로 드래그하면 경로가 자동 입력됩니다.
1단계. 준비물 설치
파이썬 — python.org → Downloads → 3.12 버전 내려받아 설치.
설치 첫 화면 맨 아래 "Add python.exe to PATH" 네모칸에 반드시 체크하세요. 이걸 빠뜨리면 이후 명령이 하나도 안 먹힙니다. 가장 많이 하는 실수입니다.
ffmpeg — cmd에 붙여넣고 Enter:
winget install Gyan.FFmpeg⚠️ 설치 후 지금 열린 cmd를 닫고 새로 여세요. 그래야 인식됩니다.
확인: python --version과 ffmpeg -version이 각각 출력하면 성공
2단계. 프로그램 내려받기
압축을 풀어 C:\\대신읽 같은 곳에 두세요. 폴더 안에 run.py가 보이면 정상입니다.
3단계. 설치 — 한 줄씩
cd C:\대신읽
python -m venv .venv아무 메시지 없이 몇 초 뒤 입력이 가능해지면 성공
.venv\Scripts\activate줄 맨 앞에 (.venv)가 붙으면 성공

pip install -r requirements.txt마지막에 Successfully installed …가 나오면 성공
4단계. 실행
python run.py
브라우저가 자동으로 열립니다. 안 열리면 http://127.0.0.1:8770 을 직접 입력하세요.
💡 NVIDIA 그래픽카드가 있다면 아래처럼 실행해보세요. 훨씬 빨라집니다. 오류가 나면 그냥 python run.py 로 되돌리면 됩니다.
set DAESHIN_DEVICE=cuda && python run.py🆘 윈도우에서 자주 나오는 오류
❗ 'python'은(는) 내부 또는 외부 명령이 아닙니다
"Add python.exe to PATH" 체크를 빠뜨린 겁니다. 다시 설치하면서 꼭 체크하세요.
❗ No module named 'fastapi'
줄 앞에 (.venv)가 없습니다. .venv\\Scripts\\activate를 먼저 하세요.
❗ ffmpeg가 인식 안 됨
설치 후 cmd를 새로 열지 않았습니다. 창을 닫고 새로 여세요.
🔁 다음부터는 이 3줄만
cd C:\대신읽
.venv\Scripts\activate
python run.py목소리 등록하기 (한 번만)
영상이나 음성 파일을 화면에 끌어다 놓으면, 프로그램이 말이 온전한 구간을 찾아 후보 5개를 들려줍니다. 재생해서 마음에 드는 걸 고르세요.
후보마다 무슨 말을 하는지 글로도 같이 보여줍니다. 실제와 다른 부분이 있으면 고쳐주세요. 이 프로그램은 "이 소리가 이 글자다"를 짝으로 배우기 때문에, 이 글자가 정확할수록 발음이 정확해집니다.
처음 한 번은 오래 걸립니다
첫 생성 때 목소리 모델 약 4GB를 내려받습니다. 몇 분 멈춘 듯 보여도 정상입니다. 한 번 받으면 그다음부터는 바로 시작합니다. 문장당 50~60초 걸리니, 3문장이면 3분쯤 걸린다고 보시면 됩니다.
두 번째부터는 훨씬 빠릅니다
한 번 만든 문장은 저장됩니다. 대본에서 한 줄만 고치면 그 줄만 다시 만들고나머지는 그대로 씁니다. 7문장 기준 7분이 5초로 줄어듭니다. 숫자 하나 고쳤다고 처음부터 기다릴 일이 없습니다.
🎚️ 조절할 수 있는 것
config.py를 메모장으로 열어 숫자만 바꾸면 됩니다.
| 바꾸는 값 | 기본값 | 뜻 / 언제 바꾸나 |
|---|---|---|
GAP_SEC | 0.35 | 문장 사이 쉬는 시간(초). 답답하면 0.25, 여유롭게 하려면 0.5 |
REF_MIN_SEC / REF_MAX_SEC | 7.0 / 10.5 | 견본 길이 범위 |
ASR_REFINE_MODEL | small | 견본 대사를 받아쓰는 정확도. medium이면 더 정확하고 느림 |
TTS_DEVICE | cpu | NVIDIA GPU가 있으면 cuda |
⚠️ 반드시 지킬 것
기술적으로는 10초만 있으면 누구 목소리든 복제됩니다. 남의 목소리를 허락 없이 복제해 쓰면 법적 문제로 이어집니다. 등록한 견본(data/voices)은 목소리의 지문에 해당하니 공개된 곳에 올리지 마세요.
✅ 한 줄 요약
파이썬·ffmpeg 깔기 → 대신읽 받아서 압축 풀기 → 터미널에서 세 줄 → 영상 끌어다 놓고 목소리 고르기 → 대본 쓰고 버튼 누르기. 끝!
이 프로그램으로 만든 내레이션을 조달코치 가이드 영상에 실제로 쓰고 있습니다. 이제 대본만 고치면 목소리가 따라옵니다.