 
可视化音频设备切换与路由工具
Sound Link 是一个基于 Tauri 和 Vue 3 开发的 Windows 音频设备管理工具,允许用户通过直观的界面查看和切换系统音频设备,并支持音频路由功能。
- 可视化显示系统音频设备
- 一键切换音频输出设备
- 设备状态实时监控
- 简洁美观的用户界面
- 系统托盘常驻
- 跟随系统主题(深色/浅色模式)
- 跟随系统主题色
- 高级毛玻璃材质效果
- 音频路由功能:将系统音频广播到多个设备
音频路由功能允许你将系统音频同时输出到多个设备,实现多设备同步播放。
注意:路由模式可能导致轻微的音频延迟。同时广播到过多设备可能导致卡顿和较高的 CPU 占用,建议目标设备数量不超过 8 个。
由于 Windows 系统音频子系统的限制,蓝牙音频设备存在以下限制:
- 蓝牙设备:仅支持连接 1 个 蓝牙音频设备
- 有线设备:不限数量,可同时连接多个有线音频设备
此限制由 Windows 音频会话 API 的底层实现决定,无法通过软件层面绕过。
重要声明:本软件的代码中未使用 VB-Cable 的任何专有代码或功能。音频路由功能仅需要一个虚拟音频设备作为音频中转输出点。理论上,任何可用的音频输出设备都可以作为中转设备,但物理输出设备(如耳机、扬声器)会产生实际声音输出,导致延迟不可调和回音问题,因此使用虚拟音频设备作为中转。
- 使用虚拟音频设备作为音频源
- 启动路由时自动将系统默认输出切换到虚拟设备
- 从虚拟设备捕获音频并广播到选定的目标设备
- 停止路由时自动恢复原默认设备
音频路由功能推荐使用 VB-Cable 虚拟音频设备作为中转。
- 访问 VB-Audio 官网
- 下载并安装 VB-Cable
- 重启应用即可使用音频路由功能
- 前端:Vue 3 + Vite
- 后端:Rust + Tauri 2
- 图标:Lucide Vue Next
- Windows 10/11
- Node.js (v18+)
- Rust (v1.70+)
本软件依赖 AudioDeviceCmdlets PowerShell 模块来控制音频设备。
首次启动时会自动检测并安装该模块,由于需要从 PowerShell Gallery 下载,首次启动可能较慢,请耐心等待。
如需手动安装,以管理员身份运行 PowerShell,执行以下命令:
Install-Module -Name AudioDeviceCmdlets -Force详细的使用教程请参考 使用教程 文件:
- 快速开始指南
- 基本操作说明
- 高级功能使用
- 常见问题解决
- 最佳实践建议
- 克隆仓库
git clone https://github.com/CmzYa/sound_link.git cd sound-link - 安装依赖
npm install
- 启动开发服务器
npm run tauri dev
- 构建应用
npm run tauri build
sound-link/
├── src/ # 前端源代码
│ ├── components/ # Vue 组件
│ │ └── DeviceBall.vue
│ ├── views/ # 视图组件
│ │ ├── MainView.vue
│ │ └── SettingsView.vue
│ ├── index.html # 主 HTML 文件
│ └── main.js # 前端入口
├── src-tauri/ # Tauri 后端代码
│ ├── src/ # Rust 源代码
│ │ ├── main.rs # 主入口
│ │ ├── devices/ # 设备管理模块
│ │ │ ├── mod.rs # 模块定义
│ │ │ └── audio.rs # 音频设备管理
│ │ └── router/ # 音频路由模块
│ │ ├── mod.rs # 模块定义
│ │ ├── router.rs # 路由核心逻辑
│ │ ├── delay_buffer.rs # 延迟缓冲
│ │ └── volume_mixer.rs # 音量混合
│ ├── icons/ # 应用图标
│ ├── capabilities/ # Tauri 权限配置
│ └── tauri.conf.json # Tauri 配置
├── .github/ # GitHub 配置
│ └── workflows/ # GitHub Actions
│ └── release.yml # 自动发布工作流
├── package.json # 项目配置和依赖
├── vite.config.js # Vite 配置
├── README.md # 项目说明
└── USAGE.md # 使用教程
本项目使用语义化版本号规范,版本号格式为 X.Y.Z:
- X (第一位):重大的功能更新,包含不兼容的 API 变更或全新功能
- Y (第二位):交互逻辑更改,包含向后兼容的功能添加或改进
- Z (第三位):优化或者修复 bug,包含向后兼容的问题修复
我们欢迎所有形式的贡献!
- 🐛 提交 Bug 报告
- 💡 提出新功能建议
- 📝 改进文档
- 🔧 提交 Pull Request
加入我们的 QQ 群,与其他用户和开发者交流:
- QQ群号:957468536
- 群名称:Sound Link ✨ 交流反馈群
本项目基于 GPL-3.0 License 开源。