google / visqol

Perceptual Quality Estimator for speech and audio
Apache License 2.0
641 stars 118 forks source link

Gammatone optimization using Eigen matrix operations #115

Open terpste opened 2 weeks ago

terpste commented 2 weeks ago

Hi everyone, I am opening this PR to propose some gammatone filterbank optimizations using matrix operations with the Eigen library.

The proposed changes have two parts:

The proposed changes show bigger runtime improvements for shorter input files, and from our measurements we can see approx. 1.5x faster runtime for a 15" input, up to 2x for a 3" input file.

If we also combine this improvement with --search_window_radius 0 and --disable_realignment (when reference and degraded have no inter-frame lag), we could get approx. 5x faster runtimes for a 15" input.

The changes in this PR are a bit lengthy so I am also opening PR #116 with only the first part that replaces Armadillo with Eigen to keep it more contained and make the review process a bit easier. I also opened https://github.com/terpste/visqol/pull/6 only for comparison purposes, to highlight only the gammatone filterbank additions.