You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python实现音频文件通过虚拟麦克风播放

虚拟麦克风播放音频实现方案

Sounddevice并不只支持普通输出设备,只要正确配置虚拟麦克风设备参数,即可实现将本地音频注入到虚拟麦克风的效果,完整实现步骤如下:

前置准备

  • 安装对应系统的虚拟麦克风驱动:
    • Windows:安装VB-Cable
    • macOS:安装BlackHole
    • Linux:加载PulseAudio虚拟音频设备模块
  • 安装依赖库:pip install sounddevice soundfile numpy

实现步骤

  1. 首先查询系统音频设备ID,确认虚拟麦克风的编号
import sounddevice as sd
# 输出所有音频设备信息,找到虚拟麦克风对应的id
print(sd.query_devices())
  1. 运行上述代码后,记录虚拟麦克风对应的设备ID,将对应参数填入如下代码即可实现音频注入
import sounddevice as sd
import soundfile as sf
import numpy as np

# 替换为查询到的虚拟麦克风设备ID
VIRTUAL_MIC_ID = 36
# 替换为你的本地音频文件路径
AUDIO_PATH = "test.wav"

# 读取音频文件
data, sample_rate = sf.read(AUDIO_PATH, dtype="float32")
# 可选:多声道音频转单声道,提升兼容性
if len(data.shape) > 1:
    data = np.mean(data, axis=1)

# 将音频写入虚拟麦克风
sd.play(data, sample_rate, device=VIRTUAL_MIC_ID)
sd.wait()

常见问题排查

  • 无输出效果时,先确认目标应用已选择对应虚拟麦克风作为输入源
  • 出现设备不支持报错时,可通过sd.query_devices(VIRTUAL_MIC_ID)查看设备支持的采样率、声道数,调整音频参数适配即可
  • 如需循环播放音频,可在外层加循环逻辑,每次播放结束后重新写入音频流即可

替代方案

如果Sounddevice方案适配有问题,可以选择PyAudio实现:

  1. 安装依赖:pip install pyaudio soundfile
  2. 示例代码如下:
import pyaudio
import soundfile as sf

CHUNK = 1024
VIRTUAL_MIC_ID = 36
AUDIO_PATH = "test.wav"

data, sample_rate = sf.read(AUDIO_PATH, dtype="int16")
p = pyaudio.PyAudio()

stream = p.open(
    format=p.get_format_from_width(2),
    channels=1 if len(data.shape)==1 else data.shape[1],
    rate=sample_rate,
    output=True,
    output_device_index=VIRTUAL_MIC_ID
)

for i in range(0, len(data), CHUNK):
    stream.write(data[i:i+CHUNK].tobytes())

stream.stop_stream()
stream.close()
p.terminate()

内容的提问来源于stack exchange,提问作者user16838936

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:30:05