![Sox 형식 스트림, 샘플 사양은 "s16le 1ch 16000Hz", 채널 매핑은 "mono"](https://linux55.com/image/147284/Sox%20%ED%98%95%EC%8B%9D%20%EC%8A%A4%ED%8A%B8%EB%A6%BC%2C%20%EC%83%98%ED%94%8C%20%EC%82%AC%EC%96%91%EC%9D%80%20%22s16le%201ch%2016000Hz%22%2C%20%EC%B1%84%EB%84%90%20%EB%A7%A4%ED%95%91%EC%9D%80%20%22mono%22.png)
오디오를 sox로 스트리밍하려고 하는데 "sox 형식 실패: '-'에 대한 입력 형식이 잘못되었습니다: 샘플링 속도가 지정되지 않았습니다."라는 오류가 나타납니다.
parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor --rate=16000 --channels=1 | sox -t raw - output.wav silence 1 0.3 0.1% 1 0.3 0.1% : newfile : restart
이것은 명령의 출력입니다.
sox FAIL formats: bad input format for `-': sampling rate was not specified
Opening a recording stream with sample specification 's16le 1ch 16000Hz' and channel map 'mono'.
Connection established.
Stream successfully created.
Buffer metrics: maxlength=4194304, fragsize=64000
Using sample spec 's16le 1ch 16000Hz', channel map 'mono'.
Connected to device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor (index: 0, suspended: no).
write() failed: Broken pipe
답변1
원시 스트림에는 해당 형식에 대한 메타 정보가 포함되어 있지 않으므로 sox에 다음과 같이 알려야 합니다.
parec ... | sox -t raw -r 16k -e signed -b 16 -c 1 ...