This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AER NLP settings

Hi there,

C5515

aer_c55l_cpuv3.3_obj_17_0_0_0

CCS v5.5

Could you please help me to tune NLP properly? I am just trying to optimize AER in my project and whatever I set for nlp_combloss_target and  nlp_clip_agg_l2, TX output is chopped at the beginning or at the end of the phrase even without any activity from the far-end. Before that I made sure that TX/RX gains are set correctly and ERLE is above 20dB. So when I actually disable NLP for TX path it sounds reasonably well but on far-end the echo is becoming noticeable.

Thanks

  • Hi Stan
    The key AER expert is likely going to be out for next 1-2 weeks. Will see if someone else can address, but realistically responses could be delayed.
    Regards
    Mukul
  • Hi Mukul

    Thanks for reply. It is OK I can wait.

  • Hi Stan,

    If the far-end doesn't have any activity, the near end speech should go through without any attenuation, no matter how NLP is configured. It must be something else. Can you provide more information such as:
    1. Is this a real time test or simulation?
    2. If it's real time, do you have a capture of near-end and far-end signals?
    3. If this is simulation, can you send the speech files that provide near-end and far-end signals?
    4. configuration and parameters of AER.

    Regards,
    jianzhong
  • Hi jianzhong,

    Thank you for the replay.

    To make myself clear I would like to use this picture to address signals:

    So there is no attenuation on TXout if RXin is muted. The problem is different. It is just like chopping the beginning of phrase on TX_out even without any signal on RX_in. However, I have some improvements since that time but anyway I would like to get a feedback if AER works well or nor.

    Some answers on your questions:

    1. Real-time

    2. I can capture TX_out and RX_out. 

    3. I can provide all files.

    4. NLP parameters:

    aer_ctl.nlp_combloss_target = 1000; 
    aer_ctl.nlp_clip_agg_l2 = 4;

    While I am preparing near-end and far-end signals could you please help me with another question?

    My initial aim is to get AER worked in HF mode with Fs= 8khz. I have looked through the AER demo and I do not see any difference in required buffers when I change Sampling rate bitfield from 0 to 7 in aersimcfg.txt. It always requires the same memory size:

    So could you please advise how to switch AER on 8kHz properly based on AER demo project?

    Thank you

  • Stan,

    The sizes of the required buffers depend on the maximum sampling rate which is configured through API aerCreate(). It is hard coded to 16kHz in the simulation. The sampling rate bitfield is used for run time configuration and does not affect buffer sizes. You can go to aer\test\siusim\siuaer.c for how to configure the maximum sampling rate. 

    Regards,

    Jianzhong

  • Jianzhong,

    When I changed aer_create_cfg.max_sampling_rate to aer_SRATE_8K total requested buffers size reduced almost twice from 27.446kB to 14.166kB which was quite expected. 

    However, how this corresponds with Table 5 in AER_Integration_Guide? According to this table 16kHz full band should take 54.624kB, 16KHz band-split – 29.076kB and 8kHz -28.084kB. But with aer_SRATE_8K requested buffer size is just 14.166kB.

    More questions:

    1 There is an aer_SRATE_RXOUT_TXIN_16K setting in siuaer.c it also should be changed to aer_SRATE_RXOUT_TXIN_8K?

    2 According to AER datasheet only 10 mS frames are acceptable which means switching sampling rate from 16kHz to 8kHz requires to change frame size from 160 samples to 80 per frame. AER automatically understands that or I need to set the frame size somewhere manually?

    3 All other modules like AGC and DRC also require to change max_sampling_rate to ***_SRATE_8K?

    4 Is it anything more I need to change to switch over 8kHz?

    Thank you.

  • Hi Stan,

    The total buffer size you got was in 16-bit word which is the minimum addressable unit on C55x. In the AER integration guide, memory requirement is in byte. The table may be a little out of date, but roughly total size given in the table is about twice as much as your number.

    For other questions,
    1. Yes.
    2. No, you don't need to set frame size.
    3. Yes, though the API is a little different for DRC.
    4. No.

    Regards,
    Jianzhong
  • Hi Jianzhong,

    Thank you for reply. Now it is becoming clear.  Some questions:

    1. So can I reduce the buffers up to the exact sizes that have been requested?

    2. In my real time project I have a warning: #10247-D creating output section "AERSEC_SPATBL1/AERSEC_SPATBL2" without a SECTIONS . I looked through the map-file these  two modules are parts of aer_c.a55L. Do I have to allocate this library in the defined place? If so is there a guide about that?

    3. How is important to bring DRC in the system where TX_out and RX_in are analog signals to/from PSTN?

    4. I am going to reach the same result on my real-time system as on AER demo. However, I am quite far from that. If I provide all AER, AGC settings and RX_out, TX_out, will it be enough to say what is wrong? Testing environment is:

    Thank you.

  • Hi Stan,

    Hi Stan,

    1. Yes.

    2. You need to do something like the following (in aer\test\lnkr\c55l\aertest_c55l.cmd)

    .aer_const > DATA1
    {
    ..\..\aer\lib\aer_c.a55L <aerffttb.o55L> (.const)
    ..\..\aer\lib\aer_c.a55L <aercostb.o55L> (.const)
    ..\..\aer\lib\aer_c.a55L <aernum.o55L> (.const)
    ..\..\aer\lib\aer_c.a55L <aergain.o55L> (.const)
    ..\..\aer\lib\aer_c.a55L <aercoh.o55L> (.const)
    ..\..\aer\lib\aer_c.a55L <aerspatbl.o55L> (AERSEC_SPATBL1)
    ..\..\aer\lib\aer_c.a55L <aerspatbl.o55L> (AERSEC_SPATBL2)
    ..\..\aer\lib\aer_c.a55L <drcgain.o55L> (.const)
    ..\..\aer\lib\aer_c.a55L <drctable.o55L> (.const)
    ..\..\aer\lib\aer_a.a55L <aerbsfilt.o55L> (.const)
    ..\..\aer\lib\aer_a.a55L <utilveclin2db.o55L> (.const)
    } PAGE 1

    3. DRC can be used between AER and RX_in to boost loudness. You can add DRC after AER functions properly. 

    4. Providing TX_in is important as well. 

    Regards,

    Jianzhong

  • Hi Jianzhong,

    got it. I need to reconfigure AIC codec to capture all required signals and reallocate modules properly. Will come back soon.

    Thank you.

  • Hi Jianzhong,

    Can we proceed with this thread or I should  create a new topic? I am back and switched to 5515EVM to have the possibility to record all signals. My goal is to have RXOUT and TXOUT the same as in simulation. So now my environment is ready for this.

    Thank you,

    Stan 

  • Hi Jianzhong,

    I cannot actually understand why I was unable to get debug statistics through the aerGetPerformance function. In my code it is being called every 10 times I feed AER with a new frame. However, I tried different approached and neither of them worked. aerDebugStat_t  always contains rubbish. What is the proper procedure to get the debug statistics? 

    Thank you.

    Stan