我之前从事数字语音识别有一段时间了,但是训练算法要花很多时间,但是效果并不理想。后来发现自己忽略了音频预处理这一步,于是转而学习一些简单的信号处理算法。以下是对以下内容的简要介绍:

放大声音

音频去噪

静音剪切

Git库的源代码和演示代码的地址将在文章的最后给出。有需要的同学要自带。

基本概念

数字信号

数字信号是通过采样连续模拟信号获得的离散函数。可以简单的看成是以时间为下标的数组。比如x,n是整数。例如,下图是正弦信号:

对于任何音频文件,其实都是这样存储的。比如下面是英文单词“skip”对应的一个信号:

汉宁窗

三角窗

我们将转换后的窗口函数与原始信号相乘,以获得信号的“帧”:

w*x

例如,长度为22.6毫秒的汉宁窗口被添加到“跳过”信号的中间部分,以获得帧信号:

可以看出,除了有限的间隔之外,加窗信号的所有部分都是0。

离散傅里叶变换可以应用于帧信号,以获得该帧中频率和能量的分布信息。

如果我们按照上面的方法把信号分成一帧,然后用离散傅里叶变换把每一帧变换到频域,最后在频域把每一帧的图像拼接起来,横坐标代表时间,纵坐标代表频率,颜色代表能量强度,那么就可以构造出所谓的谱图。例如,对应于“跳过”发音的信号的频谱图如下:

从几帧信号中,我们可以恢复出原始信号。只要我们适当地选择窗口大小和窗口之间的平移距离,我们就可以得到...,w ,w ,w ,w ,...,所以k的和是:

总和 = 1

因此,可以通过简单地叠加每个帧信号来恢复原始信号:

sum = x

最后要注意的是,窗函数也可以在频域作用于信号,使其可以取出信号的某个频带。

这里有三种音效。

1.扩大

要放大信号强度,只需增加信号的“幅度”。例如,给定一个信号x,用a >: 1相乘,你得到一个更大的增强信号:

a*x

同样,系数0

2.去噪

对于白噪声,我们可以简单地用“移动平均滤波器”来去除。虽然这样会在一定程度上降低声音的强度,但是效果确实不错。但是对于成分复杂的噪声,特别是频带内能量分布不均匀的噪声,需要采用以下噪声门技术,可以看作是一种“多带通滤波器”。

这种特殊效果的基本思想是对噪声样本进行建模,然后降低待去噪信号中噪声的分贝。

更具体地说,噪声门g,...,g分别设置在若干频带f上,...,并且每个门具有相应的阈值,即t,...,t。这些阈值是根据噪声样本确定的。例如,当通过门g的信号强度超过阈值t时,门将被关闭,否则,门将被重新打开。只有强度大于噪音的声音,通常是我们想要的声音,才会保留在最终的信号中。

为了避免噪声门的打开和关闭引起信号的剧烈变化,作者采用sigmoid函数对信号进行平滑,即噪声门在打开和关闭状态之间连续变化,信号通过率也在1.0和0.0之间均匀变化。

在实现中,我们使用汉宁窗来帧化信号。然后,对于每一帧,通过三角窗将信号分成几个频带。在以这种方式处理噪声样本之后,可以获得对应于信号的每个频带的阈值。然后对原始信号进行这样的处理,根据每一帧和每一频带的信号强度与相应阈值的差值,计算相应噪声门的开度和关度,即通过信号的强度。最后,通过简单地叠加每个频带和每个帧的通过信号来获得降噪信号。

例如,原始“跳过”语音信号的频谱如下:

可见噪声较多。采集0.25秒前的声音作为噪声样本,对信号进行去噪处理,得到去噪后信号的频谱如下:

可以清楚地看到,大部分噪声已经去除,而语音部分仍然完好无损,强度没有减弱,这是移动平均滤波器无法实现的。

3.静音切割

经过上述音频降噪处理后,我们可以进一步去除冗余静音。

剪切的原理很简单。首先,信号由汉宁窗构成。如果帧的信号强度太小,则丢弃该帧。最后将保留的帧叠加,得到去掉静音部分的信号。

例如,降噪后的“跳过”语音信号被无声剪切,新信号的频谱图如下:

维基百科词条-噪音之门

Audacity,一款开源音频处理软件

我的GitHub

●●●

回复以下关键词查看相应内容

美国游戏/数学建模|学校日历|成绩单/推荐信

医保/南院门诊|毕业/典礼/留言

大学服务中心|辅导员|校车|工作

回复老师名字获取相应信息

●●

1.《扩音 Python | 简单的扩音,音频去噪,静音剪切》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《扩音 Python | 简单的扩音,音频去噪,静音剪切》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1667322.html