何時間も骨の折れる作業を経て、ようやく納得できるものが機能するようになりました。 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
になりました) ファイルが非常に大きい)、今のところはこれで十分です。
誰かがより良い解決策を見つけたら、遠慮なくお知らせください!
<オール>
sudo apt install pavucontrol
.
- PulseAudio ボリューム コントロール (pavucontrol) を開き、[録音] タブに移動します。マイクを記録するデバイスがない場合、このパネルは空に見えるはずです。アプリケーションが録音を開始するか、Skype 通話を開始するとすぐに、このパネルに少なくとも 1 つのエントリが表示されます。
-
「ビルトイン オーディオ アナログ ステレオ」を選択するのがデフォルトの動作です (音声をマイク出力にリダイレクトします)。 「内蔵オーディオ アナログ ステレオのモニター」も表示されます。このオプションを選択すると、音声を再生するアプリケーション (VLC など) の出力は、音声ではなくマイクにリダイレクトされます。
-
すべてが正常に戻るように、オーディオの再生が終了したら、必ず「ビルトイン オーディオ アナログ ステレオ」に戻してください。