![sox를 사용하여 오디오 스트림을 분할하고 스크립트를 사용하여 청크를 처리합니다.](https://linux55.com/image/147915/sox%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%98%A4%EB%94%94%EC%98%A4%20%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%9D%84%20%EB%B6%84%ED%95%A0%ED%95%98%EA%B3%A0%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%B2%AD%ED%81%AC%EB%A5%BC%20%EC%B2%98%EB%A6%AC%ED%95%A9%EB%8B%88%EB%8B%A4..png)
아래와 같이 sox를 사용하여 오디오 스트림을 분할합니다.
stream | sox -t raw -r 16k -e signed -b 16 -c 1 - ./chunks/output.wav silence 1 0.3 0.1% 1 0.3 0.1% trim 0 55 : newfile : restart
이제 sox는 청크 폴더에 청크를 씁니다. 디스크에 쓰지 않고 처리하기 위해 스크립트로 파이프할 수 있나요?
이 같은
stream | sox | node script.js
답변1
Unix 파이프는 항상 바이트 스트림을 전달합니다. 그러나 분할의 요점은 여러 바이트 스트림을 얻고 단일 파이프를 통해 여러 바이트 스트림을 전달할 수 없다는 것입니다(단일 바이트 스트림으로 다시 연결하여 분할 목적을 무효화하지 않는 한).
bash
일반적인 for 루프를 사용하거나 parallel
원하는 방식으로 블록 폴더의 각 블록 파일에 대해 스크립트를 호출할 수 있습니다.
각 분할 블록에서 외부 프로그램을 호출할 수 있는 프로그램을 사용할 수도 있습니다. AFAIK sox
이를 수행할 수 있는 방법은 없지만 이를 수행할 수 있는 다른 오디오 분할 프로그램이 있을 수 있습니다.