Hi Amirsina,
First of all, great project!
I noticed in the mfcc the last frame_length of the signal buffer is always missing. When the number of stack frames is calculated (in the function stack_frames), the sample_buffer is decreased with the frame_length before it is divided in a number of stack frames.
See snippet:
|
numframes = (int(math.ceil((length_signal |
|
- frame_sample_length) / frame_stride))) |
On a 1 second sample buffer this is hardly noticeable, but if we run the mfcc on smaller buffers this becomes significant.
If the calculation is done in this way:
numframes = (int(math.ceil((length_signal
- (frame_sample_length - frame_stride)) / frame_stride)))
The full sample buffer is used if frame_sample_length equals the frame_stride and adjusted correctly on differences between the frame_length and frame_stride.
Hi Amirsina,
First of all, great project!
I noticed in the mfcc the last frame_length of the signal buffer is always missing. When the number of stack frames is calculated (in the function stack_frames), the sample_buffer is decreased with the frame_length before it is divided in a number of stack frames.
See snippet:
speechpy/speechpy/processing.py
Lines 103 to 104 in 4ece793
On a 1 second sample buffer this is hardly noticeable, but if we run the mfcc on smaller buffers this becomes significant.
If the calculation is done in this way:
The full sample buffer is used if frame_sample_length equals the frame_stride and adjusted correctly on differences between the frame_length and frame_stride.