Sox를 사용하여 즉시 오디오를 리샘플링하는 방법

Sox를 사용하여 즉시 오디오를 리샘플링하는 방법

대답하면 쿠키를 줄게!

나는 sox즉시 MP3 파일을 WAV 형식으로 변환하는 데 사용하고 있습니다 pifm. 유일한 문제는 전체 MP3 디렉토리에 대해 이 작업을 수행하고 있으며 모든 디렉토리의 샘플 속도가 동일하지 않기 때문에 명령이 실패한다는 것입니다.

오디오 파일을 리샘플링하여 전송하는 방법이 있습니까?wav로 즉시 변환, 그리고 그것을 파이프로 연결 하시겠습니까 pifm?

내 현재 명령은 다음과 같습니다

sox -t mp3 /home/pi/Desktop/music/*.mp3 -t wav - |
sudo ./pi_fm_rds -freq 94.5  -audio - -ps ZSFM -rt ZSFM

그러나 이것은 나에게 다음을 제공합니다:

sox WARN mp3-util: MAD lost sync
sox WARN mp3-util: MAD lost sync
sox FAIL sox: Input files must have the same sample-rate

그래서 나는 sox가 각 파일을 즉시 리샘플링한 다음 즉시 변환을 위해 sox로 파이프하기를 원합니다.

또한 시도하면 다음과 같습니다.

sox -r 44100-t mp3 /home/pi/Desktop/music/*.mp3 -t wav - |
sudo ./pi_fm_rds -freq 94.5  -audio - -ps ZSFM -rt ZSFM

해당 디렉토리에 있는 파일의 샘플 속도가 동일하지 않기 때문에 여전히 작동하지 않습니다.

답변1

@dirkt와 @Thor에게 감사드립니다.

@dirkt가 답변했습니다.

sox -t mp3 /home/pi/Desktop/music/*.mp3 -t wav -r 44100 - | sudo ./pi_fm_rds -freq 94.5  -audio - -ps ZSFM -rt ZSFM

@Thor가 대답했습니다.

for tune in *.mp3; do 
  sox $tune -t wav - rate 44100
done |
sudo ./pi_fm_rds -freq 94.5  -audio - -ps ZSFM -rt ZSFM

둘 다 작동합니다!

답변2

사용할 수 있는 해결 방법은 다음과 같습니다(파일 이름이 적절하게 지정되었다고 가정).

for tune in *.mp3; do 
  sox $tune -t wav - rate 44100
done |
sudo ./pi_fm_rds -freq 94.5  -audio - -ps ZSFM -rt ZSFM
...

관련 정보