pyAudioKits是基于librosa和其他库的强大Python音频工作流支持。
通过pip安装:
pip install pyAudioKits
本项目的GitHub地址,如果这个项目帮助到了你,请为它点上一颗star,谢谢你的支持!如果你在使用过程中有任何问题,请在评论区留言或在GitHub上提issue,我将持续对该项目进行维护。
import pyAudioKits.record
pyAudioKits提供了音频录制的api。首先运行底下这段代码,录制一段5s的音频。
record = pyAudioKits.record.record(44100,5) #以44100的采样率录制5s音频
record.plot() #绘制音频波形
'''
outputs:
********** Please speak in 5 seconds.
********** End of recording.
'''

声音是由于介质的振动产生的,而振动的模式可以被描述为随机过程。音频信号的本质是随机过程
{
X
(
t
)
,
−
∞
<
t
<
∞
}
\{X(t),-∞
现实世界中的音频信号是模拟的,具有取值连续、时间连续的、无限而非因果(现实世界的声音从开始录制前就存在,在停止录制后依然在持续)的特点。为了能够在计算机中表示和储存音频信号,在进行音频的录制过程中,进行了三个操作:
一是量化,所谓量化就是要用有限的比特数去表示 x ( t ) , ∀ t x(t),\forall t x(t),∀t的值,从而解决取值连续的问题。而在现代计算机系统中,float、double等数据类型已经可以让音频量化做到相当精细,造成的影响一般可以忽略。
二是采样,所谓采样,就是让时域被因子
T
s
T_s
Ts归一化:
{
x
[
n
]
=
x
(
n
T
s
)
,
−
∞
<
n
<
∞
}
\{x[n]=x(nT_s),-∞
刚才我们录制音频使用的采样率为44100Hz,采样周期就是(1/44100)s。
record.sr #显示采样率
'''
outputs:
44100
'''
采样率 1 / T s 1/T_s 1/Ts为44100Hz。
三是截断,比如录制音频的时长为5s,就相当于是只取
{
x
(
t
)
,
0
≤
t
<
5
}
\{x(t),0≤t<5\}
{x(t),0≤t<5}再进行采样和量化得到
{
x
[
n
]
,
0
≤
n
<
44100
∗
5
}
\{x[n],0≤n<44100*5\}
{x[n],0≤n<44100∗5}(一般将开始采集模拟信号的时间
t
t
t设为0)。在表示的时候认为先截断得到
{
x
(
t
)
,
0
≤
t
<
T
s
N
m
a
x
}
\{x(t),0≤t
len(record) #获取音频样本数
'''
outputs:
220500
'''
音频样本数 N m a x N_{max} Nmax为220500。我们也可以以样本数为横轴画出波形图。
record.plot(xlabel="n")

record.getDuration()
'''
outputs:
5.0
'''
音频持续时间 T s N m a x T_sN_{max} TsNmax为5s,符合我们的表达式。
另外,截断也等价于首先采样得到
{
x
d
[
n
]
,
−
∞
≤
n
<
∞
}
\{x_d[n],-∞≤n<∞\}
{xd[n],−∞≤n<∞},再乘上一个矩形窗
w
[
n
]
=
{
1
0
≤
n
<
N
m
a
x
0
o
t
h
e
r
s
w[n]=
经过量化、采样、截断后,音频信号就被表示为了能在计算机中储存的、以向量方式表示的数字音频信号,而采样率、持续时间等则是音频信号最基本的属性。