Skip to content

Latest commit

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Code Health

SRMRpy: a Python implementation of the SRMR Toolbox

The speech-to-reverberation modulation energy ratio (SRMR) is a non-intrusive metric for speech quality and intelligibility based on a modulation spectral representation of the speech signal. The metric was proposed by Falk et al. and recently updated for variability reduction and improved intelligibility estimation both for normal hearing listeners and cochlear implant users.

This toolbox is a Python port of SRMRToolbox, and includes the following implementations of the SRMR metric:

  1. The original SRMR metric (used as one of the objective metrics in the REVERB Challenge).
  2. The updated SRMR metric, incorporating updates for reduced variability.
  3. A fast implementation of the original SRMR metric, using a gammatonegram to replace the time-domain gammatone filterbank. The fast implementation can also optionally use the updates for reduced variability.

These implementations have been shown to perform well with sampling rates of 8 and 16 kHz. They will run for other sampling rates, but a warning will be shown as the metrics have not been tested under such conditions.

Setup

Simply run python setup.py install from inside the SRMRpy folder to install this package and its dependencies.

Usage

You can use SRMR as a function or with the srmr wrapper, which can be called from the command line. The parameters for the wrapper are the following:

positional arguments:
path Path of the file or files to be processed. Can also be
a folder.
optional arguments:
-h, --help show this help message and exit
-f, --fast Use the faster version based on the gammatonegram
-n, --norm Use modulation spectrum energy normalization
--ncochlearfilters N_COCHLEAR_FILTERS
Number of filters in the acoustic filterbank
--mincf MIN_CF Center frequency of the first modulation filter
--maxcf MAX_CF Center frequency of the last modulation filter

The srmr function accepts the same arguments, and the API is the following:

srmr(x, fs, n_cochlear_filters=23, low_freq=125, min_cf=4, max_cf=128, fast=True, norm=False)

where x is a Numpy array containing the signal and fs is an integer with the sampling rate.

References

If you use this toolbox in your research, please cite the reference below:

[TASLP2010] Tiago H. Falk, Chenxi Zheng, and Way-Yip Chan. A Non-Intrusive Quality and Intelligibility Measure of Reverberant and Dereverberated Speech, IEEE Trans Audio Speech Lang Process, Vol. 18, No. 7, pp. 1766-1774, Sept. 2010. doi:10.1109/TASL.2010.2052247

If you use the normalized version of the metric, please cite the following reference in addition to [TASLP2010]:

[IWAENC2014] João F. Santos, Mohammed Senoussaoui, and Tiago H. Falk. An updated objective intelligibility estimation metric for normal hearing listeners under noise and reverberation. In International Workshop on Acoustic Signal Enhancement (IWAENC). September 2014.

Likewise, if you use the CI-tailored version of the metric (with or without normalization), please cite this reference in addition to [TASLP2010]:

[TASLP2014] João F. Santos and Tiago H. Falk. Updating the SRMR metric for improved intelligibility prediction for cochlear implant users. IEEE Transactions on Audio, Speech, and Language Processing, December 2014. doi:10.1109/TASLP.2014.2363788.

About

Python implementation of the SRMR toolbox

Resources

Stars

134 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all \x3Cpre>\x3Ccode> blocks (function() { function addCopyButtons() { document.querySelectorAll('pre code').forEach(function(codeBlock) { if (codeBlock.parentElement.hasAttribute('data-copy-added')) return; codeBlock.parentElement.setAttribute('data-copy-added', 'true'); var btn = document.createElement('button'); btn.textContent = 'Copy'; btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;'; btn.onmouseover = function() { this.style.opacity = '1'; }; btn.onmouseout = function() { this.style.opacity = '0.7'; }; btn.onclick = function() { navigator.clipboard.writeText(codeBlock.textContent).then(function() { btn.textContent = 'Copied!'; setTimeout(function() { btn.textContent = 'Copy'; }, 1500); }); }; codeBlock.parentElement.style.position = 'relative'; codeBlock.parentElement.appendChild(btn); }); } addCopyButtons(); // Re-run on dynamic content var observer = new MutationObserver(addCopyButtons); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + ' GitHub - jfsantos/SRMRpy: Python implementation of the SRMR toolbox · GitHub
Skip to content

Latest commit

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Code Health

SRMRpy: a Python implementation of the SRMR Toolbox

The speech-to-reverberation modulation energy ratio (SRMR) is a non-intrusive metric for speech quality and intelligibility based on a modulation spectral representation of the speech signal. The metric was proposed by Falk et al. and recently updated for variability reduction and improved intelligibility estimation both for normal hearing listeners and cochlear implant users.

This toolbox is a Python port of SRMRToolbox, and includes the following implementations of the SRMR metric:

  1. The original SRMR metric (used as one of the objective metrics in the REVERB Challenge).
  2. The updated SRMR metric, incorporating updates for reduced variability.
  3. A fast implementation of the original SRMR metric, using a gammatonegram to replace the time-domain gammatone filterbank. The fast implementation can also optionally use the updates for reduced variability.

These implementations have been shown to perform well with sampling rates of 8 and 16 kHz. They will run for other sampling rates, but a warning will be shown as the metrics have not been tested under such conditions.

Setup

Simply run python setup.py install from inside the SRMRpy folder to install this package and its dependencies.

Usage

You can use SRMR as a function or with the srmr wrapper, which can be called from the command line. The parameters for the wrapper are the following:

positional arguments:
path Path of the file or files to be processed. Can also be
a folder.
optional arguments:
-h, --help show this help message and exit
-f, --fast Use the faster version based on the gammatonegram
-n, --norm Use modulation spectrum energy normalization
--ncochlearfilters N_COCHLEAR_FILTERS
Number of filters in the acoustic filterbank
--mincf MIN_CF Center frequency of the first modulation filter
--maxcf MAX_CF Center frequency of the last modulation filter

The srmr function accepts the same arguments, and the API is the following:

srmr(x, fs, n_cochlear_filters=23, low_freq=125, min_cf=4, max_cf=128, fast=True, norm=False)

where x is a Numpy array containing the signal and fs is an integer with the sampling rate.

References

If you use this toolbox in your research, please cite the reference below:

[TASLP2010] Tiago H. Falk, Chenxi Zheng, and Way-Yip Chan. A Non-Intrusive Quality and Intelligibility Measure of Reverberant and Dereverberated Speech, IEEE Trans Audio Speech Lang Process, Vol. 18, No. 7, pp. 1766-1774, Sept. 2010. doi:10.1109/TASL.2010.2052247

If you use the normalized version of the metric, please cite the following reference in addition to [TASLP2010]:

[IWAENC2014] João F. Santos, Mohammed Senoussaoui, and Tiago H. Falk. An updated objective intelligibility estimation metric for normal hearing listeners under noise and reverberation. In International Workshop on Acoustic Signal Enhancement (IWAENC). September 2014.

Likewise, if you use the CI-tailored version of the metric (with or without normalization), please cite this reference in addition to [TASLP2010]:

[TASLP2014] João F. Santos and Tiago H. Falk. Updating the SRMR metric for improved intelligibility prediction for cochlear implant users. IEEE Transactions on Audio, Speech, and Language Processing, December 2014. doi:10.1109/TASLP.2014.2363788.

About

Python implementation of the SRMR toolbox

Resources

Stars

134 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jfsantos/SRMRpy: Python implementation of the SRMR toolbox · GitHub
Skip to content

Latest commit

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Code Health

SRMRpy: a Python implementation of the SRMR Toolbox

The speech-to-reverberation modulation energy ratio (SRMR) is a non-intrusive metric for speech quality and intelligibility based on a modulation spectral representation of the speech signal. The metric was proposed by Falk et al. and recently updated for variability reduction and improved intelligibility estimation both for normal hearing listeners and cochlear implant users.

This toolbox is a Python port of SRMRToolbox, and includes the following implementations of the SRMR metric:

  1. The original SRMR metric (used as one of the objective metrics in the REVERB Challenge).
  2. The updated SRMR metric, incorporating updates for reduced variability.
  3. A fast implementation of the original SRMR metric, using a gammatonegram to replace the time-domain gammatone filterbank. The fast implementation can also optionally use the updates for reduced variability.

These implementations have been shown to perform well with sampling rates of 8 and 16 kHz. They will run for other sampling rates, but a warning will be shown as the metrics have not been tested under such conditions.

Setup

Simply run python setup.py install from inside the SRMRpy folder to install this package and its dependencies.

Usage

You can use SRMR as a function or with the srmr wrapper, which can be called from the command line. The parameters for the wrapper are the following:

positional arguments:
path Path of the file or files to be processed. Can also be
a folder.
optional arguments:
-h, --help show this help message and exit
-f, --fast Use the faster version based on the gammatonegram
-n, --norm Use modulation spectrum energy normalization
--ncochlearfilters N_COCHLEAR_FILTERS
Number of filters in the acoustic filterbank
--mincf MIN_CF Center frequency of the first modulation filter
--maxcf MAX_CF Center frequency of the last modulation filter

The srmr function accepts the same arguments, and the API is the following:

srmr(x, fs, n_cochlear_filters=23, low_freq=125, min_cf=4, max_cf=128, fast=True, norm=False)

where x is a Numpy array containing the signal and fs is an integer with the sampling rate.

References

If you use this toolbox in your research, please cite the reference below:

[TASLP2010] Tiago H. Falk, Chenxi Zheng, and Way-Yip Chan. A Non-Intrusive Quality and Intelligibility Measure of Reverberant and Dereverberated Speech, IEEE Trans Audio Speech Lang Process, Vol. 18, No. 7, pp. 1766-1774, Sept. 2010. doi:10.1109/TASL.2010.2052247

If you use the normalized version of the metric, please cite the following reference in addition to [TASLP2010]:

[IWAENC2014] João F. Santos, Mohammed Senoussaoui, and Tiago H. Falk. An updated objective intelligibility estimation metric for normal hearing listeners under noise and reverberation. In International Workshop on Acoustic Signal Enhancement (IWAENC). September 2014.

Likewise, if you use the CI-tailored version of the metric (with or without normalization), please cite this reference in addition to [TASLP2010]:

[TASLP2014] João F. Santos and Tiago H. Falk. Updating the SRMR metric for improved intelligibility prediction for cochlear implant users. IEEE Transactions on Audio, Speech, and Language Processing, December 2014. doi:10.1109/TASLP.2014.2363788.

About

Python implementation of the SRMR toolbox

Resources

Stars

134 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jfsantos/SRMRpy: Python implementation of the SRMR toolbox · GitHub
Skip to content

Latest commit

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Code Health

SRMRpy: a Python implementation of the SRMR Toolbox

The speech-to-reverberation modulation energy ratio (SRMR) is a non-intrusive metric for speech quality and intelligibility based on a modulation spectral representation of the speech signal. The metric was proposed by Falk et al. and recently updated for variability reduction and improved intelligibility estimation both for normal hearing listeners and cochlear implant users.

This toolbox is a Python port of SRMRToolbox, and includes the following implementations of the SRMR metric:

  1. The original SRMR metric (used as one of the objective metrics in the REVERB Challenge).
  2. The updated SRMR metric, incorporating updates for reduced variability.
  3. A fast implementation of the original SRMR metric, using a gammatonegram to replace the time-domain gammatone filterbank. The fast implementation can also optionally use the updates for reduced variability.

These implementations have been shown to perform well with sampling rates of 8 and 16 kHz. They will run for other sampling rates, but a warning will be shown as the metrics have not been tested under such conditions.

Setup

Simply run python setup.py install from inside the SRMRpy folder to install this package and its dependencies.

Usage

You can use SRMR as a function or with the srmr wrapper, which can be called from the command line. The parameters for the wrapper are the following:

positional arguments:
path Path of the file or files to be processed. Can also be
a folder.
optional arguments:
-h, --help show this help message and exit
-f, --fast Use the faster version based on the gammatonegram
-n, --norm Use modulation spectrum energy normalization
--ncochlearfilters N_COCHLEAR_FILTERS
Number of filters in the acoustic filterbank
--mincf MIN_CF Center frequency of the first modulation filter
--maxcf MAX_CF Center frequency of the last modulation filter

The srmr function accepts the same arguments, and the API is the following:

srmr(x, fs, n_cochlear_filters=23, low_freq=125, min_cf=4, max_cf=128, fast=True, norm=False)

where x is a Numpy array containing the signal and fs is an integer with the sampling rate.

References

If you use this toolbox in your research, please cite the reference below:

[TASLP2010] Tiago H. Falk, Chenxi Zheng, and Way-Yip Chan. A Non-Intrusive Quality and Intelligibility Measure of Reverberant and Dereverberated Speech, IEEE Trans Audio Speech Lang Process, Vol. 18, No. 7, pp. 1766-1774, Sept. 2010. doi:10.1109/TASL.2010.2052247

If you use the normalized version of the metric, please cite the following reference in addition to [TASLP2010]:

[IWAENC2014] João F. Santos, Mohammed Senoussaoui, and Tiago H. Falk. An updated objective intelligibility estimation metric for normal hearing listeners under noise and reverberation. In International Workshop on Acoustic Signal Enhancement (IWAENC). September 2014.

Likewise, if you use the CI-tailored version of the metric (with or without normalization), please cite this reference in addition to [TASLP2010]:

[TASLP2014] João F. Santos and Tiago H. Falk. Updating the SRMR metric for improved intelligibility prediction for cochlear implant users. IEEE Transactions on Audio, Speech, and Language Processing, December 2014. doi:10.1109/TASLP.2014.2363788.

About

Python implementation of the SRMR toolbox

Resources

Stars

134 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - jfsantos/SRMRpy: Python implementation of the SRMR toolbox · GitHub
Skip to content

Latest commit

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Code Health

SRMRpy: a Python implementation of the SRMR Toolbox

The speech-to-reverberation modulation energy ratio (SRMR) is a non-intrusive metric for speech quality and intelligibility based on a modulation spectral representation of the speech signal. The metric was proposed by Falk et al. and recently updated for variability reduction and improved intelligibility estimation both for normal hearing listeners and cochlear implant users.

This toolbox is a Python port of SRMRToolbox, and includes the following implementations of the SRMR metric:

  1. The original SRMR metric (used as one of the objective metrics in the REVERB Challenge).
  2. The updated SRMR metric, incorporating updates for reduced variability.
  3. A fast implementation of the original SRMR metric, using a gammatonegram to replace the time-domain gammatone filterbank. The fast implementation can also optionally use the updates for reduced variability.

These implementations have been shown to perform well with sampling rates of 8 and 16 kHz. They will run for other sampling rates, but a warning will be shown as the metrics have not been tested under such conditions.

Setup

Simply run python setup.py install from inside the SRMRpy folder to install this package and its dependencies.

Usage

You can use SRMR as a function or with the srmr wrapper, which can be called from the command line. The parameters for the wrapper are the following:

positional arguments:
path Path of the file or files to be processed. Can also be
a folder.
optional arguments:
-h, --help show this help message and exit
-f, --fast Use the faster version based on the gammatonegram
-n, --norm Use modulation spectrum energy normalization
--ncochlearfilters N_COCHLEAR_FILTERS
Number of filters in the acoustic filterbank
--mincf MIN_CF Center frequency of the first modulation filter
--maxcf MAX_CF Center frequency of the last modulation filter

The srmr function accepts the same arguments, and the API is the following:

srmr(x, fs, n_cochlear_filters=23, low_freq=125, min_cf=4, max_cf=128, fast=True, norm=False)

where x is a Numpy array containing the signal and fs is an integer with the sampling rate.

References

If you use this toolbox in your research, please cite the reference below:

[TASLP2010] Tiago H. Falk, Chenxi Zheng, and Way-Yip Chan. A Non-Intrusive Quality and Intelligibility Measure of Reverberant and Dereverberated Speech, IEEE Trans Audio Speech Lang Process, Vol. 18, No. 7, pp. 1766-1774, Sept. 2010. doi:10.1109/TASL.2010.2052247

If you use the normalized version of the metric, please cite the following reference in addition to [TASLP2010]:

[IWAENC2014] João F. Santos, Mohammed Senoussaoui, and Tiago H. Falk. An updated objective intelligibility estimation metric for normal hearing listeners under noise and reverberation. In International Workshop on Acoustic Signal Enhancement (IWAENC). September 2014.

Likewise, if you use the CI-tailored version of the metric (with or without normalization), please cite this reference in addition to [TASLP2010]:

[TASLP2014] João F. Santos and Tiago H. Falk. Updating the SRMR metric for improved intelligibility prediction for cochlear implant users. IEEE Transactions on Audio, Speech, and Language Processing, December 2014. doi:10.1109/TASLP.2014.2363788.

About

Python implementation of the SRMR toolbox

Resources

Stars

134 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jfsantos/SRMRpy: Python implementation of the SRMR toolbox · GitHub
Skip to content

Latest commit

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Code Health

SRMRpy: a Python implementation of the SRMR Toolbox

The speech-to-reverberation modulation energy ratio (SRMR) is a non-intrusive metric for speech quality and intelligibility based on a modulation spectral representation of the speech signal. The metric was proposed by Falk et al. and recently updated for variability reduction and improved intelligibility estimation both for normal hearing listeners and cochlear implant users.

This toolbox is a Python port of SRMRToolbox, and includes the following implementations of the SRMR metric:

  1. The original SRMR metric (used as one of the objective metrics in the REVERB Challenge).
  2. The updated SRMR metric, incorporating updates for reduced variability.
  3. A fast implementation of the original SRMR metric, using a gammatonegram to replace the time-domain gammatone filterbank. The fast implementation can also optionally use the updates for reduced variability.

These implementations have been shown to perform well with sampling rates of 8 and 16 kHz. They will run for other sampling rates, but a warning will be shown as the metrics have not been tested under such conditions.

Setup

Simply run python setup.py install from inside the SRMRpy folder to install this package and its dependencies.

Usage

You can use SRMR as a function or with the srmr wrapper, which can be called from the command line. The parameters for the wrapper are the following:

positional arguments:
path Path of the file or files to be processed. Can also be
a folder.
optional arguments:
-h, --help show this help message and exit
-f, --fast Use the faster version based on the gammatonegram
-n, --norm Use modulation spectrum energy normalization
--ncochlearfilters N_COCHLEAR_FILTERS
Number of filters in the acoustic filterbank
--mincf MIN_CF Center frequency of the first modulation filter
--maxcf MAX_CF Center frequency of the last modulation filter

The srmr function accepts the same arguments, and the API is the following:

srmr(x, fs, n_cochlear_filters=23, low_freq=125, min_cf=4, max_cf=128, fast=True, norm=False)

where x is a Numpy array containing the signal and fs is an integer with the sampling rate.

References

If you use this toolbox in your research, please cite the reference below:

[TASLP2010] Tiago H. Falk, Chenxi Zheng, and Way-Yip Chan. A Non-Intrusive Quality and Intelligibility Measure of Reverberant and Dereverberated Speech, IEEE Trans Audio Speech Lang Process, Vol. 18, No. 7, pp. 1766-1774, Sept. 2010. doi:10.1109/TASL.2010.2052247

If you use the normalized version of the metric, please cite the following reference in addition to [TASLP2010]:

[IWAENC2014] João F. Santos, Mohammed Senoussaoui, and Tiago H. Falk. An updated objective intelligibility estimation metric for normal hearing listeners under noise and reverberation. In International Workshop on Acoustic Signal Enhancement (IWAENC). September 2014.

Likewise, if you use the CI-tailored version of the metric (with or without normalization), please cite this reference in addition to [TASLP2010]:

[TASLP2014] João F. Santos and Tiago H. Falk. Updating the SRMR metric for improved intelligibility prediction for cochlear implant users. IEEE Transactions on Audio, Speech, and Language Processing, December 2014. doi:10.1109/TASLP.2014.2363788.

About

Python implementation of the SRMR toolbox

Resources

Stars

134 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jfsantos/SRMRpy: Python implementation of the SRMR toolbox · GitHub
Skip to content

Latest commit

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Code Health

SRMRpy: a Python implementation of the SRMR Toolbox

The speech-to-reverberation modulation energy ratio (SRMR) is a non-intrusive metric for speech quality and intelligibility based on a modulation spectral representation of the speech signal. The metric was proposed by Falk et al. and recently updated for variability reduction and improved intelligibility estimation both for normal hearing listeners and cochlear implant users.

This toolbox is a Python port of SRMRToolbox, and includes the following implementations of the SRMR metric:

  1. The original SRMR metric (used as one of the objective metrics in the REVERB Challenge).
  2. The updated SRMR metric, incorporating updates for reduced variability.
  3. A fast implementation of the original SRMR metric, using a gammatonegram to replace the time-domain gammatone filterbank. The fast implementation can also optionally use the updates for reduced variability.

These implementations have been shown to perform well with sampling rates of 8 and 16 kHz. They will run for other sampling rates, but a warning will be shown as the metrics have not been tested under such conditions.

Setup

Simply run python setup.py install from inside the SRMRpy folder to install this package and its dependencies.

Usage

You can use SRMR as a function or with the srmr wrapper, which can be called from the command line. The parameters for the wrapper are the following:

positional arguments:
path Path of the file or files to be processed. Can also be
a folder.
optional arguments:
-h, --help show this help message and exit
-f, --fast Use the faster version based on the gammatonegram
-n, --norm Use modulation spectrum energy normalization
--ncochlearfilters N_COCHLEAR_FILTERS
Number of filters in the acoustic filterbank
--mincf MIN_CF Center frequency of the first modulation filter
--maxcf MAX_CF Center frequency of the last modulation filter

The srmr function accepts the same arguments, and the API is the following:

srmr(x, fs, n_cochlear_filters=23, low_freq=125, min_cf=4, max_cf=128, fast=True, norm=False)

where x is a Numpy array containing the signal and fs is an integer with the sampling rate.

References

If you use this toolbox in your research, please cite the reference below:

[TASLP2010] Tiago H. Falk, Chenxi Zheng, and Way-Yip Chan. A Non-Intrusive Quality and Intelligibility Measure of Reverberant and Dereverberated Speech, IEEE Trans Audio Speech Lang Process, Vol. 18, No. 7, pp. 1766-1774, Sept. 2010. doi:10.1109/TASL.2010.2052247

If you use the normalized version of the metric, please cite the following reference in addition to [TASLP2010]:

[IWAENC2014] João F. Santos, Mohammed Senoussaoui, and Tiago H. Falk. An updated objective intelligibility estimation metric for normal hearing listeners under noise and reverberation. In International Workshop on Acoustic Signal Enhancement (IWAENC). September 2014.

Likewise, if you use the CI-tailored version of the metric (with or without normalization), please cite this reference in addition to [TASLP2010]:

[TASLP2014] João F. Santos and Tiago H. Falk. Updating the SRMR metric for improved intelligibility prediction for cochlear implant users. IEEE Transactions on Audio, Speech, and Language Processing, December 2014. doi:10.1109/TASLP.2014.2363788.

About

Python implementation of the SRMR toolbox

Resources

Stars

134 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - jfsantos/SRMRpy: Python implementation of the SRMR toolbox · GitHub
Skip to content

Latest commit

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Code Health

SRMRpy: a Python implementation of the SRMR Toolbox

The speech-to-reverberation modulation energy ratio (SRMR) is a non-intrusive metric for speech quality and intelligibility based on a modulation spectral representation of the speech signal. The metric was proposed by Falk et al. and recently updated for variability reduction and improved intelligibility estimation both for normal hearing listeners and cochlear implant users.

This toolbox is a Python port of SRMRToolbox, and includes the following implementations of the SRMR metric:

  1. The original SRMR metric (used as one of the objective metrics in the REVERB Challenge).
  2. The updated SRMR metric, incorporating updates for reduced variability.
  3. A fast implementation of the original SRMR metric, using a gammatonegram to replace the time-domain gammatone filterbank. The fast implementation can also optionally use the updates for reduced variability.

These implementations have been shown to perform well with sampling rates of 8 and 16 kHz. They will run for other sampling rates, but a warning will be shown as the metrics have not been tested under such conditions.

Setup

Simply run python setup.py install from inside the SRMRpy folder to install this package and its dependencies.

Usage

You can use SRMR as a function or with the srmr wrapper, which can be called from the command line. The parameters for the wrapper are the following:

positional arguments:
path Path of the file or files to be processed. Can also be
a folder.
optional arguments:
-h, --help show this help message and exit
-f, --fast Use the faster version based on the gammatonegram
-n, --norm Use modulation spectrum energy normalization
--ncochlearfilters N_COCHLEAR_FILTERS
Number of filters in the acoustic filterbank
--mincf MIN_CF Center frequency of the first modulation filter
--maxcf MAX_CF Center frequency of the last modulation filter

The srmr function accepts the same arguments, and the API is the following:

srmr(x, fs, n_cochlear_filters=23, low_freq=125, min_cf=4, max_cf=128, fast=True, norm=False)

where x is a Numpy array containing the signal and fs is an integer with the sampling rate.

References

If you use this toolbox in your research, please cite the reference below:

[TASLP2010] Tiago H. Falk, Chenxi Zheng, and Way-Yip Chan. A Non-Intrusive Quality and Intelligibility Measure of Reverberant and Dereverberated Speech, IEEE Trans Audio Speech Lang Process, Vol. 18, No. 7, pp. 1766-1774, Sept. 2010. doi:10.1109/TASL.2010.2052247

If you use the normalized version of the metric, please cite the following reference in addition to [TASLP2010]:

[IWAENC2014] João F. Santos, Mohammed Senoussaoui, and Tiago H. Falk. An updated objective intelligibility estimation metric for normal hearing listeners under noise and reverberation. In International Workshop on Acoustic Signal Enhancement (IWAENC). September 2014.

Likewise, if you use the CI-tailored version of the metric (with or without normalization), please cite this reference in addition to [TASLP2010]:

[TASLP2014] João F. Santos and Tiago H. Falk. Updating the SRMR metric for improved intelligibility prediction for cochlear implant users. IEEE Transactions on Audio, Speech, and Language Processing, December 2014. doi:10.1109/TASLP.2014.2363788.

About

Python implementation of the SRMR toolbox

Resources

Stars

134 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages