introlab/odas_web

Problem running in windows 10 and linux

gary0351 opened this issue · 13 comments

I installed nodejs/npm/electron. Got past gyp issue with install.

Windows distribution exe will not bring up web page. It lists ports to monitor on startup and does nothing else.

I set up a web app version of ODAS web using 'npm start' which brings up web page, displays noise and speech sources but hangs on recording. Switched to latest release which does same thing.

Perhaps I missed something when installing nodejs, etc. I reinstalled to make sure.

I set up same code running with ubuntu on virtualBox. It runs and sort of records audio <1 sec.
Which is better OS - win10 or linux or macOS? What was web server developed on?
Any insight would be appreciated.
Attached log files from win execution.
Thanks
Gary
ms-cmd-prompt.log
2018-11-01T15_06_40_420Z-debug.log

Seems like a lot of things are not running smoothly there. I am not a node expert in any way so I can't really pinpoint the problem from your logs.

Pre-compiled release are outdated, so that's that.

Web server was developed on both Mac and Linux. I also ran it on Windows. I don't think there is a "recommended os". Virtual Machines may be underpowered and/or experience problems with WebGL drivers, so I would try to avoid them. I think your problem on Ubuntu is simply that the recorder process can't keep up because system ressources are hoarded by the UI updates (the charts).

My advice would be to try to use Node 8 instead of 10, as it is the Node version the app was developed on and some package seems to not upgrade very well. (Mainly the gyp things)

Post Filtered and Separated Sources streams have 4 channels interleaved so 8 bytes includes one 16 bit sample in order for each channel.

Yes, that's right.

Data stream is Network Byte Ordered (Big Endian).

I'm like 90% sure that is correct. You may want to check the ODAS repo if testing both is time consuming.

I adapted the respeaker .cfg file for ODAS running on a respeaker core v2 demo board and it feeds audio to ODAS Web just fine.

Good, so we know your config file is properly written.

I am feeding PF (or SS) stream to android app using TCP socket and getting poor audio – does not sound like speech at all. Track and other streams currently go to ODAS Web. The app has a receive buffer size of 2048 bytes. I see data input of up to 1448 bytes from ODAS. Channel 0 is extracted from receive buffer to feed audio to another service. I’ll process the other channels when I get this working.

Two things I would check. Sample format that your Android APP accepts, wether it's signed, unsigned or float. Timing with the sample, packets always arrive in order in socket, but they can be "glued" together. As packet 1, 2 then 3 can arrive as 1+2 then 3. Thus, it is important to never discard bytes and to start from the first byte sent by ODAS while parsing.
You may want to take a look at recordings.js and audio-recorder.js for inspiration.

From what I seen in the past, this usually happens when either ODAS cannot process the audio in real time or the receiving end cannot keep up with the incoming data.

ODAS internal or socket buffer fill up and processing stops. I would take a look at CPU usage on the machine that’s running ODAS and on the machine receiving audio to see if any of them is saturated.

That was a feature under developpement in ODAS a few months ago, but the granular branch doesn’t exist anymore. I am not aware of the current state of this feature.

You could try to get more info on the ODAS repository.

The processing flow is as follow:

  • Potential feeds tracking
  • Tracking and audio feeds separation
  • Separation and tracking feeds post filtering

Post filtering is only applied to the separated audio to improve separation. I can be disabled if the resulting audio stream is not used. Tracking is based solely on the potential sources.

My pleasure. Feel free to open another issue if you experience other difficulties.