当前位置: 首页 > news >正文

使用虚拟声卡播放音频文件作为麦克风声源

一、安装虚拟声卡

VB-CABLE虚拟声卡是一种将电脑播放的声音当作虚拟麦克风输入的工具,可用于语音聊天、直播或录制系统声音等场景。

1、下载安装 VB-Audio Cable

下载地址:

VB-Audio Virtual Apps

  • 下载VBCABLE_Driver_Pack45.zip,解压后,双击打开VBCABLE_Setup_x64.exe,点击 “Install Driver” 进行安装。

  • 安装完成后,重启系统以使驱动生效。

2、配置系统音频输入输出

  • 打开“设置”->“系统”->“声音”,在 “输出” 栏,选择 “CABLE Input” ,在 “录制” 栏,选择 “CABLE Output” 。

  • 打开“设置”->“隐私和安全性”->“麦克风”,开启“麦克风访问权限”,开启游戏的麦克风权限。

二、播放音频到虚拟声卡

1、安装依赖

pip install pyaudio sounddevice numpy==1.26.4
pip install pydub

2、列出所有可用的音频输出设备

def list_audio_output_devices():
    p = pyaudio.PyAudio()
    for i in range(p.get_device_count()):
        device_info = p.get_device_info_by_index(i)
        if device_info["maxOutputChannels"] > 0:  # 只列出支持输出的设备
            device_name = device_info['name']
            print(f"设备索引: {i}, 设备名称: {device_name}, 采样率: {device_info['defaultSampleRate']}")

3、在指定的音频输出设备上播放音频

def play_audio_on_device(file_path, device_index):
    audio_data = None
    # 加载音频文件
    with wave.open(file_path, 'rb') as wf:
        # 获取音频参数
        channels = wf.getnchannels()
        sample_width = wf.getsampwidth()
        frame_rate = wf.getframerate()
        frames = wf.readframes(-1)

        # 将字节数据转换为 NumPy 数组
        dtype = None
        if sample_width == 2:
            dtype = np.int16
        elif sample_width == 4:
            dtype = np.int32
        else:
            raise ValueError(f"不支持的采样宽度: {sample_width}")

        audio_data = np.frombuffer(frames, dtype=dtype)
        audio_data = audio_data.reshape(-1, channels)

    # 播放音频
    try:
        sd.play(audio_data, samplerate=frame_rate,device=device_index, blocking=False)
        sd.wait()
        print("音频播放完成!")
    except Exception as e:
        print(f"播放音频时出错: {e}")

相关文章:

  • fastjson漏洞
  • 百度SEO关键词布局从堆砌到场景化的转型指南
  • rv1126交叉编译opencv+ffmpeg+x264
  • 【从零开始学习计算机科学】数字逻辑(七)触发器(FF)
  • RangeError: Radix must be an integer between 2 and 36
  • 生物信息学工作流(Bioinformatics Workflow):概念、历史、现状与展望?
  • ftp、sftp、tftp的区别
  • 【MySQL】第四章:数据类型
  • 【银河麒麟高级服务器操作系统实例】虚拟机桥接网络问题分析及处理
  • Biopython的基本使用步骤详解
  • qt creator示例空白
  • EasyRTC嵌入式音视频通话SDK:基于ICE与STUN/TURN的实时音视频通信解决方案
  • 操作系统 2.6-操作系统的初步实现
  • 【原创】springboot+vue核酸检测管理系统设计与实现
  • Kubernetes中的 iptables 规则介绍
  • educoder平台课-Python程序设计-2.数值类型与常用运算
  • 联合索引关于In和范围查询影响索引使用的情况分析
  • 解决开启Fiddle后,网页显示你的连接不是专用/私密连接
  • 使用服务器搭建无门槛ChatGPT WEB应用LobeChat
  • ​网络变压器的主要电性参数与测试方法(3)
  • 做药品的电商网站/百度seo价格查询系统
  • 做外贸业务员需要什么条件/seo具体seo怎么优化
  • 做城通网盘资源网站的源码/成都短视频代运营
  • 网站建设套用模板类的要多少钱/兰州正规seo整站优化
  • wordpress 默认分页/冯耀宗seo课程
  • 用表格做网站/网推公司干什么的