Discussion:
[Freetel-codec2] About the encoded voice quality of SM1000
DB.JIANG
2016-01-16 02:47:41 UTC
Permalink
Dear VK5DGR,


Many Thanks to your and codec2 groups's effort on the project ,which open a door for Ham to the DV.


I have tried to implement the SM1000 on the disco STM32F4 board(my SM1000) and using the same IO and hardward interface with SM1000. Both TX and RX work now,but when I using the FreeDv to decode the modulated signal produced by my SM1000, the voice sound strange in some word of a sentence. That means a huge distortion occured in that word period. If I record the signal sent by my SM1000 and play back it to my SM1000, the issues is still there. Given that , the RX path of my SM1000 work fine and can clearly decode the modulated signal sent by FreeDv. I had checked the MIC amp. output signal level to the ADC, no clip found.


So I have to ask :


1. If the encoder and modulator require some special input voice level or other requirement?


2. Are there any different between FreeDv and SM1000 in the codec2 and fdmdv portion ,which might leading to the issue?





Thanks for all and Best Regards,


James Jiang
David Rowe
2016-01-16 06:10:06 UTC
Permalink
Hello James,

Nice work on getting your version of the SM1000 hardware/software
working. If the rx side is working you must bve very close.

1/ Nothing special, I think I used most of the dynamic range of the ADC,
so a few Vpp. Make sure the ADC input is DC biased at about 1.5V

2/ No they are identical - we compile the same Freedv API code for both
the FreeDV GUI program and the SM1000.

Are you seeing the clip led blink on the peaks of your signal in transmit?

How does the FreeDV GUI scatter plot look with the signal from the
SM1000? Do you get frames sync and a good (>15dB) SNR?

Cheers,

David
Post by DB.JIANG
Dear VK5DGR,
Many Thanks to your and codec2 groups's effort on the project ,which
open a door for Ham to the DV.
I have tried to implement the SM1000 on the disco STM32F4 board(my
SM1000) and using the same IO and hardward interface with SM1000. Both
TX and RX work now,but when I using the FreeDv to decode the modulated
signal produced by my SM1000, the voice sound strange in some word of a
sentence. That means a huge distortion occured in that word period. If I
record the signal sent by my SM1000 and play back it to my SM1000, the
issues is still there. Given that , the RX path of my SM1000 work fine
and can clearly decode the modulated signal sent by FreeDv. I had
checked the MIC amp. output signal level to the ADC, no clip found.
1. If the encoder and modulator require some special input voice
level or other requirement?
2. Are there any different between FreeDv and SM1000 in the codec2 and
fdmdv portion ,which might leading to the issue?
Thanks for all and Best Regards,
James Jiang
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
DB.JIANG
2016-01-16 08:47:57 UTC
Permalink
Dear David:


Thanks for so soon reply.


I have checked the ADC is DC biased at half of the VCC and the voice is arround 1Vpp,and when TX in analog mode, the voice is clear with no distortion when hear by a earphone. I haven't check the TX signal in scatter plot and together with the SNR ,but it might be in sync state as the decoded audio is constantly without any break, just some distortion. I will check the TX signal quality again tonight and report to you later.


By the way, I am willing to test the 700B mode within SM1000 hardware and had heard that the RAM of STM32F4 is not enough to alloca two sets varible for both mode. So how about to change the code and just use the 700B mode ? Does the hardware resource meet the requirement of the cohpsk modulation ?





Many Thanks!



James Jiang
David Rowe
2016-01-16 20:48:58 UTC
Permalink
Hi James,

To port 700B to the SM1000 requires some engineering. I have described
the process reqd in several previous posts to this list and the digital
voice list.

- David
Post by DB.JIANG
Thanks for so soon reply.
I have checked the ADC is DC biased at half of the VCC and the voice is
arround 1Vpp,and when TX in analog mode, the voice is clear with no
distortion when hear by a earphone. I haven't check the TX signal in
scatter plot and together with the SNR ,but it might be in sync state as
the decoded audio is constantly without any break, just some
distortion. I will check the TX signal quality again tonight and report
to you later.
By the way, I am willing to test the 700B mode within SM1000 hardware
and had heard that the RAM of STM32F4 is not enough to alloca two sets
varible for both mode. So how about to change the code and just use the
700B mode ? Does the hardware resource meet the requirement of the
cohpsk modulation ?
Many Thanks!
James Jiang
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
DB.JIANG
2016-01-18 08:49:44 UTC
Permalink
Dear David,


Thanks for your advice!





I had found out the TX audio distortion of my SM1000 is causing by the MIC amp., which I used is a noise one. And I also found the SM1000 may be more sensitive to the background noise than FreeDv, because FreeDv had involve the prefilter to handle the MIC signal.Am I right? The SNR reach 22db from SM1000 to FreeDv and sync is steady. I will test it on air and report later.





Refer to 700B mode, I had read your post on Sep. 24,2015. It seems not an easy job for me. But for the amazing performance on noise band, I will try anyway. The step you advised are as below:


1. First step is to write a unit test to printf out the memory
usage of the cohpsk modem states.


2. Next step is a unittest that runs on a STM32F4 Discovery board to
profile the CPU load.


Right?





Thanks and Best Regards,


James Jiang
David Rowe
2016-01-18 19:55:20 UTC
Permalink
Hi James,

Well done on finding your problem and getting your SM1000 to work.
Quite a few people have reported that the SM1000 works better with an
external headset-style microphone. I am not sure why - it would be an
interesting project to find out why.

Yes it's true the FreeDV GUI program has Speex noise reduction software,
but the SM1000 does not.

22dB is a fine SNR - that's about as good as it gets. Well done.

Thank you for working on 700B port. I would be happy to work with you
on this project. Yes you have the first two steps correct. When you
write the programs (1) and (2) below please email me off-list and I will
arrange SVN write access so you can check the code in.

Thanks,

David
Post by DB.JIANG
Dear David,
Thanks for your advice!
I had found out the TX audio distortion of my SM1000 is causing by the
MIC amp., which I used is a noise one. And I also found the SM1000 may
be more sensitive to the background noise than FreeDv,
because FreeDv had involve the prefilter to handle the MIC signal.Am I
right? The SNR reach 22db from SM1000 to FreeDv and sync is steady. I
will test it on air and report later.
Refer to 700B mode, I had read your post on Sep. 24,2015. It seems not
an easy job for me. But for the amazing performance on noise band, I
1. First step is to write a unit test to printf out the memory
usage of the cohpsk modem states.
2. Next step is a unittest that runs on a STM32F4 Discovery board to
profile the CPU load.
Right?
Thanks and Best Regards,
James Jiang
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
Steve
2016-01-19 01:44:57 UTC
Permalink
I'm not sure if any of this is valuable, but on a 64-bit CPU (Pentium
G645T) the coherent+700 codec was about: 125k of RAM, which should fit
with room to spare for 192 k chips. 75k of Flash or so. (bss needs to
be in RAM). I was using 4-byte single-precision floats.

text data bss dec
20598 712 111008 132318
32611 1576 13608 47795

The transmit routine is not CPU intensive, but the receiver code can
get quite hungry when you are out of sync.

Since I don't think you need the rate converter (48k<->7500) that will
save a lot of CPU and some RAM.

I think the 700 codec is much different in size from the 1300 codec.

Back of the envelope stuff...
David Rowe
2016-01-19 04:12:39 UTC
Permalink
Thanks Steve,

A breakdown of the memory usage for the cohpsk modem as per (1) in the
previous posts on this subject will let us do some tuning. The FDMDV
modem started out at several MBytes.

It would be a good idea to perform (2) CPU load measurements in and out
of sync.

- David
Post by Steve
I'm not sure if any of this is valuable, but on a 64-bit CPU (Pentium
G645T) the coherent+700 codec was about: 125k of RAM, which should fit
with room to spare for 192 k chips. 75k of Flash or so. (bss needs to
be in RAM). I was using 4-byte single-precision floats.
text data bss dec
20598 712 111008 132318
32611 1576 13608 47795
The transmit routine is not CPU intensive, but the receiver code can
get quite hungry when you are out of sync.
Since I don't think you need the rate converter (48k<->7500) that will
save a lot of CPU and some RAM.
I think the 700 codec is much different in size from the 1300 codec.
Back of the envelope stuff...
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
Steve
2016-01-19 01:49:25 UTC
Permalink
Hmm, left off that the top numbers were for cohpsk, bottom for 700 codec.

Also meant to say "NOT much different" on codec sizes.

argh...
DB.JIANG
2016-01-19 15:13:14 UTC
Permalink
Dear David,


Thanks for your kindly advice!


I feel that the sounds produced by FreeDv is better than SM1000 with the same PC MIC. I guess that is causing by the better prefilter in FreeDv.


Further more,I am just a beginner at the programming. I have to learn how to build the original SM1000 at 1600 first with gcc tools as I haven't used them before. But I am very happy if I can workout something and report to you later.





Thanks and Best Regards,


James Jiang

Loading...