树莓派利用sox录制mp3文件

因为树莓派音频口不支持输入,所以录音需要一个USB声卡或者HIFI扩展卡。网上10元左右的免驱USB声卡即可。但是低端USB声卡普遍都会有一个明显的底噪。

什么是sox

SoX(即 Sound eXchange)是一个跨平台(Windows,Linux,MacOS 等)的命令行实用程序,可以将各种格式的音频文件转换为需要的其他格式。
SoX 还可以对输入的音频文件应用各种效果,也支持在大多数平台上播放和录制音频文件。
介绍可以看下文:
SoX — 音频处理工具里的瑞士军刀

安装sox及其mp3库

sudo apt-get install sox libsox-fmt-mp3

如果需要支持所有可用音频格式那么应该这样安装:

sudo apt-get install libsox-fmt-all

录音和播放

如果USB声卡已经设置为默认声卡,那么最简单的方法就是

rec test.mp3
play test.mp3

也可以指定录音和播放设备:

sox -t alsa plughw:1,0 test.mp3

plughw:1,0是USB声卡设备编号,可以通过如下命令查看

arecord -l
#或者
aplay -l
#或者
cat /proc/asound/cards

也可以通过如下python脚本获取

import pyaudio
p = pyaudio.PyAudio()
for ii in range(p.get_device_count()):
	print(p.get_device_info_by_index(ii).get('name'))
将编号为1的USB声卡设置为默认的方法(Pi 4B测试通过)
  • 方法1
    编辑~/.asoundrc
    输入以下内容
defaults.ctl.card 1
defaults.pcm.card 1
  • 方法2
    在user profile中加入
export AUDIODEV=hw:1,0

Note:我没用这个方法sox也默认使用了USB声卡作为录音和回放设备,可能与我安装了pulseaudio有关。卸载pulseaudio之后就需要指定USB声卡了。

测试声卡(编号1):
speaker-test -D plughw:1 -c2 -t wav
录制固定长度的音频片段(如 30 分钟)并保存在指定文件中:
sox -t alsa plughw:1 myrec.wav trim 0 00:30:00
持续录制很长时间的音频,保存在几个不同的文件中,每隔一小时保存一次:
sox -t alsa plughw:1 myrec.wav trim 0 01:00:00 : newfile : restart
使用arecord指定设备(-D plughw:1,0)双声道录音(-c 2)并指定长度(-d 5)和采样率(-r 44100)
arecord -D plughw:1,0 -d 5 -c 2 -r 44100 -f s16_LE helloworld.wav

如果sox或者rec命令运行时遇到如下提示:

rec WARN alsa: can't encode 0-bit Unknown or not applicable

可以运行如下命令解决:

export AUDIODRIVER=alsa
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值