首先, 我们需要安装sounddevice
库, 利用pip
可以很简单的完成
打开命令行输入
pip3 install sounddevice
安装完之后, 我们将其导入
import sounddevice as sd
这里我先把代码放出, 下面的代码
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()
我们可以利用以下方法属性来查询设备
sounddevice.query_devices()
: 查询所有可用设备, 返回一个包含可用设备信息字典的元组sounddevice.default.device
: 查询默认设备, 是一个数组,有两个值
sounddevice.query_devices()
中的索引代表默认输入设备,sounddevice.query_devices()
中的索引,代表默认输出设备利用操作系统自带的录音机, 确保当前默认设备可用, 这里不多说
我们利用rec()
方法进行录音,返回值为一个采样的数组, 这个方法会立即返回, 在后台进行录音, 返回值之后才会进行填充, 我们可用利用wait()
方法, wait()
方法会在录音完成之后返回
myrecording = sd.rec(int(duration * fs), samplerate=fs, channels=2)
wait()
你可以利用
sounddevice.default.device='设备名称'
的方式来指定输入设备
当然, 因为返回值是数组, 你也可用利用诸如matlplotlab
的库把他给显示出来
import matplotlib.pyplot as plt
#此处省略部分代码
plt.plot(myrecording[:,1])
plt.show()
注意,因为我们指定了两个信道, 所以myrecording 这个返回值会有两列, 我们取第一列即可
利用sd.play()
来播放音频, 同样的, 这个方法也会立即返回, 需要调用wait()
方法
#方法会立即返回, 但是会在后台继续播放
sd.play(myrecording, fs)
# 调用wait(), wait()会在播放完成后才返回
sd.wait()