Aleksandr Mikoff
2016-Jul-12 16:34 UTC
[opus] High noise after encoding/decoding procedure
Hello everyone. I have a problem with a high level of noise after opus encoding/decoding procedure. If I stream a raw data from the microphone and send it back to the speakers I hear the clear sound (with a small delay). If I encode each frame, decode it and send it back to the speakers I hear a very noisy signal - it is so large, so it is almost impossible to distinguish words in my speech... Should I preprocess the raw pcm data somehow before feeding it to the opus? Is it ok, that I changed few parameters in "defines.h" file (to suppress the RAM requirements - I have only 60 KB RAM free on my STM32 board)? I changed the ENCODER_NUM_CHANNELS 1 and DECODER_NUM_CHANNELS to one, and MAX_FS_KHZ to 8. In the code I forced the codec to use SILK mode and to have only one channel. I would be happy for any feedback - where to start and what to check the first. Thanks! WBR, Aleksandr -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.xiph.org/pipermail/opus/attachments/20160712/94f7d68c/attachment.html>
On 2016-07-12 9:34 AM, Aleksandr Mikoff wrote:> If I encode each frame, decode it and send it back to the speakers I > hear a very noisy signal - it is so large, so it is almost impossible to > distinguish words in my speech...This effect can be caused by some data type issues: - If you are using opus_encode() and opus_decode(), make sure to use 16-bit signed integer samples in the pcm buffer. If you have 8-bit samples you'll have to convert them. - Make sure you're passing the length of the pcm buffer in _samples_ not _bytes_. - Make sure you're passing the size of the compressed opus data in _bytes_.> Is it ok, that I changed few parameters in "defines.h" file (to > suppress the RAM requirements - I have only 60 KB RAM free on my STM32 > board)? I changed the ENCODER_NUM_CHANNELS 1 and DECODER_NUM_CHANNELS to > one, and MAX_FS_KHZ to 8.That's not a tested configuration, so it's possible this broke something. If you make the same changes and build for a desktop target, does audio round-trip through opus_demo correctly? -r
Aleksandr Mikoff
2016-Jul-14 12:00 UTC
[opus] High noise after encoding/decoding procedure
Thanks a lot for your tips. What I have to done to debug: got the raw wav-file, compressed/decompressed it on my PC and saved OPUS packets as an array. Moved this array to the embedded platform and made sure that the frames decoded from the OPUS packets are the same. However, the high noise level was the same, but it wasn`t caused by OPUS. The problem was with my sound bus between an embedded device and the speaker - there was an one bit offset between FS signal and sound slots, which I didn't take into account. Now I have the clear enough sound with 30% MCU load for full duplex sound. 2016-07-12 20:46 GMT+03:00 Ralph Giles <giles at thaumas.net>:> On 2016-07-12 9:34 AM, Aleksandr Mikoff wrote: > > > If I encode each frame, decode it and send it back to the speakers I > > hear a very noisy signal - it is so large, so it is almost impossible to > > distinguish words in my speech... > > This effect can be caused by some data type issues: > > - If you are using opus_encode() and opus_decode(), make sure to use > 16-bit signed integer samples in the pcm buffer. If you have 8-bit > samples you'll have to convert them. > - Make sure you're passing the length of the pcm buffer in _samples_ > not _bytes_. > - Make sure you're passing the size of the compressed opus data in > _bytes_. > > > Is it ok, that I changed few parameters in "defines.h" file (to > > suppress the RAM requirements - I have only 60 KB RAM free on my STM32 > > board)? I changed the ENCODER_NUM_CHANNELS 1 and DECODER_NUM_CHANNELS to > > one, and MAX_FS_KHZ to 8. > > That's not a tested configuration, so it's possible this broke > something. If you make the same changes and build for a desktop target, > does audio round-trip through opus_demo correctly? > > -r > > _______________________________________________ > opus mailing list > opus at xiph.org > http://lists.xiph.org/mailman/listinfo/opus >-- С уважением, Миков Александр IMU based localization: https://youtu.be/ge9EXeF7SJs RTL-Service (RealTrac) won EvAAL competition: http://evaal.aaloa.org/2013/results-2013 RealTrac video presentation (in Russian): http://youtu.be/8wI8_wiE8jQ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.xiph.org/pipermail/opus/attachments/20160714/1aab3f0b/attachment.html>