나는 큰 mp3에 저장된 여러 개의 오디오북을 가지고 있습니다. 저는 이러한 대용량 mp3를 여러 개의 작은 파일로 분할하려고 합니다.
오디오 파일에서 무음을 감지하고 이 "구분 기호"를 기반으로 오디오 파일을 분할하는 도구를 찾았습니다.
예는 다음과 같습니다.
sox -V3 audiobook.mp3 audiobook_part_.mp3 \
silence 1 0.5 0.1% 1 0.5 0.1% : newfile : restart
audiobook.mp3
이는 기본적으로 , audiobook_part_001.mp3
, ... 로 나누어지며, audiobook_part_002.mp3
여기서 침묵 >= 0.5초입니다.
이제 문제는 이 명령이 파일을 분할할 뿐만 아니라 묵음도 제거한다는 것입니다.
따라서 재생 목록에서 새 파일을 재생하면 트랙/섹션이 함께 압축되어 들리게 됩니다.
sox
그렇다면 파일을 분할하기만 하고 (각 트랙의 끝에서) 침묵을 유지하도록 어떻게 알 수 있습니까 ?
답변1
약간의 변경으로 분할 섹션의 모든 무음을 유지할 수 있습니다. 원래 명령으로 시작하십시오.
silence 1 0.5 0.1% 1 0.5 0.1%
첫 번째 삼중항 값은 사운드가 0.1% 이상일 때 0.5초까지 처음에 무음(있는 경우)을 제거하는 것을 의미합니다. 두 번째 삼중항은 무음 시간이 최소 0.5초 동안 0.1% 미만일 때 중지를 의미합니다. 그런 다음 명령의 나머지 부분은 : newfile : restart
새 출력 파일을 시작하고 처음부터 다시 사운드 찾기를 시작합니다. 따라서 무음이 시작되면 첫 번째 파일이 끝나고 무음이 끝나면 두 번째 파일이 시작됩니다.
이를 개선하는 가장 쉬운 옵션은 silence -l
. 파일 끝을 트리거하는 0.5초의 무음이 유지됩니다. 불행하게도 더 긴 침묵은 다음 파일의 시작이므로 삭제됩니다. 간격을 더 길게 유지하는 간단한 방법은 이를 -l
더 긴 감지 시간(예: 2초)과 결합하는 것입니다.
silence -l 1 0.5 0.1% 1 2.0 0.1%
이제 최소 2초의 침묵이 있을 경우에만 분할되지만 처음 2초의 간격은 유지됩니다. 모든 침묵을 잃지 않으려면 처음에 침묵 감지를 제거하십시오. 트리플을 단일로 바꿔야 합니다 0
.
silence -l 0 1 2.0 0.1%
간단한 사운드 파일을 가지고 상황 대처 방법을 확인하고 싶다면 sox
1초의 톤과 1초의 무음이 포함된 사운드 파일 2개를 쉽게 생성한 다음 이를 결합하여 결과를 발표할 수 있습니다 silence
. 효과 입력. 예를 들어 다음을 생성합니다.
sox -n gap.wav trim 0 1
sox -n tone.wav synth 1.001t sine C5
그런 다음 갭 사운드를 추가하고 out.wav
효과를 만들어 결과를 들어보세요.
sox gap.wav tone.wav gap.wav tone.wav out.wav silence 1 0.5 0.1%
play out.wav
답변2
각 분할 파일의 시작과 끝 부분에 무음을 추가하기 위해 sox 패드를 사용했습니다. 마지막으로 모든 작업을 한 번에 수행하는 단일 sox 명령은 아니지만 더 간단하고 채우기 무음 길이 선택과 같은 추가 제어 기능을 제공합니다.
바라보다이 답변양말 인서트 사용 방법에 대해. 예를 들어
files="*.wav"
for f in $files
do
sox "$f" "${f%.*}-pad.wav" pad 2 3
done