I have an n->n
seq2seq LSTM that takes a sequence of length n
and produces a sequence of length n
. The sequences I am dealing with are audio signals. I am trying to use an LSTM to "de-noise" the audio.
So in a perfect world, for 1 second of audio at a sampling rate of 16000Hz, I would have an input sequence where n=16000
, and then the LSTM would output the "de-noised" audio sequence of length n=16000
. However, this takes far too long to train. Also, what if the audio is longer than 1 second?
So, it seems like the best thing to do would be train an LSTM on small chunks of 1 second of audio, say n=800
. However, it is pointless if the LSTM de-noises the first 50ms, then the next 50ms etc. independently of each other. I could perhaps have some sliding window that extracts chunks that overlap with the previous chunk. But I am not sure how I would aggregate the outputs into a final 1 second audio clip...
How can I work around this long sequence problem? If I do break it down into subsequences, how do I tell the LSTM to retain information about the previous subsequence, or how do I aggregate the outputs of a sliding window?