端末でarecordコマンドを使用すると、混合結果が表示されます。私が使用したハードウェアには、Raspberry Pi用のCirrusオーディオカードが含まれていました。オンボードMICの24ビット192kHzサウンドをWAVファイルとして録音し、ヘッドフォンで再生しようとしています。まず、マイクとヘッドフォンが有効になっていることを確認しました。
$ ./Record_from_DMIC.sh
$ ./Playback_to_Headset.sh
その後、いくつかのコマンドを試しましたが、別の結果を得ました。
$ arecord -f S24_LE -r 192 -d 20 test.wav
Recording WAVE 'test.wav' : Signed 24 bit Little Endian, Rate 192000 Hz, Mono
$ arecord: set_params:1087: Channels count non available
# So I set the number of channels to 1 (even though it is that, by default)
$ arecord -c 1 -f S24_LE -r 192 -d 20 test.wav
Recording WAVE 'test.wav' : Signed 24 bit Little Endian, Rate 192000 Hz, Mono
arecord: set_params:1087: Channels count non available
それでも同じエラーが発生します。速度(192kHz)を削除し、デフォルト値のままにしました。
$ arecord -d 10 -c 1 -f S24_LE -t wav test.wav
Recording WAVE 'test.wav' : Signed 24 bit Little Endian, Rate 8000 Hz, Mono
$ arecord: set_params:1087: Channels count non available
それでも同じエラーが発生します。だから私はオンラインで見つけたコマンドの実行例を使いました(http://linux.die.net/man/1/arecord):
$ arecord -d 10 -f cd -t wav test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
これは効果がありました。しかし、明らかに私が望むものとは異なる値を使用しています。また、192kHzでの再生に問題がありました。
$ aplay -c 1 -r 192000 test.wav
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
192kHzで再生してみましたが、44.1kHzに落ちましたね。なぜこのような奇妙なエラーと結果が表示されるのか知っている人はいますか?
答え1
問題がどこにあるのか調べました。このコマンドは、2チャンネル(ステレオ)192kHzオーディオ入力を指定していないため、デフォルト値を使用します。以下は有効なコマンドの例です。
$ arecord -f S24_LE -c 2 -r 192000 -d 20 test.wav
それが-c 2
私のコマンドを修正したことです。