peterhao 发表于 2019-1-12 21:58:07

ROC-3308-CC 錄音測試__VAD使用__GPIO__問題

請問
(一)
查看RK3308上的版本:
# uname -a

Linux rockchip 4.4.143 #1 SMP PREEMPT Tue Nov 13 10:30:07 CST 2018 aarch64 GNU/Linux


接上麥克風陣列配件 錄音測試
#arecord --list-devices

#arecord -f S16_LE -c 2 -r 16000 -D plughw:1,0 -d 10 test.wav
#aplay test.wav
有執行成功, 但撥放時都沒聲音 (錄音音量很大, 且撥放範例音檔有聲音, 排除輸入音量及輸出音量問題)
請問可能是什麼原因?

檢查device如下 :
# arecord --list-devices arecord --list-devices
**** List of CAPTURE Hardware Devices ****
card 0: rockchiprk3308v , device 0: dailink-multicodecs multicodec-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: rockchiprk3308p , device 0: dailink-multicodecs dummy_codec-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 7: Loopback , device 0: Loopback PCM
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 7: Loopback , device 1: Loopback PCM
Subdevices: 7/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7


測了其他plughw也都沒聲音


(二)
文檔中有VAD模組說明, 也試了一些範例, 但都沒成功, 請問有沒有較簡單的vad範例或文檔可參考?
我參考的範例文檔https://github.com/rockchip-linux/docs/tree/master/SoC%20platform%20related/RK3308

(三)
#echo 18 > /sys/class/gpio/export
#echo out > /sys/class/gpio/gpio18/direction
#echo 0 > /sys/class/gpio/gpio18/value
#echo 1 > /sys/class/gpio/gpio18/value

但實際測量腳位電壓不管怎樣都是0.1xx, 其他gpio腳也是如此, 請問是何原因?

謝謝

Livvol 发表于 2019-1-14 10:42:33

1、麦克风阵列声卡为card 0,改为arecord -f S16_LE -c 2 -r 16000 -D plughw:0,0 -d 10 test.wav即可
2、vad现在还有点小问题,修复以及具体文档后续会更新。目前,使用方法可参考思必驰语音。
3、实际测量?是不是测错脚了?你 cat /sys/class/gpio/gpio18/value应该能看到预期值吧,gpio18对应板子上的丝印是G0C2,实际测量是能看到预期值的。

Livvol 发表于 2019-1-14 11:15:45

补充一下:
VAD模组,这里可以简单测试:
打开硬件VAD:amixer cset name='vad switch' 1
开始录音:arecord -c 4 -r 16000 -f S16_LE -t raw -d 1 --period-size=1024 --buffer-size=102400 /tmp/test.pcm
录音完成,硬件 vad 模块在录音关闭之后会自动启动,输入echo mem > /sys/power/state进入休眠
可以对 mic 发出任意声音唤醒系统。

peterhao 发表于 2019-1-14 15:33:43

大神你好 :

(一)
輸入
#arecord -f S16_LE -c 2 -r 16000 -D plughw:0,0 -d 10 test.wav
出現以下

Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Stereo
clk_pdm_frac parent_rate(589823999) is low than rate(arecord: set_params:1403: Unable to install hw params:
ACCESS:RW_INTERLEAVED
FORMAT: 4096 S16_LE
SUBFORMAT:STD
SAMPLE_BITS: 016
FRAME_BITS: 32
CHANNELS: 2
RATE: 16000
PERIOD_TIME: 1250000
PERIOD_SIZE: 2000
PERIOD0_BYTES: 8000
PERIODS: 4
BUFF0ER_TIME: 500000
BUFFER_SIZE: 8000
BUFFER_BYTES: 32000
TI)CK_TIME: 0
*20, fractional div is not allowed
pcm buffer_size should be larger than 256 KB
rockchip-vad ff3c0000.vad: sw_abs: 0x1c
#

輸入
#arecord -f S16_LE -c 2 -r 44100 -D plughw:0,0 -d 10 test.wav
則出現

Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
[   51.986237] clk_pdm_frac parent_rate(589823999) is low than rate(56448000)*20, fractional div is not allowed
[   51.986278] clk_pdm_frac parent_rate(589823999) is low than rate(56448000)*20, fractional div is not allowed
[   51.988708] rockchip-vad ff3c0000.vad: bufsize: 105840, hw_abs: 0x1a
[   51.992564] snd_pcm_post_start: vad copy buffer 8820 frames
[   52.238557] dma-pl330 ff2d0000.dma-controller: pl330_submit_req:1680 Try increasing mcbufsz (344/256)
[   52.238640] dma-pl330 ff2d0000.dma-controller: fill_queue:2211 Bad Desc(6)
[   52.239003] dma-pl330 ff2d0000.dma-controller: pl330_submit_req:1680 Try increasing mcbufsz (344/256)
[   52.239052] dma-pl330 ff2d0000.dma-controller: fill_queue:2211 Bad Desc(6)
一直卡著 按ctrl+c才退出

(二)
GPIO我是對照這篇第九頁
http://download.t-firefly.com/%E4%BA%A7%E5%93%81%E8%A7%84%E6%A0%BC%E6%96%87%E6%A1%A3/ROC-RK3308-CC-Product%20Specifications.pdf
所以/sys/class/gpio/gpio18並不是對應第十八腳?要怎麼查到/sys/class/gpio/gpioXX對應的正確腳位?

新手問題 請多多包涵~
謝謝

Livvol 发表于 2019-1-14 16:22:15

peterhao 发表于 2019-1-14 15:33
大神你好 :

(一)


1、采样率大于16000hz时,录音命令加上--period-size=1024 --buffer-size=4096参数
2、参考引脚描述图:http://wiki.t-firefly.com/ROC-RK3308-CC/resource.html#ying-jian-zi-liao,18脚是GPIO0_C4,对应gpio20。。。而gpio18对应的时GPIO0_C2,是25脚。你把原理图下载下来研究下吧。我以及验证过,是没问题的。

peterhao 发表于 2019-1-14 19:32:45

好的 我再研究一下 感謝!

peterhao 发表于 2019-1-18 19:35:08

VAD模組測試中, arecord錄音問題與gpio問題解決了 感謝 !

想再請教如下 :
若想用自己的麥克風(USB音效卡輸入), 顯示

# lsusb
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001


(插上USB音效卡)
usb 3-1: new full-speed USB device number 2 using ohci-platform

# lsusb
Bus 003 Device 002: ID 0d8c:016c
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001
#


未列出規格型號是否表示不支援USB音效卡? 該如何解決?
謝謝



Livvol 发表于 2019-1-21 09:39:08

没试过,不支持的话可能还需配置下驱动吧

wjyfirefly 发表于 2019-1-22 16:23:21

楼主怎么解决arecord的录音问题的,可以分享一下吗?我是萌新

peterhao 发表于 2019-1-25 14:46:53

檢查arecord指令必須能用 並接上配件麥克風陣列板(聲卡編號是 0, 0)
輸入錄音十秒指令 :
arecord -f S16_LE -c 2 -r 44100 -D plughw:0,0 -d 10 --period-size=1024 --buffer-size=4096000 test.wav

( --buffer-size開大一點 確切要開多少我不確定 所以我開超大試試就成功了 )
页: [1] 2
查看完整版本: ROC-3308-CC 錄音測試__VAD使用__GPIO__問題