레코드 출력을 flac로 변환

레코드 출력을 flac로 변환

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의 주장은 다음과 같습니다.

  1. -표준 입력 사용
  2. -b16출력 비트 심도
  3. -r16k출력 16kHz 샘플 속도
  4. -c1채널 출력
  5. -t wavwav 출력 형식 지정
  6. -결과를 표준 출력으로 보내기

입력이 flac이미 16kHz이므로 입력 샘플링 속도를 지정할 필요가 없습니다.

관련 정보