Use phone as microphone in Linux
I dual boot Windows and Ubuntu. Since I don't use any microphone on my desktop, I started using an app named "WO Mic" to connect my Android phone's microphone to my desktop in Windows. A good alternative, right?
Well, sadly, WO Mic is not supported on any Linux-based OS, so I would like to know if there are any alternatives or any app that could use my phone as microphone on Ubuntu over WiFi or USB. (but preferably wifi).
sound android microphone phone audio-recording
add a comment |
I dual boot Windows and Ubuntu. Since I don't use any microphone on my desktop, I started using an app named "WO Mic" to connect my Android phone's microphone to my desktop in Windows. A good alternative, right?
Well, sadly, WO Mic is not supported on any Linux-based OS, so I would like to know if there are any alternatives or any app that could use my phone as microphone on Ubuntu over WiFi or USB. (but preferably wifi).
sound android microphone phone audio-recording
add a comment |
I dual boot Windows and Ubuntu. Since I don't use any microphone on my desktop, I started using an app named "WO Mic" to connect my Android phone's microphone to my desktop in Windows. A good alternative, right?
Well, sadly, WO Mic is not supported on any Linux-based OS, so I would like to know if there are any alternatives or any app that could use my phone as microphone on Ubuntu over WiFi or USB. (but preferably wifi).
sound android microphone phone audio-recording
I dual boot Windows and Ubuntu. Since I don't use any microphone on my desktop, I started using an app named "WO Mic" to connect my Android phone's microphone to my desktop in Windows. A good alternative, right?
Well, sadly, WO Mic is not supported on any Linux-based OS, so I would like to know if there are any alternatives or any app that could use my phone as microphone on Ubuntu over WiFi or USB. (but preferably wifi).
sound android microphone phone audio-recording
sound android microphone phone audio-recording
edited Jul 30 '17 at 17:43
Zanna
50.6k13135241
50.6k13135241
asked Mar 3 '17 at 13:45
someanonsomeanon
41112
41112
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
Is this the program? Have you tried downloading the client/driver and following the instructions for Ubuntu?
Load driver module
$ sudo insmod wo_snd_capture-x86.ko
Connect from client
Conenct by Wifi. You can find the IP address on WO Mic app UI.
$ micclient-ubuntu-x86 -t Wifi 192.168.1.100
Connect by Bluetooth.
$ micclient-ubuntu-x86 -t Bluetooth xx:xx:xx:xx:xx:xx
xx:xx:xx:xx:xx:xx represents phone Bluetooth address. You can query it on your phone: Settings -> About phone -> Status -> Bluetooth address.
The above examples are for 32-bit Ubuntu. If you are using 64-bit, replace client and driver file name to xxx-x86_64 ones as downloaded.
1
I gotPlease first load ALSA snd-aloop.
, so I needed to do:sudo modprobe snd-aloop
and then I had to run themicclient-ubuntu-x86
as root (usingsudo
). And then it worked, yay.
– Amichai Schreiber
Jul 15 '17 at 7:09
This does not work. Only silence is recorded from the loopback device...
– Calmarius
Feb 1 '18 at 20:52
add a comment |
Mmmm I tried that app before but it does not work for me, so I recommend this method:
- First install ip camera on the phone, then install pulseaudio, when you have that done, open ipcamera and start the server on you phone, make sure that you pc is connected on the same network.
- Open Chrome or Firefox and type the IP address that ipcamera provides you (the ip will show in the app).
- In the browser click on audio player and choose HTML5, and make sure that you hear something.
- Open pulseaudio and go to the Playback tab, then click and show and select All Streams. You will see the chrome or firefox application playing the microphone.
- On the application section select Lookback for Chrome or Firefox; that will redirect the audio from you phone to the microphone channel, you can do the same but using VLC and deal better with issues like the lag.
Anyway to solved the lag issue?
– swdev
Jun 5 '18 at 4:55
2
Mmmm i am not sure but i think that this post can help you if you use vlc How to Fix Skipping and Lagging in VLC @swdev
– Maxtermax
Jun 6 '18 at 5:15
add a comment |
I use Mumble (desktop client) + Murmur (as LAN server) + Plumble (Android/iOS client). This results in the lowest latency I've ever achieved (sounds almost like normal loopback, theoretically 7ms WiFi delay + 2x 10ms codec delay = 27 ms).
https://github.com/pzmarzly/mic_over_mumble
Fragments of README (rev 59091372580f481320224532aeaaea84c9c07848)
Set all 3 programs to use best quality and minimal latency. Set mobile client to always streaming. Copy mic_over_mumble
anywhere - it will use ~/.mic_over_Mumble
as configuration directory. Run mic_over_mumble
, then connect your mobile device to LAN server. Then, set up your programs to use monitor of Mumble as input device. E.g. in OBS:
Copy of mic_over_mumble
script (rev 59091372580f481320224532aeaaea84c9c07848)
#!/bin/bash
set -e
# PAID = PulseAudio ID
# ID = PID / process ID
function main () {
if [ ! -e ~/.mic_over_Mumble ]; then
mkdir ~/.mic_over_Mumble
fi
cd ~/.mic_over_Mumble
rm murmur.ini | true
echo "bonjour=true" >> murmur.ini
echo "bandwidth=130000" >> murmur.ini
if [ ! -e ./initdone ]; then
echo "You will need to configure Mumble client to use the lowest possible latency."
echo "We will start Mumble now. Please complete setup wizard and go to settings to increase quality and decrease latency."
echo "Also, mute your microphone (if you have one) in Mumble."
echo "Then close Mumble."
run_mumble_client_wizard
touch ./initdone
fi
echo "Starting Mumble server (murmurd)..."
MUMBLE_SERVER_ID=`run_mumble_server_bg`
sleep 5
echo "Starting Mumble client..."
MUMBLE_CLIENT_ID=`run_mumble_client_bg`
sleep 5
echo "Fetching PulseAudio configuration..."
MUMBLE_CLIENT_PAID=`get_mumble_client_paid`
echo "Changing PulseAudio configuration..."
SINK_MODULE_PAID=`add_sink`
sleep 3
SINK_PAID=`get_sink_paid`
pacmd move-sink-input $MUMBLE_CLIENT_PAID $SINK_PAID
echo "Done. Please use pavucontrol to ensure everything works."
echo "Press Return to shut down..."
read -n1 -s
echo "Shutting down..."
echo "Stopping Mumble client..."
kill -KILL $MUMBLE_CLIENT_ID | true
sleep 2
echo "Stopping Mumble server..."
kill -KILL $MUMBLE_SERVER_ID | true
echo "Restoring PulseAudio configuration..."
pactl unload-module $SINK_MODULE_PAID
}
function run_mumble_client_wizard () {
mumble >/dev/null 2&>1
}
function run_mumble_client_bg () {
MUMBLE_URL="mumble://localhost"
mumble $MUMBLE_URL >/dev/null 2&>1 &
echo $!
}
function run_mumble_server_bg () {
murmurd -ini ./murmur.ini &
echo $!
}
function get_mumble_client_paid () {
pacmd list-sink-inputs |
egrep "index: |application.name = " |
cut_every_second_newline |
egrep Mumble |
print_second_column
}
function add_sink () {
pactl load-module
module-null-sink
sink_name="Loopback_of_Mumble"
sink_properties=device.description="Loopback_of_Mumble"
}
function get_sink_paid () {
pacmd list-sinks |
egrep "index: |name: " |
cut_every_second_newline |
egrep Loopback |
print_second_column
}
# https://serverfault.com/a/375098/449626
function cut_every_second_newline () {
awk 'ORS=NR%2?" ":"n"'
}
function print_second_column () {
awk '{print $2}'
}
main
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "89"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f889164%2fuse-phone-as-microphone-in-linux%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Is this the program? Have you tried downloading the client/driver and following the instructions for Ubuntu?
Load driver module
$ sudo insmod wo_snd_capture-x86.ko
Connect from client
Conenct by Wifi. You can find the IP address on WO Mic app UI.
$ micclient-ubuntu-x86 -t Wifi 192.168.1.100
Connect by Bluetooth.
$ micclient-ubuntu-x86 -t Bluetooth xx:xx:xx:xx:xx:xx
xx:xx:xx:xx:xx:xx represents phone Bluetooth address. You can query it on your phone: Settings -> About phone -> Status -> Bluetooth address.
The above examples are for 32-bit Ubuntu. If you are using 64-bit, replace client and driver file name to xxx-x86_64 ones as downloaded.
1
I gotPlease first load ALSA snd-aloop.
, so I needed to do:sudo modprobe snd-aloop
and then I had to run themicclient-ubuntu-x86
as root (usingsudo
). And then it worked, yay.
– Amichai Schreiber
Jul 15 '17 at 7:09
This does not work. Only silence is recorded from the loopback device...
– Calmarius
Feb 1 '18 at 20:52
add a comment |
Is this the program? Have you tried downloading the client/driver and following the instructions for Ubuntu?
Load driver module
$ sudo insmod wo_snd_capture-x86.ko
Connect from client
Conenct by Wifi. You can find the IP address on WO Mic app UI.
$ micclient-ubuntu-x86 -t Wifi 192.168.1.100
Connect by Bluetooth.
$ micclient-ubuntu-x86 -t Bluetooth xx:xx:xx:xx:xx:xx
xx:xx:xx:xx:xx:xx represents phone Bluetooth address. You can query it on your phone: Settings -> About phone -> Status -> Bluetooth address.
The above examples are for 32-bit Ubuntu. If you are using 64-bit, replace client and driver file name to xxx-x86_64 ones as downloaded.
1
I gotPlease first load ALSA snd-aloop.
, so I needed to do:sudo modprobe snd-aloop
and then I had to run themicclient-ubuntu-x86
as root (usingsudo
). And then it worked, yay.
– Amichai Schreiber
Jul 15 '17 at 7:09
This does not work. Only silence is recorded from the loopback device...
– Calmarius
Feb 1 '18 at 20:52
add a comment |
Is this the program? Have you tried downloading the client/driver and following the instructions for Ubuntu?
Load driver module
$ sudo insmod wo_snd_capture-x86.ko
Connect from client
Conenct by Wifi. You can find the IP address on WO Mic app UI.
$ micclient-ubuntu-x86 -t Wifi 192.168.1.100
Connect by Bluetooth.
$ micclient-ubuntu-x86 -t Bluetooth xx:xx:xx:xx:xx:xx
xx:xx:xx:xx:xx:xx represents phone Bluetooth address. You can query it on your phone: Settings -> About phone -> Status -> Bluetooth address.
The above examples are for 32-bit Ubuntu. If you are using 64-bit, replace client and driver file name to xxx-x86_64 ones as downloaded.
Is this the program? Have you tried downloading the client/driver and following the instructions for Ubuntu?
Load driver module
$ sudo insmod wo_snd_capture-x86.ko
Connect from client
Conenct by Wifi. You can find the IP address on WO Mic app UI.
$ micclient-ubuntu-x86 -t Wifi 192.168.1.100
Connect by Bluetooth.
$ micclient-ubuntu-x86 -t Bluetooth xx:xx:xx:xx:xx:xx
xx:xx:xx:xx:xx:xx represents phone Bluetooth address. You can query it on your phone: Settings -> About phone -> Status -> Bluetooth address.
The above examples are for 32-bit Ubuntu. If you are using 64-bit, replace client and driver file name to xxx-x86_64 ones as downloaded.
answered Mar 3 '17 at 14:17
LiveWireBTLiveWireBT
21.4k1872154
21.4k1872154
1
I gotPlease first load ALSA snd-aloop.
, so I needed to do:sudo modprobe snd-aloop
and then I had to run themicclient-ubuntu-x86
as root (usingsudo
). And then it worked, yay.
– Amichai Schreiber
Jul 15 '17 at 7:09
This does not work. Only silence is recorded from the loopback device...
– Calmarius
Feb 1 '18 at 20:52
add a comment |
1
I gotPlease first load ALSA snd-aloop.
, so I needed to do:sudo modprobe snd-aloop
and then I had to run themicclient-ubuntu-x86
as root (usingsudo
). And then it worked, yay.
– Amichai Schreiber
Jul 15 '17 at 7:09
This does not work. Only silence is recorded from the loopback device...
– Calmarius
Feb 1 '18 at 20:52
1
1
I got
Please first load ALSA snd-aloop.
, so I needed to do: sudo modprobe snd-aloop
and then I had to run the micclient-ubuntu-x86
as root (using sudo
). And then it worked, yay.– Amichai Schreiber
Jul 15 '17 at 7:09
I got
Please first load ALSA snd-aloop.
, so I needed to do: sudo modprobe snd-aloop
and then I had to run the micclient-ubuntu-x86
as root (using sudo
). And then it worked, yay.– Amichai Schreiber
Jul 15 '17 at 7:09
This does not work. Only silence is recorded from the loopback device...
– Calmarius
Feb 1 '18 at 20:52
This does not work. Only silence is recorded from the loopback device...
– Calmarius
Feb 1 '18 at 20:52
add a comment |
Mmmm I tried that app before but it does not work for me, so I recommend this method:
- First install ip camera on the phone, then install pulseaudio, when you have that done, open ipcamera and start the server on you phone, make sure that you pc is connected on the same network.
- Open Chrome or Firefox and type the IP address that ipcamera provides you (the ip will show in the app).
- In the browser click on audio player and choose HTML5, and make sure that you hear something.
- Open pulseaudio and go to the Playback tab, then click and show and select All Streams. You will see the chrome or firefox application playing the microphone.
- On the application section select Lookback for Chrome or Firefox; that will redirect the audio from you phone to the microphone channel, you can do the same but using VLC and deal better with issues like the lag.
Anyway to solved the lag issue?
– swdev
Jun 5 '18 at 4:55
2
Mmmm i am not sure but i think that this post can help you if you use vlc How to Fix Skipping and Lagging in VLC @swdev
– Maxtermax
Jun 6 '18 at 5:15
add a comment |
Mmmm I tried that app before but it does not work for me, so I recommend this method:
- First install ip camera on the phone, then install pulseaudio, when you have that done, open ipcamera and start the server on you phone, make sure that you pc is connected on the same network.
- Open Chrome or Firefox and type the IP address that ipcamera provides you (the ip will show in the app).
- In the browser click on audio player and choose HTML5, and make sure that you hear something.
- Open pulseaudio and go to the Playback tab, then click and show and select All Streams. You will see the chrome or firefox application playing the microphone.
- On the application section select Lookback for Chrome or Firefox; that will redirect the audio from you phone to the microphone channel, you can do the same but using VLC and deal better with issues like the lag.
Anyway to solved the lag issue?
– swdev
Jun 5 '18 at 4:55
2
Mmmm i am not sure but i think that this post can help you if you use vlc How to Fix Skipping and Lagging in VLC @swdev
– Maxtermax
Jun 6 '18 at 5:15
add a comment |
Mmmm I tried that app before but it does not work for me, so I recommend this method:
- First install ip camera on the phone, then install pulseaudio, when you have that done, open ipcamera and start the server on you phone, make sure that you pc is connected on the same network.
- Open Chrome or Firefox and type the IP address that ipcamera provides you (the ip will show in the app).
- In the browser click on audio player and choose HTML5, and make sure that you hear something.
- Open pulseaudio and go to the Playback tab, then click and show and select All Streams. You will see the chrome or firefox application playing the microphone.
- On the application section select Lookback for Chrome or Firefox; that will redirect the audio from you phone to the microphone channel, you can do the same but using VLC and deal better with issues like the lag.
Mmmm I tried that app before but it does not work for me, so I recommend this method:
- First install ip camera on the phone, then install pulseaudio, when you have that done, open ipcamera and start the server on you phone, make sure that you pc is connected on the same network.
- Open Chrome or Firefox and type the IP address that ipcamera provides you (the ip will show in the app).
- In the browser click on audio player and choose HTML5, and make sure that you hear something.
- Open pulseaudio and go to the Playback tab, then click and show and select All Streams. You will see the chrome or firefox application playing the microphone.
- On the application section select Lookback for Chrome or Firefox; that will redirect the audio from you phone to the microphone channel, you can do the same but using VLC and deal better with issues like the lag.
edited Jul 30 '17 at 17:47
Zanna
50.6k13135241
50.6k13135241
answered May 16 '17 at 1:10
MaxtermaxMaxtermax
413
413
Anyway to solved the lag issue?
– swdev
Jun 5 '18 at 4:55
2
Mmmm i am not sure but i think that this post can help you if you use vlc How to Fix Skipping and Lagging in VLC @swdev
– Maxtermax
Jun 6 '18 at 5:15
add a comment |
Anyway to solved the lag issue?
– swdev
Jun 5 '18 at 4:55
2
Mmmm i am not sure but i think that this post can help you if you use vlc How to Fix Skipping and Lagging in VLC @swdev
– Maxtermax
Jun 6 '18 at 5:15
Anyway to solved the lag issue?
– swdev
Jun 5 '18 at 4:55
Anyway to solved the lag issue?
– swdev
Jun 5 '18 at 4:55
2
2
Mmmm i am not sure but i think that this post can help you if you use vlc How to Fix Skipping and Lagging in VLC @swdev
– Maxtermax
Jun 6 '18 at 5:15
Mmmm i am not sure but i think that this post can help you if you use vlc How to Fix Skipping and Lagging in VLC @swdev
– Maxtermax
Jun 6 '18 at 5:15
add a comment |
I use Mumble (desktop client) + Murmur (as LAN server) + Plumble (Android/iOS client). This results in the lowest latency I've ever achieved (sounds almost like normal loopback, theoretically 7ms WiFi delay + 2x 10ms codec delay = 27 ms).
https://github.com/pzmarzly/mic_over_mumble
Fragments of README (rev 59091372580f481320224532aeaaea84c9c07848)
Set all 3 programs to use best quality and minimal latency. Set mobile client to always streaming. Copy mic_over_mumble
anywhere - it will use ~/.mic_over_Mumble
as configuration directory. Run mic_over_mumble
, then connect your mobile device to LAN server. Then, set up your programs to use monitor of Mumble as input device. E.g. in OBS:
Copy of mic_over_mumble
script (rev 59091372580f481320224532aeaaea84c9c07848)
#!/bin/bash
set -e
# PAID = PulseAudio ID
# ID = PID / process ID
function main () {
if [ ! -e ~/.mic_over_Mumble ]; then
mkdir ~/.mic_over_Mumble
fi
cd ~/.mic_over_Mumble
rm murmur.ini | true
echo "bonjour=true" >> murmur.ini
echo "bandwidth=130000" >> murmur.ini
if [ ! -e ./initdone ]; then
echo "You will need to configure Mumble client to use the lowest possible latency."
echo "We will start Mumble now. Please complete setup wizard and go to settings to increase quality and decrease latency."
echo "Also, mute your microphone (if you have one) in Mumble."
echo "Then close Mumble."
run_mumble_client_wizard
touch ./initdone
fi
echo "Starting Mumble server (murmurd)..."
MUMBLE_SERVER_ID=`run_mumble_server_bg`
sleep 5
echo "Starting Mumble client..."
MUMBLE_CLIENT_ID=`run_mumble_client_bg`
sleep 5
echo "Fetching PulseAudio configuration..."
MUMBLE_CLIENT_PAID=`get_mumble_client_paid`
echo "Changing PulseAudio configuration..."
SINK_MODULE_PAID=`add_sink`
sleep 3
SINK_PAID=`get_sink_paid`
pacmd move-sink-input $MUMBLE_CLIENT_PAID $SINK_PAID
echo "Done. Please use pavucontrol to ensure everything works."
echo "Press Return to shut down..."
read -n1 -s
echo "Shutting down..."
echo "Stopping Mumble client..."
kill -KILL $MUMBLE_CLIENT_ID | true
sleep 2
echo "Stopping Mumble server..."
kill -KILL $MUMBLE_SERVER_ID | true
echo "Restoring PulseAudio configuration..."
pactl unload-module $SINK_MODULE_PAID
}
function run_mumble_client_wizard () {
mumble >/dev/null 2&>1
}
function run_mumble_client_bg () {
MUMBLE_URL="mumble://localhost"
mumble $MUMBLE_URL >/dev/null 2&>1 &
echo $!
}
function run_mumble_server_bg () {
murmurd -ini ./murmur.ini &
echo $!
}
function get_mumble_client_paid () {
pacmd list-sink-inputs |
egrep "index: |application.name = " |
cut_every_second_newline |
egrep Mumble |
print_second_column
}
function add_sink () {
pactl load-module
module-null-sink
sink_name="Loopback_of_Mumble"
sink_properties=device.description="Loopback_of_Mumble"
}
function get_sink_paid () {
pacmd list-sinks |
egrep "index: |name: " |
cut_every_second_newline |
egrep Loopback |
print_second_column
}
# https://serverfault.com/a/375098/449626
function cut_every_second_newline () {
awk 'ORS=NR%2?" ":"n"'
}
function print_second_column () {
awk '{print $2}'
}
main
add a comment |
I use Mumble (desktop client) + Murmur (as LAN server) + Plumble (Android/iOS client). This results in the lowest latency I've ever achieved (sounds almost like normal loopback, theoretically 7ms WiFi delay + 2x 10ms codec delay = 27 ms).
https://github.com/pzmarzly/mic_over_mumble
Fragments of README (rev 59091372580f481320224532aeaaea84c9c07848)
Set all 3 programs to use best quality and minimal latency. Set mobile client to always streaming. Copy mic_over_mumble
anywhere - it will use ~/.mic_over_Mumble
as configuration directory. Run mic_over_mumble
, then connect your mobile device to LAN server. Then, set up your programs to use monitor of Mumble as input device. E.g. in OBS:
Copy of mic_over_mumble
script (rev 59091372580f481320224532aeaaea84c9c07848)
#!/bin/bash
set -e
# PAID = PulseAudio ID
# ID = PID / process ID
function main () {
if [ ! -e ~/.mic_over_Mumble ]; then
mkdir ~/.mic_over_Mumble
fi
cd ~/.mic_over_Mumble
rm murmur.ini | true
echo "bonjour=true" >> murmur.ini
echo "bandwidth=130000" >> murmur.ini
if [ ! -e ./initdone ]; then
echo "You will need to configure Mumble client to use the lowest possible latency."
echo "We will start Mumble now. Please complete setup wizard and go to settings to increase quality and decrease latency."
echo "Also, mute your microphone (if you have one) in Mumble."
echo "Then close Mumble."
run_mumble_client_wizard
touch ./initdone
fi
echo "Starting Mumble server (murmurd)..."
MUMBLE_SERVER_ID=`run_mumble_server_bg`
sleep 5
echo "Starting Mumble client..."
MUMBLE_CLIENT_ID=`run_mumble_client_bg`
sleep 5
echo "Fetching PulseAudio configuration..."
MUMBLE_CLIENT_PAID=`get_mumble_client_paid`
echo "Changing PulseAudio configuration..."
SINK_MODULE_PAID=`add_sink`
sleep 3
SINK_PAID=`get_sink_paid`
pacmd move-sink-input $MUMBLE_CLIENT_PAID $SINK_PAID
echo "Done. Please use pavucontrol to ensure everything works."
echo "Press Return to shut down..."
read -n1 -s
echo "Shutting down..."
echo "Stopping Mumble client..."
kill -KILL $MUMBLE_CLIENT_ID | true
sleep 2
echo "Stopping Mumble server..."
kill -KILL $MUMBLE_SERVER_ID | true
echo "Restoring PulseAudio configuration..."
pactl unload-module $SINK_MODULE_PAID
}
function run_mumble_client_wizard () {
mumble >/dev/null 2&>1
}
function run_mumble_client_bg () {
MUMBLE_URL="mumble://localhost"
mumble $MUMBLE_URL >/dev/null 2&>1 &
echo $!
}
function run_mumble_server_bg () {
murmurd -ini ./murmur.ini &
echo $!
}
function get_mumble_client_paid () {
pacmd list-sink-inputs |
egrep "index: |application.name = " |
cut_every_second_newline |
egrep Mumble |
print_second_column
}
function add_sink () {
pactl load-module
module-null-sink
sink_name="Loopback_of_Mumble"
sink_properties=device.description="Loopback_of_Mumble"
}
function get_sink_paid () {
pacmd list-sinks |
egrep "index: |name: " |
cut_every_second_newline |
egrep Loopback |
print_second_column
}
# https://serverfault.com/a/375098/449626
function cut_every_second_newline () {
awk 'ORS=NR%2?" ":"n"'
}
function print_second_column () {
awk '{print $2}'
}
main
add a comment |
I use Mumble (desktop client) + Murmur (as LAN server) + Plumble (Android/iOS client). This results in the lowest latency I've ever achieved (sounds almost like normal loopback, theoretically 7ms WiFi delay + 2x 10ms codec delay = 27 ms).
https://github.com/pzmarzly/mic_over_mumble
Fragments of README (rev 59091372580f481320224532aeaaea84c9c07848)
Set all 3 programs to use best quality and minimal latency. Set mobile client to always streaming. Copy mic_over_mumble
anywhere - it will use ~/.mic_over_Mumble
as configuration directory. Run mic_over_mumble
, then connect your mobile device to LAN server. Then, set up your programs to use monitor of Mumble as input device. E.g. in OBS:
Copy of mic_over_mumble
script (rev 59091372580f481320224532aeaaea84c9c07848)
#!/bin/bash
set -e
# PAID = PulseAudio ID
# ID = PID / process ID
function main () {
if [ ! -e ~/.mic_over_Mumble ]; then
mkdir ~/.mic_over_Mumble
fi
cd ~/.mic_over_Mumble
rm murmur.ini | true
echo "bonjour=true" >> murmur.ini
echo "bandwidth=130000" >> murmur.ini
if [ ! -e ./initdone ]; then
echo "You will need to configure Mumble client to use the lowest possible latency."
echo "We will start Mumble now. Please complete setup wizard and go to settings to increase quality and decrease latency."
echo "Also, mute your microphone (if you have one) in Mumble."
echo "Then close Mumble."
run_mumble_client_wizard
touch ./initdone
fi
echo "Starting Mumble server (murmurd)..."
MUMBLE_SERVER_ID=`run_mumble_server_bg`
sleep 5
echo "Starting Mumble client..."
MUMBLE_CLIENT_ID=`run_mumble_client_bg`
sleep 5
echo "Fetching PulseAudio configuration..."
MUMBLE_CLIENT_PAID=`get_mumble_client_paid`
echo "Changing PulseAudio configuration..."
SINK_MODULE_PAID=`add_sink`
sleep 3
SINK_PAID=`get_sink_paid`
pacmd move-sink-input $MUMBLE_CLIENT_PAID $SINK_PAID
echo "Done. Please use pavucontrol to ensure everything works."
echo "Press Return to shut down..."
read -n1 -s
echo "Shutting down..."
echo "Stopping Mumble client..."
kill -KILL $MUMBLE_CLIENT_ID | true
sleep 2
echo "Stopping Mumble server..."
kill -KILL $MUMBLE_SERVER_ID | true
echo "Restoring PulseAudio configuration..."
pactl unload-module $SINK_MODULE_PAID
}
function run_mumble_client_wizard () {
mumble >/dev/null 2&>1
}
function run_mumble_client_bg () {
MUMBLE_URL="mumble://localhost"
mumble $MUMBLE_URL >/dev/null 2&>1 &
echo $!
}
function run_mumble_server_bg () {
murmurd -ini ./murmur.ini &
echo $!
}
function get_mumble_client_paid () {
pacmd list-sink-inputs |
egrep "index: |application.name = " |
cut_every_second_newline |
egrep Mumble |
print_second_column
}
function add_sink () {
pactl load-module
module-null-sink
sink_name="Loopback_of_Mumble"
sink_properties=device.description="Loopback_of_Mumble"
}
function get_sink_paid () {
pacmd list-sinks |
egrep "index: |name: " |
cut_every_second_newline |
egrep Loopback |
print_second_column
}
# https://serverfault.com/a/375098/449626
function cut_every_second_newline () {
awk 'ORS=NR%2?" ":"n"'
}
function print_second_column () {
awk '{print $2}'
}
main
I use Mumble (desktop client) + Murmur (as LAN server) + Plumble (Android/iOS client). This results in the lowest latency I've ever achieved (sounds almost like normal loopback, theoretically 7ms WiFi delay + 2x 10ms codec delay = 27 ms).
https://github.com/pzmarzly/mic_over_mumble
Fragments of README (rev 59091372580f481320224532aeaaea84c9c07848)
Set all 3 programs to use best quality and minimal latency. Set mobile client to always streaming. Copy mic_over_mumble
anywhere - it will use ~/.mic_over_Mumble
as configuration directory. Run mic_over_mumble
, then connect your mobile device to LAN server. Then, set up your programs to use monitor of Mumble as input device. E.g. in OBS:
Copy of mic_over_mumble
script (rev 59091372580f481320224532aeaaea84c9c07848)
#!/bin/bash
set -e
# PAID = PulseAudio ID
# ID = PID / process ID
function main () {
if [ ! -e ~/.mic_over_Mumble ]; then
mkdir ~/.mic_over_Mumble
fi
cd ~/.mic_over_Mumble
rm murmur.ini | true
echo "bonjour=true" >> murmur.ini
echo "bandwidth=130000" >> murmur.ini
if [ ! -e ./initdone ]; then
echo "You will need to configure Mumble client to use the lowest possible latency."
echo "We will start Mumble now. Please complete setup wizard and go to settings to increase quality and decrease latency."
echo "Also, mute your microphone (if you have one) in Mumble."
echo "Then close Mumble."
run_mumble_client_wizard
touch ./initdone
fi
echo "Starting Mumble server (murmurd)..."
MUMBLE_SERVER_ID=`run_mumble_server_bg`
sleep 5
echo "Starting Mumble client..."
MUMBLE_CLIENT_ID=`run_mumble_client_bg`
sleep 5
echo "Fetching PulseAudio configuration..."
MUMBLE_CLIENT_PAID=`get_mumble_client_paid`
echo "Changing PulseAudio configuration..."
SINK_MODULE_PAID=`add_sink`
sleep 3
SINK_PAID=`get_sink_paid`
pacmd move-sink-input $MUMBLE_CLIENT_PAID $SINK_PAID
echo "Done. Please use pavucontrol to ensure everything works."
echo "Press Return to shut down..."
read -n1 -s
echo "Shutting down..."
echo "Stopping Mumble client..."
kill -KILL $MUMBLE_CLIENT_ID | true
sleep 2
echo "Stopping Mumble server..."
kill -KILL $MUMBLE_SERVER_ID | true
echo "Restoring PulseAudio configuration..."
pactl unload-module $SINK_MODULE_PAID
}
function run_mumble_client_wizard () {
mumble >/dev/null 2&>1
}
function run_mumble_client_bg () {
MUMBLE_URL="mumble://localhost"
mumble $MUMBLE_URL >/dev/null 2&>1 &
echo $!
}
function run_mumble_server_bg () {
murmurd -ini ./murmur.ini &
echo $!
}
function get_mumble_client_paid () {
pacmd list-sink-inputs |
egrep "index: |application.name = " |
cut_every_second_newline |
egrep Mumble |
print_second_column
}
function add_sink () {
pactl load-module
module-null-sink
sink_name="Loopback_of_Mumble"
sink_properties=device.description="Loopback_of_Mumble"
}
function get_sink_paid () {
pacmd list-sinks |
egrep "index: |name: " |
cut_every_second_newline |
egrep Loopback |
print_second_column
}
# https://serverfault.com/a/375098/449626
function cut_every_second_newline () {
awk 'ORS=NR%2?" ":"n"'
}
function print_second_column () {
awk '{print $2}'
}
main
edited Jan 16 at 16:16
answered Dec 30 '18 at 20:23
pzmarzlypzmarzly
1013
1013
add a comment |
add a comment |
Thanks for contributing an answer to Ask Ubuntu!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f889164%2fuse-phone-as-microphone-in-linux%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown