Linux音频录制和播放

目标:我想在Ubuntu系统上实现音频录制、播放或者甚至在线实时检测我的说话声音

安装依赖

$ sudo apt-get install alsa-utils alsa-tools alsa-tools-gui alsamixergui -y

查看音频设备

$ cat /proc/asound/cards

查看音频输入设备

$ arecord -l

查看音频输出设备

$ aplay -l

录音

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

播放

$ aplay test.wav

利用pyaudio模块来录音和播放

import pyaudio

audio = pyaudio.PyAudio()

print(audio.get_default_output_device_info())

但是会出现一个bug:IOError: [Errno -9996] Invalid input device (no default output device)或者OSError: No Default Output Device Available
原因:是因为使用anaconda安装pyaudio和portaudio时,通常会出现此问题。
解决方案1:

$ conda install nwani::portaudio nwani::pyaudio

解决方案2:

$ conda remove pyaudio

$ conda remove portaudio

$ pip install pyaudio