GNU/Linux >> Linux の 問題 >  >> Linux

Linux パイプ オーディオ ファイルをマイク入力に

何時間も骨の折れる作業を経て、ようやく納得できるものが機能するようになりました。 ALSA で行ったすべての操作を元に戻しました (デフォルトでは、ALSA が代わりに PulseAudio を使用するため、最初はオーバーライドしました)。簡単な bash スクリプト install_virtmic.sh を作成しました PulseAudio と PulseAudio クライアントが使用する「仮想マイク」を作成するには:

#!/bin/bash

# This script will create a virtual microphone for PulseAudio to use and set it as the default device.

# Load the "module-pipe-source" module to read audio data from a FIFO special file.
echo "Creating virtual microphone."
pactl load-module module-pipe-source source_name=virtmic file=/home/charles/audioFiles/virtmic format=s16le rate=16000 channels=1

# Set the virtmic as the default source device.
echo "Set the virtual microphone as the default device."
pactl set-default-source virtmic

# Create a file that will set the default source device to virtmic for all 
PulseAudio client applications.
echo "default-source = virtmic" > /home/charles/.config/pulse/client.conf

# Write the audio file to the named pipe virtmic. This will block until the named pipe is read.
echo "Writing audio file to virtual microphone."
while true; do
    cat audioFile0.raw > /home/charles/audioFiles/virtmic
done

簡単なスクリプト uninstall_virtmic.sh インストールスクリプトによって行われたすべてを元に戻すため:

#!/bin/bash

# Uninstall the virtual microphone.

pactl unload-module module-pipe-source
rm /home/charles/.config/pulse/client.conf

次に、Chromium を起動し、マイクをクリックして音声検索機能を使用したところ、機能しました。 arecord test.raw -t raw -f S16_LE -c 1 -r 16000 でも試してみました そしてそれもうまくいきました!名前付きパイプ virtmic に書き込み続けるため、完璧ではありません スクリプトの無限ループで (すぐに test.raw になりました) ファイルが非常に大きい)、今のところはこれで十分です。

誰かがより良い解決策を見つけたら、遠慮なくお知らせください!


<オール>
  • PulseAudio ボリューム コントロール (pavucontrol) がインストールされていることを確認します。そうでない場合は、端末に次のように入力するだけでインストールできます:sudo apt install pavucontrol .
    1. PulseAudio ボリューム コントロール (pavucontrol) を開き、[録音] タブに移動します。マイクを記録するデバイスがない場合、このパネルは空に見えるはずです。アプリケーションが録音を開始するか、Skype 通話を開始するとすぐに、このパネルに少なくとも 1 つのエントリが表示されます。

    1. 「ビルトイン オーディオ アナログ ステレオ」を選択するのがデフォルトの動作です (音声をマイク出力にリダイレクトします)。 「内蔵オーディオ アナログ ステレオのモニター」も表示されます。このオプションを選択すると、音声を再生するアプリケーション (VLC など) の出力は、音声ではなくマイクにリダイレクトされます。

    2. すべてが正常に戻るように、オーディオの再生が終了したら、必ず「ビルトイン オーディオ アナログ ステレオ」に戻してください。


    Linux
    1. Linux/Unixでの入力/出力リダイレクト

    2. Linux 分割コマ​​ンドにパイプするにはどうすればよいですか?

    3. Linux でオンザフライでファイルを変更する (パイプ上の入力ファイルへの書き込み)

    1. Linuxでファイルを移動する方法

    2. Linuxファイルのアクセス許可について

    3. Linux –すべてがファイルですか?

    1. Linuxテールコマンド

    2. Linuxタッチコマンド

    3. LinuxでのCatコマンド