0. 安装sounddevice库
首先, 我们需要安装sounddevice
库, 利用pip
可以很简单的完成
打开命令行输入
pip3 install sounddevice
0.1 导入包
安装完之后, 我们将其导入
import sounddevice as sd
0.2 代码
这里我先把代码放出, 下面的代码
- 录音5秒(可以自行更改测试)
- 并且显示图像
- 关闭图像后播放音频
import sounddevice as sd
import matplotlib.pyplot as plt
fs = 44100 # 指定采样频率
duration = 5 # 指定持续时间
#方法会立即返回, 但是会在后台继续的录音
myrecording = sd.rec(int(duration * fs), samplerate=fs, channels=2)
# 调用wait(), wait()会在播放完成后才返回
sd.wait()
print('语音信号采集结束\nVoice signal picked finished')
print('开始播放:\n Start to play:')
print(myrecording[:,1])
plt.plot(myrecording[:,1])
plt.show()
#方法会立即返回, 但是会在后台继续播放
sd.play(myrecording, fs)
# 调用wait(), wait()会在播放完成后才返回
sd.wait()
1. 录音
1.1 确认当前默认设备可用
我们可以利用以下方法属性来查询设备
sounddevice.query_devices()
: 查询所有可用设备, 返回一个包含可用设备信息字典的元组sounddevice.default.device
: 查询默认设备, 是一个数组,有两个值- 第一个值为在
sounddevice.query_devices()
中的索引代表默认输入设备, - 第二个值为在
sounddevice.query_devices()
中的索引,代表默认输出设备
- 第一个值为在
利用操作系统自带的录音机, 确保当前默认设备可用, 这里不多说
1.2 进行录音
我们利用rec()
方法进行录音,返回值为一个采样的数组, 这个方法会立即返回, 在后台进行录音, 返回值之后才会进行填充, 我们可用利用wait()
方法, wait()
方法会在录音完成之后返回
myrecording = sd.rec(int(duration * fs), samplerate=fs, channels=2)
wait()
你可以利用
sounddevice.default.device='设备名称'
的方式来指定输入设备
1.3 显示图像
当然, 因为返回值是数组, 你也可用利用诸如matlplotlab
的库把他给显示出来
import matplotlib.pyplot as plt
#此处省略部分代码
plt.plot(myrecording[:,1])
plt.show()
注意,因为我们指定了两个信道, 所以myrecording 这个返回值会有两列, 我们取第一列即可
1.4 播放音频
利用sd.play()
来播放音频, 同样的, 这个方法也会立即返回, 需要调用wait()
方法
#方法会立即返回, 但是会在后台继续播放
sd.play(myrecording, fs)
# 调用wait(), wait()会在播放完成后才返回
sd.wait()