web-dev-qa-db-ja.com

Linuxで電話をマイクとして使用する

WindowsとUbuntuをデュアルブートします。デスクトップではマイクを使用していないため、「WO Mic」という名前のアプリを使用して、Android電話のマイクをWindowsのデスクトップに接続し始めました。良い代替案ですか?

残念ながら、WO MicはLinuxベースのOSではサポートされていないため、WiFiまたはUSBを介してUbuntuでマイクとしてマイクを使用できる代替手段やアプリがあるかどうかを知りたいと思います。 (ただし、Wi-Fiが望ましい)。

9
someanon

this はプログラムですか?クライアント/ドライバーをダウンロードし、Ubuntuの指示に従ってみましたか?

  1. ドライバーモジュールの読み込み

    $ Sudo insmod wo_snd_capture-x86.ko
    
  2. クライアントから接続する

    • Wifiによる接続。 IPアドレスはWO MicアプリのUIで確認できます。

      $ 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に置き換えます。

5
LiveWireBT

うーん、私は前にそのアプリを試しましたが、それは私のために動作しませんので、私はこの方法をお勧めします:

  • 最初に ip camera を電話にインストールし、次に pulseaudio をインストールしたら、ipcameraを開いて電話でサーバーを起動し、PCが接続されていることを確認します同じネットワーク。
  • ChromeまたはFirefoxを開き、ipcameraが提供するIPアドレスを入力します(IPはアプリに表示されます)。
  • ブラウザでオーディオプレーヤーをクリックしてHTML5を選択し、何かが聞こえることを確認します。
  • Pulseaudioを開いてPlaybackタブに移動し、クリックして表示してAll Streams。 chromeまたはfirefoxアプリケーションがマイクを再生しているのがわかります。
  • アプリケーションセクションで、ChromeまたはFirefoxに対してLookbackを選択します。それはあなたの電話からマイクチャンネルに音声をリダイレクトします、あなたは同じことをすることができますが、VLCを使用して、遅れのような問題によりよく対処します。
4
Maxtermax

Mumble(デスクトップクライアント)+ Murmur(LANサーバーとして)+ Plumble(Android/iOSクライアント)を使用します。これにより、これまでに達成した中で最も低いレイテンシーが得られます(通常のループバックとほぼ同じように聞こえ、理論的には7ms WiFi遅延+ 2x 10msコーデック遅延= 27ms)。

https://github.com/pzmarzly/mic_over_mumble

READMEのフラグメント(rev 59091372580f481320224532aeaaea84c9c07848)

3つのプログラムすべてを設定して、最高の品質と最小限の遅延を使用します。モバイルクライアントを常にストリーミングに設定します。 mic_over_mumbleを任意の場所にコピーします-~/.mic_over_Mumbleを構成ディレクトリとして使用します。 mic_over_mumbleを実行し、モバイルデバイスをLANサーバーに接続します。次に、入力デバイスとしてMumbleのモニターを使用するようにプログラムをセットアップします。例えば。 OBSの場合:

Screenshot of OBS configuration

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
2
pzmarzly