Microphone input to raspberry pi 3 to work in browser - usb

I attached a PlayStationEye USB mic/camera to my pi 3 and was able to get the microphone working with arecord with commands such as arecord -D plughw:0,0 -f cd ./test.wav. My ~/.asoundrc is identical to the file shown here here.
However, when I try to use the mic through the browser it will not work. I tried various websites with no luck. My end goal is to use this mic to do speech recognition via some platform but one step at a time. Any suggestions as to how and begin to start troubleshooting this? Chromium does show the correct default devices in the settings.
I'm at a total loss and there is little to nothing I can find out there. For examples this post does not apply because the browser certainly sees it. Could it be a latency problem of some sort?

If it works with "arecord" command, you should be able to capture the audio on the web browser as well.
You should check your Microphone setting under the Chromium Content Privacy Setting and make sure you select your USB Microphone in the drop-down options.
All the best.

Related

Headless Setup of Asus Tinker Board S

I am trying to set up Tinker Board headlessly as I don't have access to a wired keyboard and mouse.
One method I know that works for Raspi is by creating an SSH file while setting it up and a wpa_supplicant.conf file to provide wifi details. I have flashed the latest Tinker OS v2.2.9 onto the eMMC present on the board as per the instructions. But, in this case I am not able to access the drive once flashed (Contrary to raspi setup).
Is there a way to set it up headlessly?
Thank you for taking out time to read this and helping out.

using webrtc for audio broadcast

I'm trying to stream a microphone/audio to multiple clients.
the broadcaster is a screenless raspberry, so I can't open a Webbrowser and click on "share mircophone"
The clients will be using their smartphone to listen.
the latency must be super low.
I did not find any WebRTC Demo that worked. All of them are either p2p or the scalable Broadcasting from muaz khan is only working for the initiator; not clients.
I came across Janus (which I didn't really understand what exactly this is doing) but I don't get how to install this and how to configure it.
Is there any way to easily share the microphone's output via WebRTC? Something like Apache hosting a simple website where the microphone audio is hosted on?
Thanks for all the ideas on how to solve it!
Is there any way to easily share the microphone's output via WebRTC?
No. There's nothing easy or simple about WebRTC.
the broadcaster is a screenless raspberry, so I can't open a Webbrowser and click on "share mircophone"
This is the simplest option... running a browser. Are you sure you need to actually allow it to access the audio device?
In the past, I've used a flag on Chromium to get around this problem. I don't remember exactly what that flag was, but looking at the list, it might have been...
--use-fake-ui-for-media-stream
You might also be able to use --enable-kiosk-mode.
At a minimum, if you were to open the browser interactively and enable access, that page would get automatic access in the future.
I did not find any WebRTC Demo that worked. All of them are either p2p
WebRTC is peer-to-peer, but remember that the "server" can be one of those "peers".
Finally, you can look into using GStreamer, but don't expect anything quick and easy. https://github.com/centricular/gstwebrtc-demos

webcam cannot be accessed by WSL

I'm very new to WSL. I want to run a python code on ubuntu shell on my win10 PC. This code needs access to webcam, but it seems that the webcam is not opened properly..I have checked online and I found several posts 1-2 years ago which said that the integrated webcam cannot be accessed by WSL..Is there any update or trick that can use webcam on WSL?
Many thanks!
You can't still access the webcam in WSL but there are several ways to access the video stream in WSL. The most obvious one is converting your webcam to a web-based streaming protocol like RTSP, MPEG, FFMPEG streams (example) where you get almost similar experiences.
Also, there are many applications where you can make your webcam as an IPcam stream then use the stream URL instead of using the camera index in OpenCV or any other application.

Connecting the Raspberry Pi 3 with a 3G dongle (Qualcomm Modem)

I recently bought a 3G dongle for a project I'm working on. I want my Raspberry Pi to be able to receive SMS messages and respond to them. I got a HSDPA 3g dongle with a 7.2mbps connection. I've set up the dongle on Windows with an A1 (not sure if you guys know this provider) sim and it works fine. I can connect to the internet just fine and also receive text messages (SMS)
However when I try connecting it to my Raspberry Pi (with Raspbian OS) then it doesn't work. It's always show as a "Mass Storage Device".
I tried my luck with usb_modeswitch and wvdial and with Sakis3g as well, but I can't get it to work. My problem with usb_modeswitch and wvdial was that even after I tried everything explained on these 2 blog posts (https://www.thefanclub.co.za/how-to/how-setup-usb-3g-modem-raspberry-pi-using-usbmodeswitch-and-wvdial ; https://nicovddussen.wordpress.com/2014/11/12/setting-up-your-raspberry-pi-to-work-with-a-3g-dongle/) it still didn't switch to the modem mode. It always stays at the "Mass Storage Mode". I saw an alternative and tried using Sakis3G, but with no luck as well. Seems like their website (sakis3g.org / sakis3g.com) is offline and you can't download certain .tar.gz folders/files anymore. I tried my luck with this blog post. (https://shkspr.mobi/blog/2012/07/3g-internet-on-raspberry-pi-success/)
And you guessed it, I couldn't get it to work either. It doesn't let me download the .gz folder/file because the website appears to be down.
It's a very big problem for my project and I would appreciate any help. It's really important. If anyone knows what I can do to fix this, please offer help. I'd really appreciate it.
Greetings.
Trying using tips supplied in this article
Unplug your modem
Open a terminal prompt
Install the usb-modeswitch package by typing in:
sudo apt-get install usb-modeswitch
EDIT... ADD REBOOT STEP
Reboot Pi
Plug the modem in,
Give it a couple of seconds and then try commands to confirm it worked
lsusb
ifconfig -a
You should see a new interface (Note the name of it - might be something like wwan0 )
To get this to acquire an IP address, edit the file /etc/network/interfaces and add the lines:
allow-hotplug wwan0
iface wwan0 inet dhcp
EDIT - REBOOT AGAIN
........
EDIT - UPDATE
Also note that the full version of sakis3G has this usb-modeswitch embedded in it.
You can still download code and look at instructions at old site that's been archived at:
http://web.archive.org/web/20130511202305/http://www.sakis3g.org/#download

Screen Sharing on webRTC

Is it possible to capture desktop screen sharing through webRTC.. As we know that it just captures the screen on the browser tab but is it possible to capture the whole desktop screen like navigating through files on computer or opening and viewing files like pdf etc..
Currently, only "stateless" screen capturing is available in RTCWeb implementations (both chrome & firefox). E.g.
Install chrome extension and then try this demo
Above demo will simply capture screen of "any" opened application's screen. Though, such screen capturing API fails to capture screens of full-screen game applications.
More information available here:
https://developer.chrome.com/extensions/desktopCapture (HTTPs+getUserMedia+postMessage)
Regarding remote desktop sharing from a web-browser, it has a pile
more security risks associated with it compared to screen sharing. The
UI/security aspects will be tough to deal with, and the feature will
be very susceptible to social engineering -- phone call: "this is
Google/Dell/Computer-Management; we've detected your machine has a
virus on it; could you browse to and we'll assist you in
removing it" -- etc. Ref
Yes, it's possible. At least using Chrome. There are several ways of doing it, but the simplest one is:
Add this constaint when you invoke getUserMedia:
constraints.video.mandatory.chromeMediaSource = 'screen'
When starting chrome, use this argument (chrome version > 35):
--enable-usermedia-screen-capturing
You can find an example of sharing screen and recording the shared screen at a remote server repository here:
https://github.com/Kurento/kurento-tutorial-js/blob/develop/kurento-recorder-screen/static/index.js
If you try to execute that example, play close attention to the security restrictions. All signalling needs to travel using TLS. Using raw HTTP will produce chrome to refuse sharing screen.
Yes it is. I recently worked on WebRTC and was able to stream desktop easily. Following links helped me implement my requirements :
Firefox Extension : http://mozilla.github.io/webrtc-landing/
Dont forget to add your *.github.io to about:config -> getUserMedia screensharing allowed domains
Google Chrome extension : https://developer.chrome.com/extensions/samples#search
Open this in Run : Chrome.exe --enable-usermedia-screen-capturing
Other Reference : https://github.com/muaz-khan/WebRTC-Experiment