0.前言
? 本章主要講述如何使用板載的MIC拾音咪頭錄音并使用喇叭播放音頻。
? 音頻_開發指南:https://tina.100ask.net/SdkModule/Linux_AudioFrequency_DevelopmentGuide-02/#220-v853
? 全志官方音頻介紹:https://v853.docs.aw-ol.com/soft/tina_audio/#audio_1
100ASK_V853-PRO開發板資料匯總:
鏈接:100ASK_100ASK-PRO 資料匯總 - Allwinner / V853-Pro - 嵌入式開發問答社區
100ASK_V853-PRO開發板購買鏈接:100ASK_V853-PRO開發板
![pYYBAGRdo4yAf_iVAASQ3zSjFR0352.png](https://file.elecfans.com/web2/M00/A4/F2/pYYBAGRdo4yAf_iVAASQ3zSjFR0352.png)
1.硬件介紹
? V853 芯片提供了 AudioCodec(芯片內置音頻接口) x1、I2S/PCM(數字音頻接口) x2、DMIC(外置數字 MIC 接口) x1,可以滿足各類音頻需求。100ASK_V853-PRO開發板板載兩個MIC拾音咪頭和喇叭接口。如下圖所示:
![pYYBAGRdpmeAEAP8ABojeN0xjE0296.png](https://file.elecfans.com/web2/M00/A4/F4/pYYBAGRdpmeAEAP8ABojeN0xjE0296.png)
如果您想要使用喇叭接口播放聲音,需要外接一個喇叭
![poYBAGRdpm2AKlGKAAgNSYTJwxI715.png](https://file.elecfans.com/web2/M00/A4/76/poYBAGRdpm2AKlGKAAgNSYTJwxI715.png)
2.音頻驅動框架使用
在 Tina Linux 中使用的是標準的 ALSA API,所以使用音頻的功能可以使用標準的 alsa-utils
。它提供了 amixer
、aplay
、arecord
等工具。在Tina根目錄下輸入make menuconfig
book@100ask:~/workspaces/tina-v853-open$ make menuconfig
進入Tina配置界面后,進入如下目錄
> Sound
<*> alsa-utils............ ALSA (Advanced Linux Sound Architecture) utilities
如下圖所示:
![pYYBAGRdpnSAMGiyAAEGq1_VTjM288.png](https://file.elecfans.com/web2/M00/A4/F4/pYYBAGRdpnSAMGiyAAEGq1_VTjM288.png)
選中完成后會啟用amixer
、aplay
、arecord
功能,重新編譯打包更新系統即可體驗。
2.1 驅動調控:amixer
amixer是命令行的 ALSA 聲卡驅動調節工具,用于啟用、關閉各聲卡,設置各聲卡的音量。使用 amixer
命令列出當前注冊的音頻設備。
amixer
![pYYBAGRdpn6AB48-AAB9Hc1AVdw608.png](https://file.elecfans.com/web2/M00/A4/F4/pYYBAGRdpn6AB48-AAB9Hc1AVdw608.png)
- 常用選項
選項 功能
-D,--device 指定聲卡設備,默認使用default
- 常用命令
命令 功能
controls 列出指定聲卡的所有控件
contents 列出指定聲卡的所有控件的具體信息
cget 獲取指定控件的信息
cset 設定指定控件的值
選擇 MIC1 輸入
amixer -D hw:audiocodec cset name='MIC1 Input Select' 0
![poYBAGRdppCAHfCLAAAi8HK8Pqw060.png](https://file.elecfans.com/web2/M00/A4/76/poYBAGRdppCAHfCLAAAi8HK8Pqw060.png)
選擇 MIC2 輸入
amixer -D hw:audiocodec cset name='MIC2 Input Select' 0
![pYYBAGRdppaAcU26AAAi1ySDBks044.png](https://file.elecfans.com/web2/M00/A4/F4/pYYBAGRdppaAcU26AAAi1ySDBks044.png)
開啟 MIC1
amixer -D hw:audiocodec cset name='MIC1 Switch' 1
![poYBAGRdpp-AdVuuAAAaCx-T4zA443.png](https://file.elecfans.com/web2/M00/A4/76/poYBAGRdpp-AdVuuAAAaCx-T4zA443.png)
開啟 MIC2
amixer -D hw:audiocodec cset name='MIC2 Switch' 1
![poYBAGRdpqaAaGzYAAAadd5kOso476.png](https://file.elecfans.com/web2/M00/A4/76/poYBAGRdpqaAaGzYAAAadd5kOso476.png)
設置 MIC1 音量
amixer -D hw:audiocodec cset name='MIC1 gain volume' 30
![poYBAGRdpreACv-0AAAiFMC614Y732.png](https://file.elecfans.com/web2/M00/A4/76/poYBAGRdpreACv-0AAAiFMC614Y732.png)
設置 MIC2 音量
amixer -D hw:audiocodec cset name='MIC2 gain volume' 30
![pYYBAGRdpsGAMHrrAAAiJYAi8QY786.png](https://file.elecfans.com/web2/M00/A4/F4/pYYBAGRdpsGAMHrrAAAiJYAi8QY786.png)
開啟 LINEOUT 輸出功能
amixer -D hw:audiocodec cset name='LINEOUT Output Select' 1
![pYYBAGRdpsiAP7l6AAArzuT93iQ800.png](https://file.elecfans.com/web2/M00/A4/F4/pYYBAGRdpsiAP7l6AAArzuT93iQ800.png)
開啟 LINEOUT 通路
amixer -D hw:audiocodec cset name='LINEOUT Switch' 1
![poYBAGRdptKAK_y4AAAbSoVhPiU146.png](https://file.elecfans.com/web2/M00/A4/77/poYBAGRdptKAK_y4AAAbSoVhPiU146.png)
設置輸出音量
amixer -D hw:audiocodec cset name='LINEOUT volume' 25
![pYYBAGRdptyAaPcnAAA-FBVfY6k292.png](https://file.elecfans.com/web2/M00/A4/F5/pYYBAGRdptyAaPcnAAA-FBVfY6k292.png)
2.2 錄音工具:arecord
arecord 是命令行的 ALSA 聲卡驅動的錄音工具,用于錄音功能。
選項 功能
-D,--device 指定聲卡設備,默認使用default
-l,--list-device` 列出當前所有聲卡
-t,--file-type 指定播放文件的格式,如voc,wav,raw,不指定的情況下會去讀取文件頭部作識別
-c,--channels 指定通道數
-f,--format 指定采樣格式
-r,--rate 采樣率
-d,--duration 指定播放的時間
--period-size 指定period size
--buffer-siz` 指定buffer size
查看錄音設備
可以使用 arecord -l
命令查看開發板提供的錄音設備。
arecord -l
![poYBAGRdpuWAP1oNAAA3zS7AsZw857.png](https://file.elecfans.com/web2/M00/A4/77/poYBAGRdpuWAP1oNAAA3zS7AsZw857.png)
麥克風錄音
在錄音之前,首先需要使用 amixer 打開音頻通路,配置內部 MIC1,MIC2 錄制雙通道音頻。
amixer -D hw:audiocodec cset name='MIC1 Input Select' 0 &&
amixer -D hw:audiocodec cset name='MIC2 Input Select' 0 &&
amixer -D hw:audiocodec cset name='MIC1 Switch' 1 &&
amixer -D hw:audiocodec cset name='MIC2 Switch' 1 &&
amixer -D hw:audiocodec cset name='MIC1 gain volume' 30 &&
amixer -D hw:audiocodec cset name='MIC2 gain volume' 30
使用 arecord
命令,使用板載的兩個麥克風進行錄音。
arecord -D hw:audiocodec -f S16_LE -t wav -c2 -r 16000 -d 3 t.wav
![poYBAGRdpu-ACJDPAAAcyHXoScs542.png](https://file.elecfans.com/web2/M00/A4/77/poYBAGRdpu-ACJDPAAAcyHXoScs542.png)
2.3 播放工具:aplay
aplay 是命令行的 ALSA 聲卡驅動的播放工具,用于播放功能。
選項 功能
-D,--device 指定聲卡設備,默認使用default
-l,--list-devices 列出當前所有聲卡
-t,--file-type 指定播放文件的格式,如voc,wav,raw,不指定的情況下會去讀取文件頭部作識別
-c,--channels 指定通道數
-f,--format 指定采樣格式
-r,--rate 采樣率
-d,--duration 指定播放的時間
--period-size 指定period size
--buffer-size 指定buffer size
查看播放設備
使用 aplay -l
查看播放設備
aplay -l
![poYBAGRdpviAFJScAAA39QDXibY273.png](https://file.elecfans.com/web2/M00/A4/77/poYBAGRdpviAFJScAAA39QDXibY273.png)
揚聲器播放音頻
在播放之前,首先需要打開音頻通路,配置揚聲器播放音頻,具體可以參照 amixer 配置。
amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
amixer -D hw:audiocodec cset name='LINEOUT volume' 25
使用 aplay
通過外接揚聲器播放剛才錄制的音頻。
aplay -D hw:audiocodec t.wav
![pYYBAGRdpv-AesmlAAAVSejdJuQ776.png](https://file.elecfans.com/web2/M00/A4/F5/pYYBAGRdpv-AesmlAAAVSejdJuQ776.png)
3.測試錄音功能
? 啟動開發板后,在串口終端輸入如下命令:
amixer -D hw:audiocodec cset name='MIC1 Input Select' 0 &&
amixer -D hw:audiocodec cset name='MIC2 Input Select' 0 &&
amixer -D hw:audiocodec cset name='MIC1 Switch' 1 &&
amixer -D hw:audiocodec cset name='MIC2 Switch' 1 &&
amixer -D hw:audiocodec cset name='MIC1 gain volume' 30 &&
amixer -D hw:audiocodec cset name='MIC2 gain volume' 30 &&
arecord -D hw:audiocodec -f S16_LE -t wav -c2 -r 16000 -d 3 test.wav
例如:
root@TinaLinux:/# [ 67.295067] random: crng init done
[ 67.298885] random: 4 urandom warning(s) missed due to ratelimiting
root@TinaLinux:/#
root@TinaLinux:/#
root@TinaLinux:/# amixer -D hw:audiocodec cset name='MIC1 Input Select' 0 &&
> amixer -D hw:audiocodec cset name='MIC2 Input Select' 0 &&
> amixer -D hw:audiocodec cset name='MIC1 Switch' 1 &&
> amixer -D hw:audiocodec cset name='MIC2 Switch' 1 &&
> amixer -D hw:audiocodec cset name='MIC1 gain volume' 30 &&
> amixer -D hw:audiocodec cset name='MIC2 gain volume' 30 &&
> arecord -D hw:audiocodec -f S16_LE -t wav -c2 -r 16000 -d 3 test.wav
numid=23,iface=MIXER,name='MIC1 Input Select'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'differ'
; Item #1 'single'
: values=0
numid=24,iface=MIXER,name='MIC2 Input Select'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'differ'
; Item #1 'single'
: values=0
numid=17,iface=MIXER,name='MIC1 Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=18,iface=MIXER,name='MIC2 Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=12,iface=MIXER,name='MIC1 gain volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=31,step=0
: values=30
| dBscale-min=0.00dB,step=1.00dB,mute=0
numid=13,iface=MIXER,name='MIC2 gain volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=31,step=0
: values=30
| dBscale-min=0.00dB,step=1.00dB,mute=0
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Stereo
程序會自動錄音并保存文件到當前目錄下,查看當前目錄可以看到保存的文件test.wav
root@TinaLinux:/# ls
bin etc lib rdinit run sys usr
data home mnt rom sbin test.wav var
dev init proc root squashfs tmp www
4.播放音頻
在串口終端下,輸入以下命令,可以播放剛剛我們錄制的音頻
amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
amixer -D hw:audiocodec cset name='LINEOUT volume' 31 &&
aplay -D hw:audiocodec test.wav
例如:
root@TinaLinux:/# amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
> amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
> amixer -D hw:audiocodec cset name='LINEOUT volume' 31 &&
> aplay -D hw:audiocodec test.wav
numid=20,iface=MIXER,name='LINEOUT Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=20,iface=MIXER,name='LINEOUT Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=16,iface=MIXER,name='LINEOUT volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=31,step=0
: values=31
| dBrange-
rangemin=0,,rangemax=1
| dBscale-min=0.00dB,step=0.00dB,mute=1
rangemin=2,,rangemax=31
| dBscale-min=-43.50dB,step=1.50dB,mute=1
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Stereo
? 此時如果我們接上了喇叭,喇叭就會播放剛剛錄制的音頻。
? 同樣我們也可以將音頻文件拷貝到開發板中,使用以下命令
amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
amixer -D hw:audiocodec cset name='LINEOUT volume' 31 &&
aplay -D hw:audiocodec test.wav
其中test.wav
更換為您想要播放的音頻文件的路徑名稱。
?
假設提前要播放的音頻文件拷貝到TF卡中,插入TF卡后,掛載TF卡
root@TinaLinux:/# mount /dev/mmcblk1p1 /mnt/extsd/
查看TF卡中testSound
文件夾下的測試音頻文件
root@TinaLinux:/# ls /mnt/extsd/testSound/
test100.wav
使用如下命令播放測試音頻
amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
amixer -D hw:audiocodec cset name='LINEOUT volume' 31 &&
aplay -D hw:audiocodec /mnt/extsd/testSound/test100.wav
例如:
root@TinaLinux:/# amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
> amixer -D hw:audiocodec cset name='LINEOUT Switch' 1 &&
> amixer -D hw:audiocodec cset name='LINEOUT volume' 31 &&
> aplay -D hw:audiocodec /mnt/extsd/testSound/test100.wav
numid=20,iface=MIXER,name='LINEOUT Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=20,iface=MIXER,name='LINEOUT Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=16,iface=MIXER,name='LINEOUT volume'
; type=INTEGER,access=rw---R--,values=1,min=0,max=31,step=0
: values=31
| dBrange-
rangemin=0,,rangemax=1
| dBscale-min=0.00dB,step=0.00dB,mute=1
rangemin=2,,rangemax=31
| dBscale-min=-43.50dB,step=1.50dB,mute=1
Playing WAVE '/mnt/extsd/testSound/test100.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo
此時喇叭就會播放測試音頻。
5.更換開機音樂
由于100ASK_V853-PRO開發板已經默認啟用了開機音樂,自啟腳本位于:
openwrt/target/v853/v853-vision/busybox-init-base-files/etc/init.d/S03audio
我們可以在開發板的串口終端的/etc/init.d/
目錄下找到S03audio
文件
root@TinaLinux:/# cd /etc/init.d/
root@TinaLinux:/etc/init.d# ls
S00mpp S50telnet rc.final
S01logging S50usb rc.modules
S03audio S50wifidaemon rc.preboot
S10udev S99swupdate_autorun rcK
S11dev adbd rcS
S20urandom cron sysntpd
S40network dbus wpa_supplicant
S41netparam dnsmasq
S50dbus network
可以查看相關的腳本源碼。
進入/home/res/audio/
目錄下,可以查看兩個文件,分別為開機音樂startup.wav
和關機音樂shutdown.wav
root@TinaLinux:/etc/init.d# cd /home/res/audio/
root@TinaLinux:/home/res/audio# ls
shutdown.wav startup.wav
我們可以通過更換startup.wav
文件,來達到更換開機音樂的效果。假設我將TF卡中的test100.wav
拷貝到/home/res/audio/
目錄下,并更換名稱為startup.wav
root@TinaLinux:/home/res/audio# cp /mnt/extsd/testSound/test100.wav /home/res/au
dio/startup.wav
root@TinaLinux:/home/res/audio# sync
輸入reboot
,重啟后即可通過喇叭聽到更換后的開機音樂。
-
音頻
+關注
關注
29文章
2903瀏覽量
81951 -
Linux
+關注
關注
87文章
11345瀏覽量
210402 -
AI
+關注
關注
87文章
31534瀏覽量
270343 -
開發板
+關注
關注
25文章
5121瀏覽量
98202 -
錄音
+關注
關注
0文章
9瀏覽量
3009
發布評論請先 登錄
相關推薦
1.100ASK_V853-PRO 環境配置及編譯燒寫
![1.100<b class='flag-5'>ASK_V853-PRO</b> 環境配置及編譯燒寫](https://file.elecfans.com/web2/M00/A4/01/poYBAGRbDdCASDpCAAD8vM6nc4U314.png)
2.100ASK-V853-PRO開發板支持WIFI和有線網卡
![2.100<b class='flag-5'>ASK-V853-PRO</b><b class='flag-5'>開發板</b><b class='flag-5'>支持</b>WIFI和有線網卡](https://file.elecfans.com/web2/M00/A4/0A/poYBAGRbPSGAK2nsAASRttIg-2k685.png)
6.100ASK_V853-PRO開發板支持MIPI攝像頭
![6.100<b class='flag-5'>ASK_V853-PRO</b><b class='flag-5'>開發板</b><b class='flag-5'>支持</b>MIPI攝像頭](https://file.elecfans.com/web2/M00/A4/32/poYBAGRcTbaAeZuuAALAgVeFgKQ627.png)
9.100ASK_V853-PRO開發板支持E907小核開發
![9.100<b class='flag-5'>ASK_V853-PRO</b><b class='flag-5'>開發板</b><b class='flag-5'>支持</b>E907小核<b class='flag-5'>開發</b>](https://file.elecfans.com/web2/M00/A4/75/poYBAGRdpUGAYIkDAAKVeCYfPdA120.png)
12. 100ASK-V853-PRO開發板 MIPI屏測試指南
![12. <b class='flag-5'>100ASK-V853-PRO</b><b class='flag-5'>開發板</b> MIPI屏測試指南](https://file.elecfans.com/web2/M00/AD/13/pYYBAGSMES6AGP9xAA7T9bwlfXE611.png)
stm32mp157開發板聲卡接口測試 相關資料推薦
【開源硬件大賽】基于全志V853設計的全功能BTB學習開發板
100ASK_全志V853-PRO開發板 環境配置及編譯燒寫
100ASK_V853-PRO開發板支持人形檢測與人臉檢測
![<b class='flag-5'>100ASK_V853-PRO</b><b class='flag-5'>開發板</b><b class='flag-5'>支持</b>人形檢測與人臉檢測](https://file1.elecfans.com/web2/M00/82/55/wKgaomRJ5YuAE6bvAACBLlLsIDA986.png)
瑞芯微主板/開發板Linux系統播放音頻方法,觸覺智能RK3562開發板演示
![瑞芯微主板/<b class='flag-5'>開發板</b>Linux系統<b class='flag-5'>播放音頻</b>方法,觸覺智能RK3562<b class='flag-5'>開發板</b>演示](https://file1.elecfans.com/web3/M00/02/33/wKgZO2dbrJmACGv1AAB7yOSAvVY164.png)
評論