alsa - arecordは空のwavファイルを生成します

alsa - arecordは空のwavファイルを生成します

組み込みLinuxでarecordを介してオーディオファイルを録音しようとしていますが、ファイルは空です。 Audacityでは、次のように見えます。

オーディオファイル波形

しかし、aplayを介して通常のオーディオファイルを再生することはできます。 I2Sを介してCPUに接続されたRK809をサウンドカードとして使用します。 RK809はアナログマイクに接続され、アナログオーディオはRK809で処理され、I2Sバスを介してCPUに転送されます。

これに関するいくつかの情報は次のとおりです。

[root@DCIR:~]# cat /proc/asound/cards
 0 [rockchiprk809co]: rockchip_rk809- - rockchip,rk809-codec
                      rockchip,rk809-codec
 7 [Loopback       ]: Loopback - Loopback
                      Loopback 1

[root@DCIR:~]# amixer scontrols
Simple mixer control 'Master',0
Simple mixer control 'Playback Path',0
Simple mixer control 'Capture MIC Path',0
Simple mixer control 'Digital',0

[root@DCIR:~]# amixer controls
numid=3,iface=MIXER,name='Master Playback Volume'
numid=2,iface=MIXER,name='Capture MIC Path'
numid=1,iface=MIXER,name='Playback Path'
numid=4,iface=MIXER,name='Digital Capture Volume'

[root@DCIR:~]# amixer scontents
Simple mixer control 'Master',0
  Capabilities: pvolume
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 100
  Mono:
  Front Left: Playback 100 [100%] [0.00dB]
  Front Right: Playback 100 [100%] [0.00dB]
Simple mixer control 'Playback Path',0
  Capabilities: enum
  Items: 'OFF' 'RCV' 'SPK' 'HP' 'HP_NO_MIC' 'BT' 'SPK_HP' 'RING_SPK' 'RING_HP' 'RING_HP_NO_MIC' 'RING_SPK_HP'
  Item0: 'SPK_HP'
Simple mixer control 'Capture MIC Path',0
  Capabilities: enum
  Items: 'MIC OFF' 'Main Mic' 'Hands Free Mic' 'BT Sco Mic'
  Item0: 'Main Mic'
Simple mixer control 'Digital',0
  Capabilities: cvolume
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 100
  Front Left: Capture 100 [100%] [0.00dB]
  Front Right: Capture 100 [100%] [0.00dB]

アルサミキサー

私が試したことは次のとおりです。

  1. I / Oエラーでないことを確認するために少なくとも10秒間ログを記録します。
  2. ハードウェアを確認してください。 MICを確認しましたが、I2S信号を測定するにはチップのピンのみを直接測定できるため、I2Sバスを確認するのは困難です。

以下はチップメーカーが提案する方法ですが、どのように実装するのかわかりません。

  1. 「Amixer または Tinymix を使用して、CODEC 内の ADC チャネルが開いていて音量がミュートになっていることを確認してください.」alsamixerで「キャプチャマイクパス」がオフになっていないこと、「デジタル」がミュートされていないことを確認しました。 ADCの状態を確認する方法がわかりません。
  2. 「コーデック側の入力信号発生器で生成された10kHz波形信号です。」これは、I2Sバスから信号を送信することを意味しますか?
  3. 「arecordまたはtinycapを使用して、問題がユーザーモードで発生するのか、カーネルモードで発生したのかを記録して検索します。」arecord -D hw:0,0 -d 2 -f cd -c 2 -vv -t wav test.wav 私は空のファイルを生成する履歴コマンドを使用します。

(直す:)

[root@DCIR:/]# ls -ails /dev/snd
total 0
 181 0 drwxr-xr-x  3 root root       240 Aug  4 09:00 .
1025 0 drwxr-xr-x 13 root root      4200 Aug  4 09:00 ..
8996 0 drwxr-xr-x  2 root root        80 Aug  4 09:00 by-path
1097 0 crw-rw----  1 root audio 116,   0 Aug  4 09:00 controlC0
 187 0 crw-rw----  1 root audio 116, 224 Aug  4 09:00 controlC7
1096 0 crw-rw----  1 root audio 116,  24 Aug  4 09:00 pcmC0D0c
1095 0 crw-rw----  1 root audio 116,  16 Aug  4 09:00 pcmC0D0p
 184 0 crw-rw----  1 root audio 116, 248 Aug  4 09:00 pcmC7D0c
 183 0 crw-rw----  1 root audio 116, 240 Aug  4 09:00 pcmC7D0p
 186 0 crw-rw----  1 root audio 116, 249 Aug  4 09:00 pcmC7D1c
 185 0 crw-rw----  1 root audio 116, 241 Aug  4 09:00 pcmC7D1p
 182 0 crw-rw----  1 root audio 116,  33 Aug  4 09:00 timer

オシロスコープを使用してサウンドカード(rk809)とCPU間のI2SバスでSDO / PDMDATA信号を測定したところ、録音中に出力信号があることがわかりました。

arecord -Dhw:0,0 -f cd -d 5 -vvv audio.wavたとえば、formatまたはalsaを使用すると、datボリューム0が表示されます。-f S16_LE-f S32_LE

[root@DCIR:~]# arecord -Dhw:0,0 -f cd -d 5 -vvv audio.wav
Recording WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Hardware PCM card 0 'rockchip,rk809-codec' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 16
  buffer_size  : 22052
  period_size  : 5513
  period_time  : 125011
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 5513
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 22052
  silence_threshold: 0
  silence_size : 0
  boundary     : 1445199872
  appl_ptr     : 0
  hw_ptr       : 0
Max peak (11026 samples): 0x00000001 #                    0%
Max peak (11026 samples): 0x00000001 #                    0%
Max peak (11026 samples): 0x00000001 #                    0%
Max peak (11026 samples): 0x00000001 #                    0%
Max peak (11026 samples): 0x00000001 #                    0%
Max peak (11026 samples): 0x00000001 #                    0%
Max peak (11026 samples): 0x00000001 #                    0%
Max peak (11026 samples): 0x00000001 #                    0%

ただし、以下を使用するとS24_LEボリュームが200%増加します。

[root@DCIR:~]# arecord -Dhw:0,0 -r 44100 -f S24_LE -c 2 -d 10 -vvv audio.wav
Recording WAVE 'audio.wav' : Signed 24 bit Little Endian, Rate 44100 Hz, Stereo
Hardware PCM card 0 'rockchip,rk809-codec' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S24_LE
  subformat    : STD
  channels     : 2
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 32
  buffer_size  : 22052
  period_size  : 5513
  period_time  : 125011
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 5513
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 22052
  silence_threshold: 0
  silence_size : 0
  boundary     : 1445199872
  appl_ptr     : 0
  hw_ptr       : 0
Max peak (11026 samples): 0x00ffffff #################### 200%
Max peak (11026 samples): 0x00ffffff #################### 200%
Max peak (11026 samples): 0x00ffffff #################### 200%
Max peak (11026 samples): 0x00ffffff #################### 200%
Max peak (11026 samples): 0x00ffffff #################### 200%
Max peak (11026 samples): 0x00ffffff #################### 200%

ベストアンサー1

おすすめ記事