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.

Speech have plosive sound point processed by C6713

Other Parts Discussed in Thread: CCSTUDIO, TMS320C6713B

I am working on speech signal processing on C6713.

Following the most popular method, the speech signal are processed frame by frame in an EDMA interrupt.

We can hear right speech when there is no algorithm. Also we can here right speech when the algorithm is running but we make the original speech output(This can show us that the algorithm can run realtime). However, when we output the processed speech(in the first picture), we hear plosive sound point. We do STFT to the speech, we can see that there is some unnormal line in the second figure above. and the time interval is 32ms. The SAME as the frame length. I have no idea what's wrong. We process each sample in one frame by for loop and using FastMath library.

P.S.: I have the same problem when I copy data from one buffer to another in memeory when using for loop, the problem disappeared when I substitute for loop by memcpy.

Another problem:

When linking the project, I got this warning :

[Linking...] "D:\CCStudio_v3.3\C6000\cgtools\bin\cl6x" -@"Debug.lkf"
<Linking>
warning: creating output section "text" without a SECTIONS specification

But i have this "text" setion in .cmd file as following:

SECTIONS
{
    "vectors"   >       vecs
    .cinit      >       IRAM
    .text       >       IRAM
    .stack      >       IRAM
    .bss        >       IRAM

.........

I do not know if this warning can cause some problems?

Any help will be appreciated!!

Beat regards,

Jiang pengfei

  • Jiang pengfei,

    PENGFEI JIANG said:
    when we output the processed speech(in the first picture), we hear plosive sound point.

    Either the result of the processing is incorrect or the wrong data is being written out. For the processing case, you will want to debug from the output buffer backwards. For the "wrong data" case you will want to compare the output data to the intended buffer data.

    PENGFEI JIANG said:
    we can see that there is some unnormal line in the second figure above. and the time interval is 32ms. The SAME as the frame length.

    The most common cause of noise in output is cache coherency. I am not sure that this could be your problem, but it is the first thing to ask. Does your code use cache invalidate and writeback/flush commands to force coherency between the cache and buffer memory?

    PENGFEI JIANG said:
    I have the same problem when I copy data from one buffer to another in memory when using for loop, the problem disappeared when I substitute for loop by memcpy.

    This is very unusual, since memcpy is essentially a pre-compiled for-loop. Could your code be taking too long to process the data?

    PENGFEI JIANG said:
    warning: creating output section "text" without a SECTIONS specification

    The compiler-generated section name has a leading "." in ".text". The warning message above does not. You most likely have a typo in an assembly function, because it is rare to explicitly name the .text section in compiled code.

    Regards,
    RandyP

     

    If this answers your question, please click the  Verify Answer  button below. If not, please reply back with more information.

  • Hi, Randy

    RandyP said:

    Either the result of the processing is incorrect or the wrong data is being written out. For the processing case, you will want to debug from the output buffer backwards. For the "wrong data" case you will want to compare the output data to the intended buffer data.

    I don't think so that it is the "wrong data" case, because I have check the buffer many times. And I think my processing should have no problem, because all other charactors are the same with computer simulation except the periodical plosive sound point(we can see nothing in time domain waveform, but some vertical lines in frequency domain).

    RanyP said:

    The most common cause of noise in output is cache coherency. I am not sure that this could be your problem, but it is the first thing to ask. Does your code use cache invalidate and writeback/flush commands to force coherency between the cache and buffer memory?

    I have no idea the concept of cache coherency now. I only allocate the cache in the link command file: IRAM. I think I didn't use cache anywhere else. Anyway, I think this may be the problem. Can you introduce me some documents that cover this issue, such as cache coherency, writeback/flush commands etc al?

    RandyP said:
    I have the same problem when I copy data from one buffer to another in memory when using for loop, the problem disappeared when I substitute for loop by memcpy.

    This is very unusual, since memcpy is essentially a pre-compiled for-loop. Could your code be taking too long to process the data?

    That may be happen. But not for this issure i am confronting.

    RandyP said:
    warning: creating output section "text" without a SECTIONS specification

    The compiler-generated section name has a leading "." in ".text". The warning message above does not. You most likely have a typo in an assembly function, because it is rare to explicitly name the .text section in compiled code.

    But I haven't write any assembly function by myself. And I haven't define any section in C by myself. Could that be the problem that IRAM(cache) have no enough space for .text section? There is no such warning when I run an "smaller" algorithm.

    Regards,
    Jiang Pengfei

     

  • PENGFEI JIANG said:
    Can you introduce me some documents that cover this issue, such as cache coherency, writeback/flush commands etc al?

    Please refer to the Two-level Internal Memory Reference Guide for your DSP. You can find this and all the related documentation in the TMS320C6713B Product Folder under Technical Documents.

    PENGFEI JIANG said:
    warning: creating output section "text" without a SECTIONS specification

    You will need to figure out where this is coming from and either fix the typo or add a section specification. Start with the linker output .map file for help figuring out where this output section comes from.

    Regards,
    RandyP