Используйте телефон в качестве микрофона в Linux

У меня двойная загрузка Windows и Ubuntu. Поскольку я не использую микрофон на своем рабочем столе, я начал использовать приложение под названием "WO Mic" для подключения микрофона моего телефона Android к своему рабочему столу в Windows. Хорошая альтернатива, верно?

Что ж, к сожалению, WO Mic не поддерживается ни в одной ОС на базе Linux, поэтому я хотел бы знать, есть ли какие-либо альтернативы или какие-либо приложения, которые могли бы использовать мой телефон в качестве микрофона в Ubuntu через WiFi или USB. (но желательно wifi).

8 ответов

Я использую Mumble (настольный клиент) + Murmur (в качестве сервера локальной сети) + Plumble (клиент Android/iOS). Это приводит к самой низкой задержке, которую я когда-либо достигал (звучит почти как обычный шлейф, теоретически задержка WiFi 7 мс + задержка кодека 2x 10 мс = 27 мс).

https://github.com/pzmarzly/mic_over_mumble

Фрагменты README (rev. 59091372580f481320224532aeaaea84c9c07848)

Установите все 3 программы, чтобы использовать лучшее качество и минимальную задержку. Установите для мобильного клиента постоянную потоковую передачу. копия mic_over_mumble везде - это будет использовать ~/.mic_over_Mumble в качестве каталога конфигурации. Бежать mic_over_mumble, затем подключите мобильное устройство к серверу локальной сети. Затем настройте свои программы на использование монитора Mumble в качестве устройства ввода. Например, в OBS:

Снимок экрана конфигурации OBS

Копия mic_over_mumble скрипт (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

Это программа? Вы пытались загрузить клиент / драйвер и следовать инструкциям для Ubuntu?

  1. Загрузить модуль драйвера

    $ sudo insmod wo_snd_capture-x86.ko
    
  2. Подключиться от клиента

    • Общаться по Wi-Fi. Вы можете найти IP-адрес в интерфейсе приложения WO Mic.

      $ micclient-ubuntu-x86 -t Wifi 192.168.1.100
      
    • Подключение по Bluetooth.

      $ micclient-ubuntu-x86 -t Bluetooth xx:xx:xx:xx:xx:xx
      

      xx: xx: xx: xx: xx: xx представляет Bluetooth-адрес телефона. Вы можете запросить его на своем телефоне: Настройки -> О телефоне -> Статус -> Адрес Bluetooth.

Приведенные выше примеры предназначены для 32-битной Ubuntu. Если вы используете 64-разрядную версию, замените имя файла клиента и драйвера на xxx-x86_64 после загрузки.

Мммм, я пробовал это приложение раньше, но оно не работает для меня, поэтому я рекомендую этот метод:

  • Сначала установите ip camera на телефон, затем установите pulseaudio, после этого откройте ipcamera и запустите сервер на своем телефоне, убедитесь, что ваш компьютер подключен к той же сети.
  • Откройте Chrome или Firefox и введите IP-адрес, который вам предоставляет ipcamera (ip будет отображаться в приложении).
  • В браузере нажмите на аудиоплеер и выберите HTML5, и убедитесь, что вы что-то слышите.
  • Откройте pulseaudio и перейдите на вкладку " Воспроизведение ", затем нажмите, покажите и выберите " Все потоки". Вы увидите приложение Chrome или Firefox, играющее на микрофоне.
  • В разделе приложения выберите Lookback for Chrome или Firefox; это перенаправит звук с вашего телефона на канал микрофона, вы можете сделать то же самое, но с помощью VLC и лучше справляться с такими проблемами, как отставание.

Сценарий Mumble в верхнем ответе не работает с Pipewire и в настоящее время устарел из-за проблем. В обсуждении проблемы нашел скрипт, совместимый с Pipewire, сделанный из него: https://github.com/siddhpant/broo

Это отлично работает для меня. Просто нужно использовать brooдля запуска сервера, и он автоматически настраивает его. Поддержка iOS кажется мне отрывочной из-за отсутствия активных клиентских проектов Mumble.

Если ваша версия Linux использует pavucontrol(pulseaudio), вам следует сделать:

$ pulseaudio -k
$ killall micclient-x86_64.AppImage
$ sudo modprobe -r snd-aloop
$ sudo vi /etc/pulse/default.pa

добавить в default.pa:

load-module module-alsa-source device=hw:CARD=Loopback,DEV=1,SUBDEV=0
$ sudo modprobe snd-aloop
$ pulseaudio --start
$ sudo cp micclient-x86_64.AppImage /usr/bin/MicClient
$ while true; do nohup MicClient -t Wifi 192.168.1.100 > /dev/null 2>&1; sleep 1; done &

192.168.1.100 - это IP-адрес моего телефона в локальной сети, вы должны изменить его на IP-адрес вашего телефона.

В pavucontrol(регулятор громкости) на вкладке "Устройства ввода" включите "Встроенный звук" (а не "Встроенный аналоговый стереозвук") в качестве устройства ввода.

И перенаправьте звук MicClient на виртуальное устройство вывода, сначала в "pavucontrol / Устройства ввода", чтобы поставить галочку "Встроенный звук" на "Установить как резервный", а затем:

$ pactl load-module module-loopback latency_msec=1

Теперь с WoMic в android и micclient-x86_64.AppImage в x64 linux, у вас есть набор домашнего караоке-оборудования с почти нулевой задержкой.

Если вы слышите много шумов, вы можете попробовать переключить "Настройки микрофона WO / Источник звука" в своем телефоне Android, например: nexus 6p должен выбрать "Микрофон (режим 2)".

Чтобы отключить перенаправление звука MicCleint на устройство вывода:

$ pactl unload-module module-loopback

Обратитесь: https://gist.github.com/diyism/5959444e324a1b38509d956beb760e6a

Если в вашем телефоне есть аудиоразъем, вы можете подключить от него дополнительный кабель к разъему для микрофона на рабочем столе. Затем просто установите приложение, которое перенаправляет вход микрофона вашего телефона из динамика, например микрофон.

Примечание. Убедитесь, что на телефоне отключен звук. Обычно у меня он отключен, и сначала я подумал, что он не работает.

Чтобы разместить свои источники, я должен упомянуть, что не я сам придумал эту идею. Я понял это из видео на YouTube

WO Mic для Linux

С официального сайта WO Mic:

  1. Установите WO Mic cient

    В настоящее время мы поддерживаем только 64-битную архитектуру x86. Загрузите micclient-x86_64.AppImage, затем измените его на исполняемый файл

    $ chmod +x micclient-x86_64.AppImage
    
  2. WO Mic Клиентские операции

    1. Загрузите модуль aloop. Модуль должен формировать полнодуплексную звуковую карту с обратной связью.

      $ sudo modprobe snd-aloop
      
    2. Подключитесь от клиента.

      Выполните следующие команды для подключения. Клиент WO Mic должен записывать аудиоданные в устройство обратной связи. Если вы столкнетесь с ошибками, попробуйте запустить программу от имени root, чтобы ее расписание было более агрессивным.

      • Подключение по Wi-Fi. Вы можете найти IP-адрес в пользовательском интерфейсе приложения WO Mic.

        $ ./micclient-x86_64.AppImage -t Wifi 192.168.1.100
        
      • Подключитесь по Bluetooth. xx:xx:xx:xx:xx:xx представляет собой адрес Bluetooth телефона. Вы можете запросить его на своем телефоне: Настройки -> О телефоне -> Статус -> Адрес Bluetooth.

        $ ./micclient-x86_64.AppImage -t Bluetooth xx:xx:xx:xx:xx:xx
        
    3. Теперь сторонняя программа может использовать захваченные данные через устройство обратной связи. Один пример:

      $ arecord -c 1 -r 48000 -f S16_LE -D "hw:CARD=Loopback,DEV=1,SUBDEV=0" foo.wav
      

Wo Mic Альтернатива для Linux.


Вчера я также искал это, но затем я нашел новое приложение, такое как Wo Mic, которое будет установлено на вашем телефоне Android, а также на вашем ПК. Он также поддерживается для всех 3 ОС Windows, Linux, Mac. Имя приложения — Audio Relay .

Вы можете использовать это приложение как с USB, так и с Wi-Fi. Вы можете использовать свой телефон в качестве микрофона и передавать аудио на настольный динамик, а также можете использовать его для обычного микрофона, такого как ПК, для записи звука. После этого ваш телефон будет работать как виртуальный микрофон. Убедитесь, что вы прочитали всю документацию, потому что, если вы этого не сделаете. Тогда это возможность, когда вы не можете это сделать, и вы можете быть разочарованы. Затем убедитесь, что вы прочитали документацию.

Другие вопросы по тегам