arecord wav 출력을 flac로 변환하려고 하는데 부분적으로 작동합니다.
pi@raspberrypi /tmp $ arecord -d4 -f dat -t wav -r 48000 -c 2 |flac -f -o message.flac - --channels=1 --sample-rate=16000
mplayer에서 인식되고 유효한 flac 파일로 재생되는 파일이 생성됩니다.
pi@raspberrypi /tmp $ mplayer message.flac
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
libavcodec version 53.35.0 (external)
Mismatching header version 53.32.2
AUDIO: 48000 Hz, 2 ch, s16le, 125.8 kbit/8.19% (ratio: 15723->192000)
Selected audio codec: [ffflac] afm: ffmpeg (FFmpeg FLAC audio)
==========================================================================
그러나 결과적으로 16kHz 1채널 트랙을 원한다고 flac에 올바르게 알리는 방법을 모르겠습니다. 일반 "-" 대신 -d를 사용하면 허용되지 않습니다.
녹음 채널/속도를 목표 설정으로 설정하지 않는 이유가 무엇인지 물으실 수 있습니다. 그렇게 하면 캡처된 음질이 형편없으며 낮은 설정에서 sox/flac을 통해 flac로 변환하는 것이 훨씬 더 잘 작동한다는 것입니다.
원래는 wav를 flac로 다시 인코딩하지 않고도 sox를 사용하여 flac을 녹음하고 싶었지만 분할 오류가 발생하여 이 문제를 극복할 방법을 찾지 못했습니다.
답변1
flac 인코더는 확실히 샘플링 속도/비트 깊이 변환을 수행하지 않습니다. 그러나 Sox는 즉석에서 이를 수행할 수 있습니다. 이 시도:
arecord -d4 -f dat -t wav -r 48000 -c 2 | sox - -b16 -r16k -c1 -t wav - | flac - -o message.flac
Sox의 주장은 다음과 같습니다.
-
표준 입력 사용-b16
출력 비트 심도-r16k
출력 16kHz 샘플 속도-c1
채널 출력-t wav
wav 출력 형식 지정-
결과를 표준 출력으로 보내기
입력이 flac
이미 16kHz이므로 입력 샘플링 속도를 지정할 필요가 없습니다.