Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.2%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: hunterhogan
  • License: other
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 61.8 MB
Statistics
  • Stars: 2
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 7
Created over 1 year ago · Last pushed 8 months ago
Metadata Files
Readme Funding License Citation

README.md

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 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 YouTube Channel Subscribers

How to code

Coding One Step at a Time:

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

CC-BY-NC-4.0

Owner

  • Name: Hunter Hogan
  • Login: hunterhogan
  • Kind: user

Citation (CITATION.cff)

abstract: analyzeAudio is a Python package for measuring aspects of audio files.
  It provides comprehensive audio analysis capabilities including spectral 
  measurements (centroid, contrast, flatness, etc.), loudness metrics (LUFS, 
  RMS), temporal features (tempo, zero-crossing rate), and signal quality 
  assessments (SRMR). The library integrates with FFmpeg/FFprobe for efficient 
  analysis and supports both single file and batch processing with concurrent 
  execution.
authors:
- given-names: Hunter
  family-names: Hogan
  email: HunterHogan@pm.me
cff-version: 1.2.0
commit: f0fb2e6d6fa572aa9ce62f9662cf1fea997b4c9f
date-released: '2025-07-11'
identifiers:
- type: url
  value: https://github.com/hunterhogan/analyzeAudio/releases/tag/0.0.17
  description: The URL for analyzeAudio 0.0.17.
keywords:
- FFmpeg
- FFprobe
- LUFS
- RMS
- SRMR
- analysis
- audio
- audio-analysis
- loudness
- measurement
- metrics
- signal-processing
- spectral
- spectrum
- torch
- waveform
license: CC-BY-NC-4.0
message: Cite this software with the metadata in this file.
repository: https://github.com/hunterhogan/analyzeAudio.git
repository-artifact: https://pypi.org/project/analyzeaudio/0.0.17/
repository-code: https://github.com/hunterhogan/analyzeAudio/releases/tag/0.0.17
title: analyzeAudio
url: https://github.com/hunterhogan/analyzeAudio
version: 0.0.17

GitHub Events

Total
  • Release event: 5
  • Watch event: 2
  • Push event: 45
  • Public event: 1
  • Create event: 5
Last Year
  • Release event: 5
  • Watch event: 2
  • Push event: 45
  • Public event: 1
  • Create event: 5

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 42 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 7
  • Total maintainers: 1
pypi.org: analyzeaudio

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

  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 42 Last month
Rankings
Dependent packages count: 9.7%
Average: 32.2%
Dependent repos count: 54.7%
Maintainers (1)
Last synced: 7 months ago

Dependencies

pyproject.toml pypi