Delay less conv pulsification#840
Conversation
…ing" This reverts commit 798f274.
|
Valid convolution: Making sense of ∆ is super hard (and not necessary super helpful). This is not what Delay outputs when it has overlap. It actually outputs ∂+overlap. But it does On top of that, how does the convolution computes it actual delay? Delay semantics would suggest Also what is the first "valid" frame if the overlap is bigger than the pulse? In that case, the So why worry about ∆ ? Because of padding. Simple generic approach to padding, treat it separately, replacing: |
|
Side-effect of this approach to Padding: it adds extra delay in the output. With a "SAME" convolution it looks like this: Convolution is delayed by 2, while the first valid output frame only needs two frames of input so could be computed with only a delay of 1. And with a "padded causal" convolution, we are actually making it worse. In this case, all padding is put to the left so the first convolution is computed on [0, 0, first frame]. We still generate a delay of 2, while the first frame can actually be computed as soon as the first round, without additional delay. |
|
Strategy for delay-less translation: Conv(padding=causal) Should Delay start outputting something obviously invalid as a delay when there is overlap ? And convolution "know" its output delay and just ignore the input delay ? |
No description provided.