レコード出力を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なので、入力サンプリングレートを指定する必要はありません。

関連情報