analyzeAudio


NameanalyzeAudio JSON
Version 0.0.17 PyPI version JSON
download
home_pageNone
SummaryMeasure one or more aspects of one or more audio files.
upload_time2025-07-11 03:26:48
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseCC-BY-NC-4.0
keywords ffmpeg ffprobe lufs rms srmr analysis audio audio-analysis loudness measurement metrics signal-processing spectral spectrum torch waveform
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # analyzeAudio

Measure one or more aspects of one or more audio files.

## Note well: FFmpeg & FFprobe binaries must be in PATH

Some options to [download FFmpeg and FFprobe](https://www.ffmpeg.org/download.html) at ffmpeg.org.

## Some ways to use this package

### Use `analyzeAudioFile` to measure one or more aspects of a single audio file

```python
from analyzeAudio import analyzeAudioFile
listAspectNames = ['LUFS integrated',
                   'RMS peak',
                   'SRMR mean',
                   'Spectral Flatness mean']
listMeasurements = analyzeAudioFile(pathFilename, listAspectNames)
```

### Use `getListAvailableAudioAspects` to get a crude list of aspects this package can measure

The aspect names are accurate, but the lack of additional documentation can make things challenging. 'Zero-crossing rate', 'Zero-crossing rate mean', and 'Zero-crossings rate', for example, are different from each other. ("... lack of additional documentation ...")

```python
import analyzeAudio
analyzeAudio.getListAvailableAudioAspects()
```

### Use `analyzeAudioListPathFilenames` to measure one or more aspects of individual file in a list of audio files

### Use `audioAspects` to call an analyzer function by using the name of the aspect you wish to measure

```python
from analyzeAudio import audioAspects
SI_SDR_channelsMean = audioAspects['SI-SDR mean']['analyzer'](pathFilenameAudioFile, pathFilenameDifferentAudioFile)
```

Retrieve the names of the parameters for an analyzer function with the `['analyzerParameters']` key-name.

```python
from analyzeAudio import audioAspects
print(audioAspects['Chromagram']['analyzerParameters'])
```

### Use `whatMeasurements` command line tool to list available measurements

```sh
(.venv) C:\apps\analyzeAudio>whatMeasurements
['Abs_Peak_count', 'Bit_depth', 'Chromagram', 'Chromagram mean', 'Crest factor', 'DC offset', 'Duration-samples', 'Dynamic range', 'Flat_factor', 'LUFS high', 'LUFS integrated', 'LUFS loudness range', 'LUFS low', 'Max_difference', 'Max_level', 'Mean_difference', 'Min_difference', 'Min_level', 'Noise_floor', 'Noise_floor_count', 'Peak dB', 'Peak_count', 'Power spectral density', 'Power spectral density mean', 'RMS from waveform', 'RMS from waveform mean', 'RMS peak', 'RMS total', 'RMS_difference', 'RMS_trough', 'SI-SDR mean', 'SRMR', 'SRMR mean', 'Signal entropy', 'Spectral Bandwidth', 'Spectral Bandwidth mean', 'Spectral Centroid', 'Spectral Centroid mean', 'Spectral Contrast', 'Spectral Contrast mean', 'Spectral Flatness', 'Spectral Flatness mean', 'Spectral centroid', 'Spectral centroid mean', 'Spectral crest', 'Spectral crest mean', 'Spectral decrease', 'Spectral decrease mean', 'Spectral entropy', 'Spectral entropy mean', 'Spectral flatness', 'Spectral flatness mean', 'Spectral flux', 'Spectral flux mean', 'Spectral kurtosis', 'Spectral kurtosis mean', 'Spectral rolloff', 'Spectral rolloff mean', 'Spectral skewness', 'Spectral skewness mean', 'Spectral slope', 'Spectral slope mean', 'Spectral spread', 'Spectral spread mean', 'Spectral variance', 'Spectral variance mean', 'Tempo', 'Tempo mean', 'Tempogram', 'Tempogram mean', 'Zero-crossing rate', 'Zero-crossing rate mean', 'Zero-crossings rate']
```

## Some clues about the aspects

```python
'Abs_Peak_count': float
'Bit_depth': float
'Chromagram': NDArray[float64] # shape(..., 12, frames)
'Chromagram mean': float
'Crest factor': float
'DC offset': float
'Duration-samples': float
'Dynamic range': float
'Flat_factor': float
'LUFS high': float
'LUFS integrated': float
'LUFS loudness range': float
'LUFS low': float
'Max_difference': float
'Max_level': float
'Mean_difference': float
'Min_difference': float
'Min_level': float
'Noise_floor_count': float
'Noise_floor': float
'Peak dB': float
'Peak_count': float
'Power spectral density': NDArray[float64] # shape(channels, frames)
'Power spectral density mean': float
'RMS from waveform': NDArray[float64] # shape(..., 1, frames)
'RMS from waveform mean': float
'RMS peak': float
'RMS total': float
'RMS_difference': float
'RMS_trough': float
'SI-SDR mean': float
'Signal entropy': float
'Spectral Bandwidth': NDArray[float64] # shape(..., 1, frames)
'Spectral Bandwidth mean': float
'Spectral Centroid': NDArray[float64] # shape(..., 1, frames)
'Spectral Centroid mean': float
'Spectral Contrast': NDArray[float64] # shape(..., 7, frames)
'Spectral Contrast mean': float
'Spectral Flatness': NDArray[float64] # shape(..., 1, frames)
'Spectral Flatness mean': float
'SRMR': NDArray[float64] # shape(...)
'SRMR mean': float
'Tempo': NDArray[float64] # shape(...)
'Tempo mean': float
'Tempogram': NDArray[float64] # shape(..., 384, samples)
'Tempogram mean': float
'Zero-crossing rate': NDArray[float64] # shape(..., 1, frames)
'Zero-crossing rate mean': float
'Zero-crossings rate': float
```

### I had to revert back to these

```python
'Spectral centroid': float
'Spectral crest': float
'Spectral decrease': float
'Spectral entropy': float
'Spectral flatness': float
'Spectral flux': float
'Spectral kurtosis': float
'Spectral rolloff': float
'Spectral skewness': float
'Spectral slope': float
'Spectral spread': float
'Spectral variance': float
```

### Removed (temporarily, I hope)

```python
'Spectral centroid': NDArray[float64] # shape(channels, frames)
'Spectral centroid mean': float
'Spectral crest': NDArray[float64] # shape(channels, frames)
'Spectral crest mean': float
'Spectral decrease': NDArray[float64] # shape(channels, frames)
'Spectral decrease mean': float
'Spectral entropy': NDArray[float64] # shape(channels, frames)
'Spectral entropy mean': float
'Spectral flatness': NDArray[float64] # shape(channels, frames)
'Spectral flatness mean': float
'Spectral flux': NDArray[float64] # shape(channels, frames)
'Spectral flux mean': float
'Spectral kurtosis': NDArray[float64] # shape(channels, frames)
'Spectral kurtosis mean': float
'Spectral rolloff': NDArray[float64] # shape(channels, frames)
'Spectral rolloff mean': float
'Spectral skewness': NDArray[float64] # shape(channels, frames)
'Spectral skewness mean': float
'Spectral slope': NDArray[float64] # shape(channels, frames)
'Spectral slope mean': float
'Spectral spread': NDArray[float64] # shape(channels, frames)
'Spectral spread mean': float
'Spectral variance': NDArray[float64] # shape(channels, frames)
'Spectral variance mean': float
```

## Installation

```sh
pip install analyzeAudio
```

## My recovery

[![Static Badge](https://img.shields.io/badge/2011_August-Homeless_since-blue?style=flat)](https://HunterThinks.com/support)
[![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UC3Gx7kz61009NbhpRtPP7tw)](https://www.youtube.com/@HunterHogan)

## How to code

Coding One Step at a Time:

0. WRITE CODE.
1. Don't write stupid code that's hard to revise.
2. Write good code.
3. When revising, write better code.

[![CC-BY-NC-4.0](https://github.com/hunterhogan/analyzeAudio/blob/main/CC-BY-NC-4.0.svg)](https://creativecommons.org/licenses/by-nc/4.0/)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "analyzeAudio",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "FFmpeg, FFprobe, LUFS, RMS, SRMR, analysis, audio, audio-analysis, loudness, measurement, metrics, signal-processing, spectral, spectrum, torch, waveform",
    "author": null,
    "author_email": "Hunter Hogan <HunterHogan@pm.me>",
    "download_url": "https://files.pythonhosted.org/packages/da/d2/ffb01962928a1aa16267a969b28242ec75ca1d4d3d9cd29bae7c31385f2b/analyzeaudio-0.0.17.tar.gz",
    "platform": null,
    "description": "# analyzeAudio\n\nMeasure one or more aspects of one or more audio files.\n\n## Note well: FFmpeg & FFprobe binaries must be in PATH\n\nSome options to [download FFmpeg and FFprobe](https://www.ffmpeg.org/download.html) at ffmpeg.org.\n\n## Some ways to use this package\n\n### Use `analyzeAudioFile` to measure one or more aspects of a single audio file\n\n```python\nfrom analyzeAudio import analyzeAudioFile\nlistAspectNames = ['LUFS integrated',\n                   'RMS peak',\n                   'SRMR mean',\n                   'Spectral Flatness mean']\nlistMeasurements = analyzeAudioFile(pathFilename, listAspectNames)\n```\n\n### Use `getListAvailableAudioAspects` to get a crude list of aspects this package can measure\n\nThe aspect names are accurate, but the lack of additional documentation can make things challenging. 'Zero-crossing rate', 'Zero-crossing rate mean', and 'Zero-crossings rate', for example, are different from each other. (\"... lack of additional documentation ...\")\n\n```python\nimport analyzeAudio\nanalyzeAudio.getListAvailableAudioAspects()\n```\n\n### Use `analyzeAudioListPathFilenames` to measure one or more aspects of individual file in a list of audio files\n\n### Use `audioAspects` to call an analyzer function by using the name of the aspect you wish to measure\n\n```python\nfrom analyzeAudio import audioAspects\nSI_SDR_channelsMean = audioAspects['SI-SDR mean']['analyzer'](pathFilenameAudioFile, pathFilenameDifferentAudioFile)\n```\n\nRetrieve the names of the parameters for an analyzer function with the `['analyzerParameters']` key-name.\n\n```python\nfrom analyzeAudio import audioAspects\nprint(audioAspects['Chromagram']['analyzerParameters'])\n```\n\n### Use `whatMeasurements` command line tool to list available measurements\n\n```sh\n(.venv) C:\\apps\\analyzeAudio>whatMeasurements\n['Abs_Peak_count', 'Bit_depth', 'Chromagram', 'Chromagram mean', 'Crest factor', 'DC offset', 'Duration-samples', 'Dynamic range', 'Flat_factor', 'LUFS high', 'LUFS integrated', 'LUFS loudness range', 'LUFS low', 'Max_difference', 'Max_level', 'Mean_difference', 'Min_difference', 'Min_level', 'Noise_floor', 'Noise_floor_count', 'Peak dB', 'Peak_count', 'Power spectral density', 'Power spectral density mean', 'RMS from waveform', 'RMS from waveform mean', 'RMS peak', 'RMS total', 'RMS_difference', 'RMS_trough', 'SI-SDR mean', 'SRMR', 'SRMR mean', 'Signal entropy', 'Spectral Bandwidth', 'Spectral Bandwidth mean', 'Spectral Centroid', 'Spectral Centroid mean', 'Spectral Contrast', 'Spectral Contrast mean', 'Spectral Flatness', 'Spectral Flatness mean', 'Spectral centroid', 'Spectral centroid mean', 'Spectral crest', 'Spectral crest mean', 'Spectral decrease', 'Spectral decrease mean', 'Spectral entropy', 'Spectral entropy mean', 'Spectral flatness', 'Spectral flatness mean', 'Spectral flux', 'Spectral flux mean', 'Spectral kurtosis', 'Spectral kurtosis mean', 'Spectral rolloff', 'Spectral rolloff mean', 'Spectral skewness', 'Spectral skewness mean', 'Spectral slope', 'Spectral slope mean', 'Spectral spread', 'Spectral spread mean', 'Spectral variance', 'Spectral variance mean', 'Tempo', 'Tempo mean', 'Tempogram', 'Tempogram mean', 'Zero-crossing rate', 'Zero-crossing rate mean', 'Zero-crossings rate']\n```\n\n## Some clues about the aspects\n\n```python\n'Abs_Peak_count': float\n'Bit_depth': float\n'Chromagram': NDArray[float64] # shape(..., 12, frames)\n'Chromagram mean': float\n'Crest factor': float\n'DC offset': float\n'Duration-samples': float\n'Dynamic range': float\n'Flat_factor': float\n'LUFS high': float\n'LUFS integrated': float\n'LUFS loudness range': float\n'LUFS low': float\n'Max_difference': float\n'Max_level': float\n'Mean_difference': float\n'Min_difference': float\n'Min_level': float\n'Noise_floor_count': float\n'Noise_floor': float\n'Peak dB': float\n'Peak_count': float\n'Power spectral density': NDArray[float64] # shape(channels, frames)\n'Power spectral density mean': float\n'RMS from waveform': NDArray[float64] # shape(..., 1, frames)\n'RMS from waveform mean': float\n'RMS peak': float\n'RMS total': float\n'RMS_difference': float\n'RMS_trough': float\n'SI-SDR mean': float\n'Signal entropy': float\n'Spectral Bandwidth': NDArray[float64] # shape(..., 1, frames)\n'Spectral Bandwidth mean': float\n'Spectral Centroid': NDArray[float64] # shape(..., 1, frames)\n'Spectral Centroid mean': float\n'Spectral Contrast': NDArray[float64] # shape(..., 7, frames)\n'Spectral Contrast mean': float\n'Spectral Flatness': NDArray[float64] # shape(..., 1, frames)\n'Spectral Flatness mean': float\n'SRMR': NDArray[float64] # shape(...)\n'SRMR mean': float\n'Tempo': NDArray[float64] # shape(...)\n'Tempo mean': float\n'Tempogram': NDArray[float64] # shape(..., 384, samples)\n'Tempogram mean': float\n'Zero-crossing rate': NDArray[float64] # shape(..., 1, frames)\n'Zero-crossing rate mean': float\n'Zero-crossings rate': float\n```\n\n### I had to revert back to these\n\n```python\n'Spectral centroid': float\n'Spectral crest': float\n'Spectral decrease': float\n'Spectral entropy': float\n'Spectral flatness': float\n'Spectral flux': float\n'Spectral kurtosis': float\n'Spectral rolloff': float\n'Spectral skewness': float\n'Spectral slope': float\n'Spectral spread': float\n'Spectral variance': float\n```\n\n### Removed (temporarily, I hope)\n\n```python\n'Spectral centroid': NDArray[float64] # shape(channels, frames)\n'Spectral centroid mean': float\n'Spectral crest': NDArray[float64] # shape(channels, frames)\n'Spectral crest mean': float\n'Spectral decrease': NDArray[float64] # shape(channels, frames)\n'Spectral decrease mean': float\n'Spectral entropy': NDArray[float64] # shape(channels, frames)\n'Spectral entropy mean': float\n'Spectral flatness': NDArray[float64] # shape(channels, frames)\n'Spectral flatness mean': float\n'Spectral flux': NDArray[float64] # shape(channels, frames)\n'Spectral flux mean': float\n'Spectral kurtosis': NDArray[float64] # shape(channels, frames)\n'Spectral kurtosis mean': float\n'Spectral rolloff': NDArray[float64] # shape(channels, frames)\n'Spectral rolloff mean': float\n'Spectral skewness': NDArray[float64] # shape(channels, frames)\n'Spectral skewness mean': float\n'Spectral slope': NDArray[float64] # shape(channels, frames)\n'Spectral slope mean': float\n'Spectral spread': NDArray[float64] # shape(channels, frames)\n'Spectral spread mean': float\n'Spectral variance': NDArray[float64] # shape(channels, frames)\n'Spectral variance mean': float\n```\n\n## Installation\n\n```sh\npip install analyzeAudio\n```\n\n## My recovery\n\n[![Static Badge](https://img.shields.io/badge/2011_August-Homeless_since-blue?style=flat)](https://HunterThinks.com/support)\n[![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UC3Gx7kz61009NbhpRtPP7tw)](https://www.youtube.com/@HunterHogan)\n\n## How to code\n\nCoding One Step at a Time:\n\n0. WRITE CODE.\n1. Don't write stupid code that's hard to revise.\n2. Write good code.\n3. When revising, write better code.\n\n[![CC-BY-NC-4.0](https://github.com/hunterhogan/analyzeAudio/blob/main/CC-BY-NC-4.0.svg)](https://creativecommons.org/licenses/by-nc/4.0/)\n",
    "bugtrack_url": null,
    "license": "CC-BY-NC-4.0",
    "summary": "Measure one or more aspects of one or more audio files.",
    "version": "0.0.17",
    "project_urls": {
        "Donate": "https://www.patreon.com/integrated",
        "Homepage": "https://github.com/hunterhogan/analyzeAudio",
        "Issues": "https://github.com/hunterhogan/",
        "Repository": "https://github.com/hunterhogan/analyzeAudio.git"
    },
    "split_keywords": [
        "ffmpeg",
        " ffprobe",
        " lufs",
        " rms",
        " srmr",
        " analysis",
        " audio",
        " audio-analysis",
        " loudness",
        " measurement",
        " metrics",
        " signal-processing",
        " spectral",
        " spectrum",
        " torch",
        " waveform"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1c23326bd1b2acc0ff7af49618a3311745c9ecad99967645576ba9119334a8af",
                "md5": "4063778d830ab3d4085999ae951d26d2",
                "sha256": "ecfc80f19dab256519ed828ebeb6ff11cc4ecbc1592267f03ed4ecbe5c079bc8"
            },
            "downloads": -1,
            "filename": "analyzeaudio-0.0.17-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4063778d830ab3d4085999ae951d26d2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 21544,
            "upload_time": "2025-07-11T03:26:47",
            "upload_time_iso_8601": "2025-07-11T03:26:47.212592Z",
            "url": "https://files.pythonhosted.org/packages/1c/23/326bd1b2acc0ff7af49618a3311745c9ecad99967645576ba9119334a8af/analyzeaudio-0.0.17-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "dad2ffb01962928a1aa16267a969b28242ec75ca1d4d3d9cd29bae7c31385f2b",
                "md5": "ded7ead4cfdb185caf4e980dd59b9fbb",
                "sha256": "8de9f7080c13a38aa649f04a10a0c4cae59a1e69577b07f3e8fc27a1fa0269a7"
            },
            "downloads": -1,
            "filename": "analyzeaudio-0.0.17.tar.gz",
            "has_sig": false,
            "md5_digest": "ded7ead4cfdb185caf4e980dd59b9fbb",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 21083,
            "upload_time": "2025-07-11T03:26:48",
            "upload_time_iso_8601": "2025-07-11T03:26:48.460936Z",
            "url": "https://files.pythonhosted.org/packages/da/d2/ffb01962928a1aa16267a969b28242ec75ca1d4d3d9cd29bae7c31385f2b/analyzeaudio-0.0.17.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-11 03:26:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hunterhogan",
    "github_project": "analyzeAudio",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "analyzeaudio"
}
        
Elapsed time: 1.97561s