linux 麦克风设备,Linux-创建虚拟麦克风和扬声器

在Ubuntu Docker环境中,用户遇到了一个问题,即通过PulseAudio创建的虚拟扬声器播放的声音直接被虚拟麦克风捕捉。目标是设置一个虚拟麦克风,只接收特定文件播放的音频,而不捕获系统所有音频。目前的配置导致了麦克风隔离失效。
摘要由CSDN通过智能技术生成

我正在尝试在Ubuntu docker上创建虚拟扬声器和虚拟麦克风。

我正在运行一个需要捕获PC音频(虚拟扬声器)的过程

并播放音频(从文件)到虚拟麦克风。

我正在使用PulseAudio,如下所示:

#Load pulseaudio virtual audio source

pulseaudio -D --disable-shm=yes --exit-idle-time=-1

# Create virtual output device (used for audio playback)

pactl load-module module-null-sink sink_name=DummyOutput sink_properties=device.description="Virtual_Dummy_Output"

# Create virtual microphone output, used to play media into the "microphone"

pactl load-module module-null-sink sink_name=MicOutput sink_properties=device.description="Virtual_Microphone_Output"

pacmd load-module module-virtual-source source_name=VirtualMic

pacmd load-module module-virtual-sink sink_name=VirtualSink

pacmd set-default-sink VirtualSink

pacmd set-default-source VirtualSink.monitor

问题是:

扬声器播放的每个声音都直接传到麦克风!

我需要将麦克风隔离开,以便仅在播放文件使其正常工作并且不捕获整个系统音频的情况下。

谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要同时录制扬声器麦克风的声音并输出波形,你需要使用Python中的音频处理库来完成这个任务。以下是使用PyAudio库和NumPy库同时录制扬声器麦克风的声音并输出波形的示例代码: ```python import pyaudio import numpy as np import matplotlib.pyplot as plt # 配置参数 CHUNK = 1024 * 2 # 每个缓冲区的帧数 FORMAT = pyaudio.paInt16 # 采样位数 CHANNELS = 2 # 通道数 RATE = 44100 # 采样率 RECORD_SECONDS = 5 # 录制时长 # 初始化PyAudio p = pyaudio.PyAudio() # 打开扬声器的音频流 output_stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, output=True) # 打开麦克风的音频流 input_stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK) # 创建一个NumPy数组来存储录制的音频数据 frames = [] # 录制音频 for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): # 从麦克风读取数据 data = input_stream.read(CHUNK) # 将数据发送到扬声器 output_stream.write(data) # 将数据添加到NumPy数组中 frames.append(np.frombuffer(data, dtype=np.int16)) # 关闭音频流 input_stream.stop_stream() input_stream.close() output_stream.stop_stream() output_stream.close() # 关闭PyAudio p.terminate() # 将NumPy数组转换为二维数组 samples = np.vstack(frames) # 绘制波形图 plt.plot(samples) plt.show() ``` 在这个示例中,我们首先使用PyAudio库打开扬声器麦克风的音频流,并使用NumPy库创建一个二维数组来存储录制的音频数据。然后,我们使用一个循环来不断录制音频,并将数据发送到扬声器和添加到NumPy数组中。最后,我们关闭音频流和PyAudio,将NumPy数组转换为二维数组,并使用Matplotlib库绘制波形图。 注意:在运行这个程序之前,你需要确保你的电脑上已经安装了PyAudio、NumPy和Matplotlib库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值