利用Python进行语音信号处理(一. 录制一段音频并且回放,绘制图像)

文章目录

    • 0. 安装sounddevice库
      • 0.1 导入包
      • 0.2 代码
    • 1. 录音
      • 1.1 确认当前默认设备可用
      • 1.2 进行录音
      • 1.3 显示图像
      • 1.4 播放音频

0. 安装sounddevice库

首先, 我们需要安装sounddevice库, 利用pip 可以很简单的完成
打开命令行输入

pip3 install sounddevice

0.1 导入包

安装完之后, 我们将其导入

import sounddevice as sd

0.2 代码

这里我先把代码放出, 下面的代码

  1. 录音5秒(可以自行更改测试)
  2. 并且显示图像
  3. 关闭图像后播放音频
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 这个返回值会有两列, 我们取第一列即可

利用Python进行语音信号处理(一. 录制一段音频并且回放,绘制图像)_第1张图片

1.4 播放音频

利用sd.play()来播放音频, 同样的, 这个方法也会立即返回, 需要调用wait()方法

#方法会立即返回, 但是会在后台继续播放
sd.play(myrecording, fs)
# 调用wait(), wait()会在播放完成后才返回
sd.wait()

你可能感兴趣的:(Python语音信号处理,数字信号处理)