문제별 점검 찾기 · 전체 글

무음 자동 컷에서 쉼을 몇 초 남길까: silenceremove stop_duration 0.1~0.8초를 같은 21초 음성에 걸었더니 0.16~2.88초 줄었습니다

· 게시

· 수정

알림: 이 글에는 제휴(수수료) 링크가 없습니다. 측정한 음성은 저희가 로컬 AI 음성 합성으로 직접 만든 쇼츠 내레이션이고, 이 글은 AI의 도움을 받아 초안을 쓴 뒤 2026년 11월 1일 측정 파일과 대조했습니다. 어떤 도구 회사도 제공하거나 검토하지 않았습니다.

FFmpeg silenceremove로 쉼을 자동으로 줄일 때, 소리 크기 기준은 -30dB로 고정하고 stop_duration만 0.1·0.2·0.3·0.5·0.8초로 바꿔 봤습니다. 21.12초 내레이션이 2.88초, 2.17초, 1.64초, 0.83초, 0.16초 줄었습니다. 0.2초 이상에서는 그 값보다 긴 쉼이 stop_duration보다 0.04~0.06초(대부분 약 0.05초) 짧게 남았고(0.3초 → 약 0.25초), 0.1초에서는 0.1초 이상 쉼이 1곳만 남았습니다.

어떤 문제였나요

지난 글에서는 같은 음성에 임계값(-50~-20dB)을 바꿔 보고, -30dB에서 쉼을 0.1초 남기는 설정(stop_silence=0.1)을 시작값으로 정했습니다. 그때 stop_duration=0.3은 고정해 두었기 때문에, 이 값이 결과에 얼마나 영향을 주는지는 몰랐습니다. 이번에는 임계값을 -30dB로 묶어 두고 stop_duration 하나만 바꿔서, 몇 초가 줄고 쉼이 얼마나 남는지 확인했습니다.

이렇게 쟀습니다

  • 대상: 지난 글과 같은 파일입니다. 2026년 10월 22일 저희가 로컬 음성 합성(VoxCPM2)으로 만든 과학 쇼츠 내레이션 WAV 1개, 21.12초, 4문장. 새로 합성하지 않았습니다.
  • 바꾼 것 하나: stop_duration을 0.1, 0.2, 0.3, 0.5, 0.8초로 바꿨습니다. 나머지는 고정했습니다: stop_threshold=-30dB, stop_periods=-1(중간 쉼 전부 대상), stop_silence=0, detection=rms, window=0.02.
  • 결과 확인: 각 결과의 길이를 쟀고, silencedetect(-50dB, 0.1초 이상)로 남은 쉼의 수와 길이를 쟀습니다. 자막은 Whisper large-v3-turbo(mlx, 한국어 지정, 프롬프트 없음)로 판마다 1번 만들어 원래 대본과 글자 단위로 비교했습니다(띄어쓰기·문장부호 제외 108자, 숫자는 2023년·3250m로 맞춤).
  • FFmpeg 9.0.1, 노트북 1대. 6개 판 처리와 자막 생성에 모두 합쳐 약 5초 걸렸습니다.

원본에 있던 쉼

원본에는 -50dB 기준으로 0.1초 이상 쉼이 8곳 있었습니다. 길이는 0.30, 0.90, 0.63, 0.34, 0.59, 0.11, 0.11, 0.19초(마지막은 끝부분 무음)입니다.

결과

판 길이(초) 줄어든 길이(초) 남은 0.1초 이상 쉼(-50dB 기준) 가장 긴 쉼(초) 자막 오류(108자 중) 원본 대본과 다르게 적힌 부분
원본 21.12 0 8곳 0.90 2 ‘말미잘이’→’말미자리’
0.1초 18.24 2.88 1곳 0.11 2 ‘심해’→’심의’ 2곳
0.2초 18.95 2.17 8곳 0.16 4 ‘심해’→’심의’ 2곳, ‘말미잘이’→’말미자리’
0.3초 19.48 1.64 8곳 0.26 2 ‘심해’→’심의’ 2곳
0.5초 20.29 0.83 8곳 0.46 2 ‘심해’→’심의’ 2곳
0.8초 20.96 0.16 8곳 0.75 0 없음
21.12초 음성 한 개에서 stop_duration 0.1·0.2·0.3·0.5·0.8초에 따른 단축 시간과 최장 잔여 쉼 비교. 청취 품질은 미측정.
2026-11-01 자체 실측. -30dB·stop_silence=0 고정. 최장 쉼은 -50dB에서 검출한 0.1초 이상 간격의 최댓값입니다. 음성 1개·내레이터 1명·배경음악 없음. 청취 품질·영상 싱크는 평가하지 않았습니다.

눈에 띈 점

  • stop_duration은 ‘남는 쉼의 최대 길이’처럼 움직였습니다. 0.2초 이상에서는 문장 사이 쉼 가운데 그 값보다 긴 쉼만 잘렸고, stop_duration보다 0.04~0.06초(대부분 약 0.05초) 짧게 남았습니다. 0.3초 판에서 0.90·0.63·0.59·0.34·0.30초 쉼은 0.24~0.26초로, 0.5초 판에서 0.90·0.63·0.59초 쉼은 0.45~0.46초로, 0.8초 판에서는 0.90초 쉼 하나만 0.75초로 줄었습니다. 0.3·0.5·0.8초 판에서 그보다 짧은 쉼은 그대로였습니다. 예외로 0.2초 판에서는 0.2초보다 짧은 끝부분 무음(0.19초)도 0.16초로 줄었습니다.
  • 0.1초는 쉼을 거의 다 없앴습니다. 0.1초 이상 쉼이 1곳(0.105초)만 남았고 2.88초가 줄어, 문장 사이가 거의 붙었습니다. 사람이 듣고 평가하지는 않았습니다.
  • 0.3초 판은 지난 글의 -30dB 판과 길이가 같았습니다. 두 번 모두 19.476초로, 같은 설정이면 같은 길이가 나왔습니다.
  • 자막 오류 수로 고르기는 어려웠습니다. 0.8초 판이 0자, 원본이 2자, 0.2초 판이 4자였지만 판마다 1번씩만 돌렸습니다. ‘심해’→’심의’는 0.1~0.5초 판에서 나왔고 원본과 0.8초 판에는 없었습니다. 원인은 이 측정으로 단정할 수 없습니다.

그래서 저희는

저희는 남기고 싶은 쉼 길이를 먼저 정하고, stop_duration을 그보다 0.05초쯤 크게 잡기로 했습니다. 지난 글의 시작값(-30dB + 0.1초 남김)은 1.14초를 줄였고 쉼이 0.30~0.36초로 남았는데, 이번처럼 stop_silence=0으로 두고 stop_duration으로 정하면 남는 길이를 미리 짐작하기 쉬웠습니다. 그래서 시작값을 stop_duration=0.3, stop_silence=0(문장 사이 약 0.25초 남김)으로 바꿉니다. 이 음성에서는 1.64초가 줄었습니다. 0.1초처럼 쉼이 거의 사라지는 값은 문장 사이가 붙어 들릴 수 있어 쓰지 않습니다. 다만 자연스러운지는 직접 들어 봐야 알 수 있어서, 잘린 파일은 반드시 처음부터 끝까지 들어 봅니다.

한계

  • 음성 1개(21.12초, 합성 내레이터 1명, 배경음악 없음)만 쟀습니다. 배경음악이나 잡음이 섞인 음성, 사람 목소리는 다르게 나올 수 있습니다.
  • 판마다 자막을 1번씩만 만들었습니다. 자막 오류 수는 잘림을 간접적으로 보여 줄 뿐, 실제로 어떻게 들리는지는 확인하지 않았습니다.
  • 사람이 듣고 자연스러운지 평가하지 않았습니다.
  • 남은 쉼은 -50dB 기준으로 쟀습니다. 다른 기준으로 재면 숫자가 조금 달라집니다.
  • 임계값은 -30dB 하나로만, stop_silence는 0으로만 쟀습니다. 음성 WAV만 잘랐고 영상 동기 편집은 하지 않았습니다.

따라 해 보기

  1. 원본 쉼 재기: ffmpeg -i voice.wav -af silencedetect=noise=-50dB:d=0.1 -f null - 실행 후 silence_duration을 봅니다.
  2. 남길 쉼 길이 정하기: 예를 들어 약 0.25초를 남기려면 stop_duration=0.3을 씁니다.
  3. 쉼 줄이기: ffmpeg -i voice.wav -af "silenceremove=stop_periods=-1:stop_duration=0.3:stop_threshold=-30dB" cut.wav
  4. 1번 명령을 cut.wav에 다시 돌려 가장 긴 쉼이 원하는 길이인지 확인하고, ffprobe -v error -show_entries format=duration -of csv=p=0 cut.wav로 줄어든 길이를 봅니다.
  5. 마지막으로 처음부터 끝까지 들어 봅니다.

자주 묻는 질문

stop_duration을 줄이면 더 많이 줄어드나요?
이 측정에서는 그랬습니다. 0.8초 0.16초에서 0.1초 2.88초까지 늘었습니다. 대신 0.1초에서는 0.1초 이상 쉼이 1곳만 남았습니다.

stop_duration과 stop_silence는 어떻게 다른가요?
FFmpeg 문서는 stop_duration을 복사를 멈추기 전에 있어야 하는 쉼의 길이로(길게 잡으면 원하는 쉼을 남길 수 있다고 적혀 있습니다), stop_silence를 잘라 낸 뒤 남겨 둘 무음의 최대 길이로 설명합니다. 이번에는 stop_silence=0으로 두고 stop_duration만 바꿨습니다.

확인한 출처

관련 글: 내레이션 무음 자동 컷, -50·-40·-30·-20dB 중 어디까지 줄일까 · FFmpeg가 무음이라고 했는데 파형이 있나요? -45·-35·-25dB 기준 비교

분류:

작성·정정 안내

이 글의 원측정 날짜·파일 조건과 설명용 예제를 구분해 읽어 주세요. 작성·검토 방식 · 오류 제보·정정 요청