Commit 8e2ac3f7 authored by Anika Treffehn's avatar Anika Treffehn
Browse files

added MASA test, currently fails for c08

parent cfec4daf
Loading
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -277,12 +277,12 @@ class EVS(Processing):
                md_file_out = out_file.parent / (out_file.name + ".met")
                copyfile(md_file_in, md_file_out)
                # TODO: add next part for MASA
                if split_chan_bs_unprocessed != split_chan_bs and self.tx_condition:
                    out_file_meta_unprocessed = (
                        out_file.parent
                        / f"{out_file.stem.split('.')[0]}.evs.noerror{out_file.suffix}.{idx}.csv"
                    )
                    copyfile(in_meta[idx], out_file_meta_unprocessed)
                # if split_chan_bs_unprocessed != split_chan_bs and self.tx_condition:
                #     out_file_meta_unprocessed = (
                #         out_file.parent
                #         / f"{out_file.stem.split('.')[0]}.evs.noerror{out_file.suffix}.{idx}.csv"
                #     )
                #     copyfile(in_meta[idx], out_file_meta_unprocessed)

        elif out_file.suffix == ".txt":
            raise NotImplementedError(".txt file support is WIP")
+1 −1
Original line number Diff line number Diff line
@@ -197,7 +197,7 @@ HR_TRAJECTORIES_TO_TEST = [
""" Generate Test Items Configs """
INPUT_CONFIG_FILES = [
    str(TEST_VECTOR_DIR.joinpath("test_ISM.yml")),
    # str(TEST_VECTOR_DIR.joinpath("test_MASA.yml")),
    str(TEST_VECTOR_DIR.joinpath("test_MASA.yml")),
    str(TEST_VECTOR_DIR.joinpath("test_MC.yml")),
    str(TEST_VECTOR_DIR.joinpath("test_SBA.yml")),
]
+295 −0
Original line number Diff line number Diff line
---
################################################
# General configuration
################################################
### Name of test; default = YYYYMMDD_HH.MM.SS_listening_test
# name: test SBA
### Date; default = YYYYMMDD_HH.MM.SS
# date: 2023.06.30
### git commit SHA; default = git rev-parse HEAD
# git_sha: abc123

### Whether to use multiprocessing; default = true
# multiprocessing: false
### Deletion of temporary directories containing 
### intermediate processing files, bitstreams etc.; default = false
# delete_tmp: true
### Master seed for random processes like bitstream error pattern generation; default = 0
master_seed: 5

### Any relative paths will be interpreted relative to the working directory the script is called from!
### Usage of absolute paths is recommended.
### Do not use file names with dots "." in them! This is not supported, use "_" instead
### For Windows user: please use double back slash '\\' in paths and add '.exe' to executable definitions
### REQUIRED: Input path or file
input_path: "./tests/concatenation_folder/MASA"
### REQUIRED: Output path or file
output_path: "./tests/temp_output_MASA"
### Metadata path or file(s)
### If input format is ISM{1-4} a path for the metadata files can be specified;
### default = null (for ISM search for item_name.{wav, raw, pcm}.{0-3}.csv in input folder, otherise ignored)
# metadata_path:
    ### Path can be set for all items with the 'all_items' key (automatic search for item_name.{wav, raw, pcm}.{0-3}.csv within this folder)
    # all_items: ".../metadata_folder"
    ### Path can be set for all items individually with 'item{1-4}' keys
    ### 'item{1-4}' keys can also be renamed to the input file names including extension {wav, raw, pcm}
    ### Either list individual files for all objects or name folder for automatic search for one item
    # item1:
        # - ".../meta_all_obj"
    # item2:
        # - ".../meta_obj1.csv"
        # - ".../meta_ob2.csv"
    # noise.wav:
        # - ".../metadata_folder_for_noise_item"

### Select only a subset of items
### searches for the specified substring in found filenames; default = null
# input_select:
#  - "48kHz"

################################################
### Input configuration
################################################
input:
    ### REQUIRED: Input format
    fmt: "FOA"
    ### Input sampling rate in Hz needed for headerless audio files; default = 48000
    # fs: 32000

################################################
### Pre-processing on individual items
################################################
### Pre-processing step performed prior to core processing for all conditions
### If not defined, preprocessing step is skipped
preprocessing:
    ### Target format used in rendering from input format; default = null (no rendering)
    # fmt: "7_1_4"
    ### Define mask (HP50 or 20KBP) for input signal filtering; default = null
    mask: "HP50"
    ### Target sampling rate in Hz for resampling; default = null (no resampling)
    # fs: 32000
    ### Target loudness in LKFS; default = null (no loudness change applied)
    loudness: -30
    ### Spatial audio format in which loudness is adjusted (only used if preprocessing loudness is not null);
    ### default = null (uses preprocessing fmt if possible)
    # loudness_fmt: "MONO"
    ### Pre-/post-trim individual signal(s) (ms) (negative values pad silence); default = 0
    # trim:
        # - 50
        # - -50
    ### Flag for using noise (amplitude +-4) instead of silence for padding; default = false (silence)
    # pad_noise: true
    ### Value for application of delay (ms) (negative values advance); default = 0
    # delay: 20
    ### Length of window used at start/end of signal (ms); default = 0
    window: 100
    
################################################
### Pre-processing on whole signal(s)
################################################
preprocessing_2:
    ### Options for processing of the concatenated item (concatenate_input: true) or
    ### the individual items (concatenate_input: false) after previous pre-processing step
    ### Horizontally concatenate input items into one long file; default = false
    concatenate_input: true
    ### Specify the concatenation order in a list of strings. If not specified, the concatenation order would be
    ### as per the filesystem on the users' device
    ### Should only be used if concatenate_input = true
    ### Specify the filename with extension.
    ### For example, concatenation_order: ["file3.wav", "file1.wav", "file4.wav", "file2.wav"]
    # concatenation_order: []
    ### Specify preamble duration in ms; default = 0
    preamble: 10000
    ### Flag wheter to use noise (amplitude +-4) for the preamble or silence; default = false (silence)
    preamble_noise: true
    ### Additive background noise
    # background_noise:
        ### REQUIRED: SNR for background noise in dB
        # snr: 10
        ### REQUIRED: Path to background noise, must have same format and sampling rate as input signal(s)
        # background_noise_path: ".../noise.wav"
        ### Seed for delay offest; default = 0
        # seed_delay: 10

#################################################
### Bitstream processing
#################################################
### Bitstream processing (transport simulation) done after encoding and before decoding
### e.g. frame error insertion or transport simulation for JBM testing
### can be given globally here or in individual conditions of type ivas or evs
# tx:
    ### REQUIRED: Type of bitstream processing; possible types: "JBM" or "FER"
    # type: "JBM"
    
    ### JBM
    ### REQUIRED: either error_pattern or error_profile
    ### delay error profile file
    # error_pattern: ".../dly_error_profile.dat"
    ### Index of one of the existing delay error profile files to use (1-11)
    # error_profile: 5
    ## nFramesPerPacket parameter for the network simulator; default = 1
    # n_frames_per_packet: 2
    
    ### FER
    ### REQUIRED: either error_pattern or error_rate
    ### Frame error pattern file
    # error_pattern: "path/pattern.192"
    ### Error rate in percent
    # error_rate: 5
    ### Additional seed to specify number of preruns; default = 0
    # prerun_seed: 2
    
################################################
### Configuration for conditions under test
################################################
### List of conditions to generate
### Name of the key will be used as output directory name
###     conditions must specify the "type" key which may be one of the following options:
###     ref        generate the reference condition
###     lp3k5      generate a low-pass anchor with cut-off frequency 3.5 kHz
###     lp7k       generate a low-pass anchor with cut-off frequency 7 kHz
###     mnru       generate MNRU condition
###     esdru      generate ESDRU condition
###     mono_dmx   generate mono downmix condition
###     evs        generate an EVS coded condition (see below examples for additional required keys)
###     ivas       generate an IVAS coded condition (see below examples for additional required keys)
conditions_to_generate:
  ### Reference and anchor conditions ##########################
  c01:
      ### REQUIRED: type of condition
      type: ref
      ### optional low-pass cut-off frequency in Hz; default = null
      # out_fc: 22500
  c02:
      ### REQUIRED: type of condition
      type: lp7k
  c03:
      ### REQUIRED: type of condition
      type: mnru
      ### REQUIRED: the ratio of speech power to modulated noise power in dB
      q: 20
  c04:
      ### REQUIRED: type of condition
      type: esdru
      ### REQUIRED: spatial degradation value between 0 and 1
      alpha: 0.5
      
  ### IVAS condition ###############################
  c06:
      ### REQUIRED: type of condition
      type: ivas
      ### REQUIRED: Bitrates to use for coding
      bitrates:
          - 160000
          # - 32000
      ### Encoder options
      cod:
          fmt: "MASA2"
          ### Path to encoder binary; default search for IVAS_cod in bin folder (primary) and PATH (secondary)
          #bin: ~/git/ivas-codec/IVAS_cod
          ### Encoder input sampling rate in Hz (resampling performed in case of mismatch); default = null (no resampling)
          # fs: 32000
          ### Additional commandline options; default = null
          # opts: ["-q", "-dtx", 4]
      ### Decoder options
      dec:
          ### Path to decoder binary; default search for IVAS_dec in bin folder (primary) and PATH (secondary)
          #bin: ~/git/ivas-codec/IVAS_dec
          ### Decoder output format; default = postprocessing fmt
          fmt: "MASA2"
          ### Decoder output sampling rate; default = null (same as input)
          # fs: 48000
          ### Additional commandline options; default = null
          # opts: ["-q", "-no_delay_cmp"]
      ### Bitstream options
      # tx:
          ### For possible arguments see overall bitstream modification

  ### IVAS condition ###############################
  c07:
      ### REQUIRED: type of condition
      type: ivas
      ### REQUIRED: Bitrates to use for coding
      bitrates:
          - 160000
          # - 32000
      ### Encoder options
      cod:
          fmt: "MASA2"
          ### Path to encoder binary; default search for IVAS_cod in bin folder (primary) and PATH (secondary)
          #bin: ~/git/ivas-codec/IVAS_cod
          ### Encoder input sampling rate in Hz (resampling performed in case of mismatch); default = null (no resampling)
          # fs: 32000
          ### Additional commandline options; default = null
          # opts: ["-q", "-dtx", 4]
      ### Decoder options
      dec:
          ### Path to decoder binary; default search for IVAS_dec in bin folder (primary) and PATH (secondary)
          #bin: ~/git/ivas-codec/IVAS_dec
          ### Decoder output format; default = postprocessing fmt
          # fmt: "CICP19"
          ### Decoder output sampling rate; default = null (same as input)
          # fs: 48000
          ### Additional commandline options; default = null
          # opts: ["-q", "-no_delay_cmp"]
      ### Bitstream options
      tx:
          ### For possible arguments see overall bitstream modification
          type: "FER"
          error_rate: 3
          prerun_seed: 2
            
  ### EVS condition ################################
  c08:
      ### REQUIRED: type of condition
      type: evs
      ### REQUIRED: Bitrates to use for coding
      ### For EVS mono, this may be a per-channel bitrate configuration (must match input/preprocessing format!)
      ### the last value will be repeated if too few are specified
      bitrates:
          # - 9600
          - [13200, 13200, 8000, 13200, 9600]
      cod:
          fmt: "MASA2"
          ### Path to encoder binary; default search for EVS_cod in bin folder (primary) and PATH (secondary)
          #bin: EVS_cod
          ### Encoder input sampling rate in Hz (resampling performed in case of mismatch); default = null (no resampling)
          # fs: 32000
      dec:
          fmt: "MASA2"
          ### Path to encoder binary; default search for EVS_dec in bin folder (primary) and PATH (secondary)
          #bin: EVS_dec
          ### Decoder output sampling rate; default = null (same as input)
          # fs: 48000
      tx:
          ### For possible arguments see overall bitstream modification
          type: "FER"
          error_rate: 3
          prerun_seed: 2

################################################
### Post-processing
################################################
### Post-processing step performed after core processing for all conditions
### Post-processing is required and can not be omitted
postprocessing:
    ### REQUIRED: Target format for output
    fmt: ["MASA2", "BINAURAL"]
    ### REQUIRED: Target sampling rate in Hz for resampling
    fs: 48000
    ### Low-pass cut-off frequency in Hz; default = null (no filtering)
    # lp_cutoff: 24000
    ### Target loudness in LKFS; default = null (no loudness change applied)
    loudness: -26
    ### Spatial audio format in which loudness is adjusted (only used if preprocessing loudness is not null);
    ### default = null (uses postprocessing fmt if possible)
    # loudness_fmt: null
    ### Name of custom binaural dataset (without prefix or suffix);
    ### default = null (ORANGE53(_Dolby) for BINAURAL, IISofficialMPEG222UC for BINAURAL_ROOM)
    # bin_dataset: SADIE
    ### Render LFE to binaural output with the specified gain (only valid for channel-based input); default = null
    # bin_lfe_gain: 1
    ### Flag whether output should be limited to avoid clipping (can alter target loudness); default = false
    limit: true
    ### Head-tracking trajectory file for binaural output; default = null
    # trajectory: "path/to/file"
+1 −1
Original line number Diff line number Diff line
@@ -251,6 +251,7 @@ conditions_to_generate:
          # - 9600
          - [13200, 13200, 8000, 13200, 9600]
      cod:
          fmt: "PLANARFOA"
          ### Path to encoder binary; default search for EVS_cod in bin folder (primary) and PATH (secondary)
          #bin: EVS_cod
          ### Encoder input sampling rate in Hz (resampling performed in case of mismatch); default = null (no resampling)
@@ -260,7 +261,6 @@ conditions_to_generate:
          #bin: EVS_dec
          ### Decoder output sampling rate; default = null (same as input)
          # fs: 48000
      sba_fmt: "PLANARFOA"

################################################
### Post-processing
+3 −1
Original line number Diff line number Diff line
@@ -61,10 +61,12 @@ def test_generate_test_items(cfg):
        num_channels = 4  # test ISM4
    elif "SBA" in cfg:
        num_channels = 4  # test FOA
    elif "MASA" in cfg:
        num_channels = 4  # test MASA with FOA input
    else:
        raise ValueError("Test setup missing")

    # create input folder for MC, SBA and ISM tests with concatenation
    # create input folder for MC, SBA, MASA and ISM tests with concatenation
    input_path.mkdir(exist_ok=True, parents=True)

    # copy items to folder -> pink noise and spectral test