语音信号处理2:数字滤波器 Digital Filters

2024-09-01 00:32

本文主要是介绍语音信号处理2:数字滤波器 Digital Filters,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考:
The Scientist and Engineer’s Guide to Digital Signal Processing
Multimedia Signal Processing: Theory and Applications in Speech, Music and Communications

Classification

欲知细节,先识大体,看看数字滤波器都有哪些种类吧。
The Scientist and Engineer’s Guide to Digital Signal Processing 中是这样划分的:
filters classification
解释一下上面这张图:
首先,滤波器根据其用途被分为了三类:用在时域中、用在频域中和自定义。当信息被编码在信号的波形中时,使用时域的滤波器去进行诸如平滑、去偏置或整形等处理。而当信息被包含在信号的幅值、频率或者相位中时,使用频域的滤波器去提取某个频段以进行分析。自定义滤波器则用来做一些更加特殊而精巧的处理,比如反卷积(deconvolution)。
而根据滤波器的实现方式又有两种划分:通过卷积实现 或者 通过递归实现。通过卷积实现的滤波器就是FIR滤波器,通过递归实现的滤波器就是IIR滤波器。

The use of a digital filter can be broken into three categories: time domain, frequency domain and custom. As previously described, time domain filters are used when the information is encoded in the shape of the signal’s waveform. Time domain filtering is used for such actions as: smoothing, DC removal, waveform shaping, etc. In contrast, frequency domain filters are used when the information is contained in the amplitude, frequency, and phase of the component sinusoids. The goal of these filters is to separate one band of frequencies from another. Custom filters are used when a special action is required by the filter, something more elaborate than the four basic responses (high-pass, low-pass, band-pass and band-reject).
Digital filters can be implemented in two ways, by convolution (also called finite impulse response or FIR) and by recursion (also called infinite impulse response or IIR).

Multimedia Signal Processing: Theory and Applications in Speech, Music and Communications 中的划分方法则是这样的:

Depending on the form of the filter equation and the structure of implementation, filters may be broadly classified into the following classes:
(1)Linear filters versus nonlinear filters.
(2)Time-invariant filters versus time-varying filters.
(3)Adaptive filters versus non-adaptive filters.
(4)Recursive versus non-recursive filters.
(5)Direct-form, cascade-form, parallel-form and lattice structures.

前3点略去不表,第4点其实也就是根据实现方式来划分为FIR和IIR两种,第5点讲的是滤波器的结构,有直接型、级联型、并行型和lattice型。

最常用的分类还是分为FIR和IIR。

BTW,总结一下各种名称:
FIR滤波器,又名非递归滤波器(non-recursive filter)、全零点滤波器(all-zero filter)、前馈滤波器( feed-forward filter)或者滑动平均滤波器(moving average filter,MA filter,通常见于统计信号处理相关的文献中 )。
IIR滤波器,又名递归滤波器(recursive filter)、极点-零点滤波器(pole-zero filter)、反馈滤波器(feedback filter)或者自回归移动平均滤波器(auto-regressive-moving-average filter,ARMA filter,通常见于统计信号处理相关的文献中 )。还有一个比较常见的名词——双二阶滤波器(biquad filter)指的是二阶的IIR滤波器。

Alternative Methods for Description of Filters

要想学习某个东西,肯定要知道如何去描述它。那么如何描述一个滤波器?有四种方式:

1.时域,输入信号与输出信号的关系,差分方程
举个栗子:某个一阶滤波器
y ( m ) = a y ( m − 1 ) + x ( m ) y(m) = ay(m-1)+x(m) y(m)=ay(m1)+x(m)
其中,y(m)是滤波器输出,x(m)是滤波器输入,a是滤波器系数。

2.冲激响应形式,用滤波器对冲激信号的响应来描述
上面栗子中的滤波器 to a discrete-time impulse input at at m=0 又可以表示为
y ( m ) = a m y(m) = a^m y(m)=am

Impulse response is useful because: (i) any signal can be viewed as the sum of a number of shifted and scaled impulses, hence the response a linear filter to a signal is the sum of the responses to all the impulses that constitute the signal, (ii) an impulse input contains all frequencies with equal energy, and hence it excites a filter at all frequencies and (iii) impulse response and frequency response are Fourier transform pairs.

3.传递函数形式,零点和极点
还是上面的栗子:
H ( z ) = 1 / ( 1 − a z − 1 ) H(z)=1/(1-az^{-1}) H(z)=1/(1az1)

4.频率响应形式

The frequency response of a filter can be obtained by taking the Fourier transform of the impulse response of the filter, or by simple substitution of the frequency variable ejw for the z variable z=ejw in the z-transfer function as H(z=ejw) = Y(ejw)/X(ejw).

另外一些不错的资料:
Introduction to Digital Filters,Stanford的Julius Orion Smith写的online book
Introduction to Signal and System, University of Colorado Colorado Springs 的ECE2610课程,Lecture Notes写得不错

这篇关于语音信号处理2:数字滤波器 Digital Filters的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125437

相关文章

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

Go信号处理如何优雅地关闭你的应用

《Go信号处理如何优雅地关闭你的应用》Go中的优雅关闭机制使得在应用程序接收到终止信号时,能够进行平滑的资源清理,通过使用context来管理goroutine的生命周期,结合signal... 目录1. 什么是信号处理?2. 如何优雅地关闭 Go 应用?3. 代码实现3.1 基本的信号捕获和优雅关闭3.2

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time