All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed: use strict index hash for caching results
with
audinterface.Process.process_index()andaudinterface.Feature.process_index(). Before, the same cache was used for indices that only differed in their order, and the returned results could be in an incorrect order when using the cache. This means that caches that were created with an older version will not be reused with this version.
- Added: support for Python 3.14
- Changed: depend on
audformat>=1.4.2 - Changed: exclude
tests/anddocs/folders from the Python package - Fixed:
audinterface.utils.signal_index()under pandas>=3.0 - Removed: support for Python 3.9
- Fixed: building release documentation
- Added:
audinterface.SegmentWithFeature - Added: support for Python 3.13
- Added: support for Python 3.12
- Changed: update progress bar at least every second
- Added:
audinterface.Segment.process_table(), that segments a dataframe or series and expands its row values to the new segments - Added: support for
numpy2.0 - Changed: depend on
audmath>=1.4.1
- Changed: default value of
process_func_applies_sliding_windowargument ofaudinterface.FeaturefromTruetoFalse - Fixed:
multiprocessingforaudinterface.Feature,audinterface.Process,audinterface.ProcessWithContext,audinterface.Segment - Removed: deprecated
unitargument fromaudinterface.Feature
- Added:
process_func_argsargument toaudinterface.Feature.process_file(),audinterface.Feature.process_files(),audinterface.Feature.process_folder(),audinterface.Feature.process_index(),audinterface.Feature.process_signal(),audinterface.Feature.process_signal_from_index(),audinterface.Process.process_file(),audinterface.Process.process_files(),audinterface.Process.process_folder(),audinterface.Process.process_index(),audinterface.Process.process_signal(),audinterface.Process.process_signal_from_index(),audinterface.ProcessWithContext.process_index(),audinterface.ProcessWithContext.process_signal_from_index(),audinterface.Segment.process_file(),audinterface.Segment.process_files(),audinterface.Segment.process_folder(),audinterface.Segment.process_index(),audinterface.Segment.process_signal(),audinterface.Segment.process_signal_from_index(). It allows to temporarily overwrite theprocess_func_argsargument used when instantiating an interface - Changed: depend on
audeer>=1.18.0 - Fixed: avoid deprecation warning
by replacing
pkg_resourcesinternally withimportlib.metadata
- Added:
include_rootargument toaudinterface.Feature.process_folder(),audinterface.Process.process_folder(),audinterface.Segment.process_folder(). Returns relative file path in index if set toFalse. Default value isTrue - Changed: when
audinterface.Featureis instantiated with anaudinterface.Segmentobject that returns an empty index,audinterface.Feature.process_*()no longer returnIndex([], dtype="object")butMultiIndex([], names=["file", "start", "end"]) - Fixed: preserve order of
startandendvalues as returned by the segmentation callable in the index returned byaudinterface.Segmentprocessing functions - Fixed: precision of
audinterface.utils.to_timedelta()forpd.Timedeltaobjects as input, e.g.to_timedelta(pd.Timedelta("0 days 00:00:35.511437999"))now returnsTimedelta("0 days 00:00:35.511437999")instead ofTimedelta("0 days 00:00:35.511437"). This also affects the output ofaudinterface.utils.signal_index() - Fixed: preserve requested
startandendvalues inprocess_file(),process_files(),process_folder()methods ofaudinterface.Processandaudinterface.Feature(). Before they were rounded to the next sample in the returned index
- Changed: require
audmath>=1.3.0 - Changed: require
audiofile>=1.3.0 - Changed: always evenly round
startandendto samples inaudinterface.utils.read_signal() - Fixed: process functions
that work on segments
are now always processing the identical signal
independent if they get the signal as input,
like
audinterface.Process.process_signal(), or a file, likeaudinterface.Process.process_file()
- Added:
cache_rootargument toaudinterface.Segment.process_index()
- Added: support for Python 3.11
- Changed: require
audformat>=1.0.1 - Fixed:
*.process_index()keeps precision ofendvalues when a segmented index is returned
- Fixed: do not truncate strings
in values returned by process methods of
audinterface.Feature
- Added:
preserve_indexargument toaudinterface.Process.process_index()andaudinterface.Feature.process_index() - Added: support for Python 3.10
- Changed: speed up processing methods
dealing with multiple files/segments in
audinterface.Feature,audinterface.Process,audinterface.ProcessWithContext, andaudinterface.Segment - Removed: deprecated
kwargsargument fromaudinterface.Feature,audinterface.Process,audinterface.ProcessWithContext, andaudinterface.Segment; use theprocess_func_argsargument instead
- Fixed: require
sphinx-audeering-theme>=1.2.1to ensure the correct theme is used for the public documentation
- Changed: split API documentation into sub-pages for each function
- Fixed: typo in multi-channel usage example in the documentation
- Changed:
audinterface.Featureuses multi-level column format and names columns after channel ID when result has more than one channel
- Changed: require
audformat>=0.15.3 - Fixed: segmented indices are returned
with
filelevel as dtypestringas introduced withaudformat0.15.0 - Removed: support for Python 3.7
- Changed: support special arguments
idx,file,rootin processing function
- Added:
auinterface.utils.sliding_window() - Added:
auinterface.utils.to_timedelta() - Added: argument
process_func_applies_sliding_windowtoaudinterface.Feature - Added: arguments
win_durandhop_durtoaudinterface.Process - Added: arguments
min_signal_durandmax_signal_durtoaudinterface.Feature,audinterface.Process,audinterface.Segment - Added: argument
cache_roottoaudinterface.Feature.process_index(),audinterface.Process.process_index() - Changed: extend documentation with docstring examples and usage section
- Deprecated:
unitargument ofaudinterface.Feature, instead specify unit directly when providing duration arguments, compareaudinterface.utils.to_timedelta() - Fixed:
audinterface.ProcessWithContextrequires one output for every segment
- Added:
audinterface.Featuredoes support specification of single feature as string in addition to list - Changed: depend on
audresample>=1.1 - Fixed: handle empty and non-existing folder
in
process_folder()methods
- Added: Python 3.9 support
- Added:
process_func_argsargument to process methods - Deprecated:
**kwargsin process methods, useprocess_func_argsargument instead - Removed: deprecated
process_unified_format_index()methods - Removed: Python 3.6 support
- Changed:
Feature.process_func()supports more shapes, namely(features)(channels, features)(features, frames)(channels, features, frames) - Changed:
Feature.process_func()supports more types (e.g. scalars, lists, strings, etc.) - Fixed:
Feature.__call__()always returns(channels, features, frames)
- Fixed: CHANGELOG
- Added:
utils.signal_index()to create a segmented index without file level - Changed: use keyword argument with
pandas.MultiIndex.set_levels() - Fixed: raise error if multiple frames are returned but
win_duris not set - Fixed: remove
num_channelsfromFeaturedocstring
- Added: tests on Windows and macOC
- Added:
rootargument to all functions processing file input
- Fixed: avoid using 'sec' as unit in
pd.to_timedelta()for backward compatibility
- Fixed: empty API section in documentation
- Added: open source release on Github
- Changed: switch to MIT license
- Fixed:
Process,Feature: do not apply segmentation twice whensegmentobject is given
- Added:
invertargument toSegment - Added:
Segment.process_index()andSegment.process_signal_from_index() - Changed:
Process.process_index()andProcess.process_signal_from_index()do not ignore segment object - Changed:
Feature.process_index()andFeature.process_signal_from_index()do not ignore segment object
- Fixed: PyPI publishing pipeline
- Changed: use new tokenizer in CI pipeline
- Added: support for providing
startandendtime values in the same format as done inaudformat, e.g. as integer, floats, orpandas.Timedelta - Changed: improve speed of CI pipelines
- Fixed:
audinterface.Featurehandles empty index
- Changed: rename
audinterface.Feature.process_unified_format_index,audinterface.Process.process_unified_format_index,audinterface.ProcessWithContext.process_unified_format_indextoaudinterface.Feature.process_index,audinterface.Process.process_index,audinterface.ProcessWithContext.process_index
- Fixed:
audinterface.Featureallowwin_dur=Nonewithunit="samples"
- Changed: store
Process.channelsalways as a list - Changed: keep
Feature.win_durandFeature.hop_durin original format
- Added: arguments
channelsandmixdowntoaudinterface.Process,audinterface.ProcessWithContext,audinterface.Feature,audinterface.Segment - Removed:
channelargument from allprocess_*functions
- Fixed:
audinterface.Feature.__call__always returnsnumpy.ndarray
- Changed:
audinterface.Process.process_unified_format_indexandaudinterface.Feature.process_unified_format_indexsupport filewise index
- Added:
process_func_is_monoargument toaudinterface.Feature,audinterface.Process - Fixed: avoid nested progress bars
- Changed: make
audinterface.Feature,audinterface.Process,audinterface.ProcessWithContext,audinterface.Segment, callable - Changed: use
nameandparamsarguments inaudinterface.Feature
- Changed: switch to
audeer.run_tasks - Changed: cut signal before resampling is applied
- Fixed:
audinterface.Featureraises an due to missing sampling rate now only ifwin_duris given
- Changed: switch to
audsp>=0.9.2, which fixes a critical resampling issue and introduces a new keyword arg name
- Fixed: description and keywords of package in
setup.cfg
- Fixed: syntax error in CHANGELOG
- Fixed:
audinterface.Process.process_filewas changing end times when process a segmented index
- Changed:
utils.check_indexignoresdatetime
- Added:
segmentargument toaudinterface.Processandaudinterface.Feature - Removed:
nameargument fromaudinterface.Feature
- Added: initial release