树莓派音频使用

本文详细介绍了如何在树莓派上配置音频,包括设置默认声卡、测试录音和播放、识别并切换不同声卡设备、以及处理重启后设备ID变化的问题。还提供了查看和操作音频设备的实用命令和示例代码。
摘要由CSDN通过智能技术生成

树莓派音频配置使用

配置默认声卡为指定声卡

1.在$HOME下新建 .asoundrc

cd $HOME
nano .asoundrc

输入以下内容

defaults.ctl.card 1
defaults.pcm.card 1

1指的是指定声卡的card号,可用cat /proc/asound/cards查看

2.测试录音

arecord -d 10 text.wav
aplay text.wav

3.播音和录音为不同声卡时,可以参考以下配置,修改~/.asoundrc

pcm.!default {
    type asym
    playback.pcm {
        type plug
        slave.pcm "hw:0,0"
    }
    capture.pcm {
        type plug
        slave.pcm "hw:1,0"
}
其中,hw:1,0表示card 1 device 0

4.测试指定声卡

arecord -D "plughw:5,0" -d 3 text.wav
aplay -D "plughw:1,0" text.wav

5.重启Card编号改变处理
Linux设备如果插拔和重启的时候, 声卡设备的 id 分配是完全靠内核心情的, 你这次调用的是 id 1的声卡设备, 下次就有可能变成 0 和 2等其他 id. 遇到这种情况, 如果声卡设备只有麦克风而没有扬声器(比如USB摄像头), 就会报 jack server 的错误, 无法正常发出声音.怎么办?
/proc/asound/pcm 文件中会有所有声卡设备的 “设备号-序列号” 的信息, 我们只用
打开 /proc/asound/pcm 文件, 过滤出具有 playback 1 的设备
提取出 “设备号-序列号” 的信息
通过 mpg123 指定 设备号-序列号 信息, 即可播放指定声卡硬件播放声音
示例代码如下:

def get_sound_card_id():
    try:
        with open("/proc/asound/pcm") as f:
            s = f.read()
            for line in s.split("\n"):
                if "playback 1" in line:
                    number = line.split(":")[0].split("-")
                    return ("%s,%s" % (int(number[0]), int(number[1])))
    except:
        return "0,0"

def play_sound(sound_file):
    sound_card_id = get_sound_card_id()

    play_command = "mpg123 -o alsa -a hw:%s %s" % (sound_card_id, sound_file)
    subprocess.Popen(play_command, shell=True)

借鉴链接:https://www.jianshu.com/p/f414b85b9e71/

音频

1.查看连接设备

cat /proc/asound/cards
  1. 查看usb设备
lsusb

3.列出所有音频输出设备

aplay -l

4.列出所有音频输入设备

arecode -l

5.录音

arecord -D "plughw:1,0"/hw:1,0 -f S16_LE -r 16000 -d 5 -t wav test.wav
指令含义
-D选择设备名称
-f录音格式
-r采样率
-d录音时长
-t录音格式
text.wav文件名

6.播放音频

aplay 1.wav

7.调节音量

alsamixer

按F6选择设备,F5是将音频输入输出设备都展示出来,按方向键调整

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值