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

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 这个返回值会有两列, 我们取第一列即可

在这里插入图片描述

1.4 播放音频

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值