您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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文件变得异常大),但是现在就可以了。

如果有任何人找到更好的解决方案,请随时告诉我!

其他 2022/1/1 18:22:56 有495人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶