树莓派学习之旅(2)— 使用USB声卡进行录音

树莓派学习之旅(2)— 使用USB声卡进行录音

一、USB声卡的接入

在插入USB声卡之前,我们使用 lsusb命令查看一下USB设备:
在这里插入图片描述
然后把USB声卡插上,再使用lsusb查看一下,可以看到,多出来的那个就是USB声卡:
在这里插入图片描述
然后使用arecord -l可以列出所有录音设备,可以看到,我们的USB声卡设备
在这里插入图片描述
而使用aplay -l可以列出所有播放设备
在这里插入图片描述
参考自:https://segmentfault.com/a/1190000013854294

二、USB声卡的使用

直接执行Linux自带的录音命令,录制一段5秒的声音进行测试

arecord -D "plughw:1,0" -f S16_LE -r 16000 -d 5 -t wav test.wav

其中 hw:1,0 表示card 1 , device 0,即我们的USB声卡,arecord 其他的参数如下:

指令含义本指令含义
-D选择设备名称使用外接USB声卡"plughw:1,0"
-f录音格式S16_LE代表有符号16位小端序
-r采样率16000是16KHz采样
-d录音时长录音5秒
-t录音格式wav格式
test.wav文件名,可以包含路径文件名字叫test.wav

如果声音过小,输入命令 alsamixer,来对音量进行调整,按下F6,选择USB声卡,
在这里插入图片描述
然后按下F5,将录音和播音设备都展示出来,因为我的USB声卡只支持录音,所以播音的音量无法调整,我们将录音的音量按上键调高
在这里插入图片描述
然后使用aplay命令来播放

aplay -D "plughw:0,0" test.wav

如果录音有问题,可能是缺少一些录音软件

 sudo apt-get install  alsa-utils ulseaudio

三、PyAudio安装即配置

如果没有安装pip3,使用如下命令安装

sudo apt-get install python3-pip

需要安装一些依赖库:

sudo apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 pulseaudio
sudo apt-get install libatlas-base-dev alsa-utils alsa-tools alsa-tools-gui alsamixergui -y

然后我们指定清华的源进行安装pyaudio,如果想要长期换源,可以参考:https://blog.csdn.net/qq_38113006/article/details/103541595#t7

pip3 install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple

在使用时我们需要配置默认使用的声卡,在$HOME下新建.asoundrc,
在这里插入图片描述
然后输入以下内容,其中,hw:1,0表示card 1 device 0,即我们的USB声卡

pcm.!default {
    type asym
    playback.pcm {
        type plug
        slave.pcm "plughw:0,0"
    }
    capture.pcm {
        type plug
        slave.pcm "plughw:1,0"
}

参考自:树莓派使用USB声卡设置

四、使用Pyaudio录音

参考我的Python博客:https://blog.csdn.net/qq_38113006/article/details/105694458#t3 编写Pyaudio录音程序:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: William

#使用pyaudio实现录音

import pyaudio,wave,sys
from tqdm import tqdm

TIME = 5               #录音时间

# 如果没有参数,就将输出文件设置为'01.wav'
if len(sys.argv) == 1:
    file_name = "01.wav"
else:
    file_name = sys.argv[1]

def main():
    # 实例化一个PyAudio对象
    pa = pyaudio.PyAudio()
    # 打开声卡,设置 采样深度为16位、声道数为2、采样率为16K、输入、采样点缓存数量为2048
    stream = pa.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=2048)
    # 新建一个列表,用来存储采样到的数据
    record_buf = []

    # 开始采样
    for i in tqdm(range( 8 * 5 )):          # 录音5秒
        audio_data = stream.read(2048)      # 读出声卡缓冲区的音频数据
        record_buf.append(audio_data)       # 将读出的音频数据追加到record_buf列表

    wf = wave.open(file_name, 'wb')          # 创建一个音频文件,名字为“01.wav"
    wf.setnchannels(1)                      # 设置声道数为2
    wf.setsampwidth(2)                      # 设置采样深度为2个字节,即16位
    wf.setframerate(16000)                  # 设置采样率为16000
    # 将数据写入创建的音频文件
    wf.writeframes("".encode().join(record_buf))
    # 写完后将文件关闭
    wf.close()
    # 停止声卡
    stream.stop_stream()
    # 关闭声卡
    stream.close()
    # 终止pyaudio
    pa.terminate()


if __name__ == '__main__':
    main()
### 如何在树莓派上测试录音功能 为了确保录音功能正常工作,在树莓派上可以通过一系列命令来验证USB麦克风是否被正确识别并能正常使用。 #### 安装必要的软件包 首先,需要安装一些用于管理音频设备的基础工具。这一步骤能够提供对ALSA(Advanced Linux Sound Architecture)的支持,从而更好地控制和配置声音硬件: ```bash sudo apt-get update sudo apt-get install alsa-utils alsa-tools alsa-tools-gui alsamixergui ``` 这些工具提供了图形界面以及命令行接口来进行详细的设置调整[^5]。 #### 检查麦克风连接状态 接着,利用`arecord -l`命令查看当前系统中所有的声卡及其子设备列表。这条命令有助于确认USB麦克风已经被Linux内核成功探测到,并分配了一个有效的编号。输出结果通常会显示类似这样的信息:“card X: DeviceName [Device Name], device Y: Subdevice Z”,其中X表示卡片号而Y/Z代表具体的输入/输出端口编号[^3]。 #### 测试录音效果 一旦确定了正确的设备ID之后,就可以尝试录制一段短时间的声音样本以检验实际性能。下面给出了一条简单的示例命令,它将以WAV格式保存一份名为test.wav的文件至家目录下: ```bash arecord -D plughw:X,Y -d 5 ~/test.wav ``` 这里需要注意替换掉命令中的`plughw:X,Y`部分,使其匹配前面查询所得的具体数值;同时还可以根据需求修改持续时间和目标路径等参数[^4]。 #### 播放回放已录制的内容 最后,使用aplay命令播放刚才创建好的音频文件,以此判断整个流程是否顺利完成并无明显失真现象发生: ```bash aplay ~/test.wav ``` 如果一切顺利的话,则说明树莓派上的录音装置运作良好,可以进一步开展更多基于语音的应用开发项目了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值