speechbrain.utils.filter_analysis 模块
实现了用于建模和组合滤波器属性的实用工具,例如计算窗口大小、步长等如何作用,这对于流式传输等特定用例可能很有用。
- 作者
Sylvain de Langen 2024
摘要
类
模拟随时间推移表现得像滤波器(例如卷积、fbanks 等)的事物的属性。 |
函数
返回一系列堆叠滤波器的滤波器属性。 |
参考
- class speechbrain.utils.filter_analysis.FilterProperties(window_size: int, stride: int = 1, dilation: int = 1, causal: bool = False)[source]
基类:
object
模拟随时间推移表现得像滤波器(例如卷积、fbanks 等)的事物的属性。
- window_size: int
滤波器的大小,即单个输出所依赖的输入帧数。除了扩张之外,假定窗口在连续的帧块上操作。
示例:
size = 3, stride = 3 out <-a-> <-b-> <-c-> in 1 2 3 4 5 6 7 8 9
- stride: int = 1
滤波器的步长,即从一个输出帧到下一个输出帧跳过的输入帧数(与窗口大小或扩张无关)。
示例:
size = 3, stride = 2 <-a-> <-b-> <-d-> out <-c-> in 1 2 3 4 5 6 7 8 9
- dilation: int = 1
滤波器的扩张率。窗口将考虑每 n 个(n=扩张率)输入帧。通过扩张,滤波器仍将观察
size
个输入帧,但窗口将跨越更多帧。扩张主要与“带孔”卷积相关。默认扩张率为 1,实际上不执行扩张。
示例:
size = 3, stride = 1, dilation = 3 <-------> dilation - 1 == 2 skips a a a | b | b | b | | c | | c | | c | | | d | | d | | d | | | | e | | e | | .. in 1 2 3 4 5 6 7 8 9 10 .. <-> stride == 1
- causal: bool = False
滤波器是否是因果的,即输出帧是否只依赖于过去的输入帧(索引较低或相等)。
在某些情况下,例如 1D 卷积,这可以通过在将滤波器应用于输入张量之前,简单地在滤波器左侧插入填充来实现。
示例:
size = 3, stride = 1, causal = true <-e-> <-d-> <-c-> b-> a in 1 2 3 4 5
- static pointwise_filter() FilterProperties [source]
返回一个简单滤波器的滤波器属性,其输出帧仅依赖于各自的输入帧。
- with_on_top(other, allow_approximate=True)[source]
考虑滤波器链
other(self(x))
,返回所得滤波器的重新计算属性。- 参数:
other (FilterProperties | any) – 要与
self
结合的滤波器。allow_approximate (bool, optional) – 如果为
True
(默认值),结果属性可能“悲观”,并在无法确定精确属性时表达虚假依赖,而不是出错。在堆叠非因果和因果滤波器时可能会出现这种情况。根据用例,这可能没问题,但像has_overlap
这样的函数可能会错误地开始返回True
。
- 返回值:
组合滤波器的属性。
- 返回类型:
- speechbrain.utils.filter_analysis.stack_filter_properties(filters, allow_approximate=True)[source]
返回一系列堆叠滤波器的滤波器属性。如果序列为空,则返回一个空操作滤波器(大小和步长为 1)。
- 参数:
filters (FilterProperties | any) – 要组合的滤波器,例如建模
c(b(a(x)))
的[a, b, c]
。如果一个项目不是FilterProperties
的实例,则尝试在其上调用.get_filter_properties()
。allow_approximate (bool, optional) – 参阅
FilterProperties.with_on_top
。
- 返回值:
ret – 滤波器序列的属性
- 返回类型: