Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
| Last updated | 3 days ago |
| Total downloads | 59 |
| Total rating | 0 |
| Categories | Misc Audio AI Generated |
| Dependency string | Aartyns-VoiceMusicBoost-1.0.1 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
音乐语音增强 (VoiceMusicBoost) 1.0.1
R.E.P.O. 的语音走 Photon Voice,默认按 人声 调优:Opus 单声道 30kbps / 24kHz、开启语音检测(VAD)、叠加 WebRTC 的 AEC/NS/AGC 处理。用麦克风链路放音乐时,这三样叠加起来就是「发闷 + 断续 + 一阵阵断口」。
本插件只改这三处,只写运行期参数,不修改任何游戏文件:
- Opus 编码:30000bps / 24000Hz → 96000bps / 48000Hz(单声道不变),帧长 20ms → 40ms。
- 语音检测(VAD):关闭,让安静与低频段落照常发送。
- WebRTC 音效链:关闭 AEC / NS / AGC / 高通滤波 / WebRTC 自带 VAD,并旁路整条处理链。
游戏原生的「按 45m/60m 距离与视野动态增删语音接收者」逻辑 不做任何改动,1.0.1 已移除该改动。
安装
把 VoiceMusicBoost-1.0.1.dll 放进:
<游戏目录>\BepInEx\plugins\
配置文件:`BepInEx\config\com.voicemusicboost.repo.cfg`,改完重启生效(也可用 ConfigurationManager 游戏内改)。
## 只在你自己电脑上装就够
- 补丁挂在 `Recorder` / `WebRtcAudioDsp` 这两个组件的类型上,作用于**本机的语音发送链路**,与房间角色无关。
- 你是**房主**、或作为**客机**加入别人的房间,效果完全一样,都是本机生效。
- 队友**不需要装**:这是发送端参数优化,接收端解 Opus 是自适应的,96kbps/48kHz 的流对方照常播得出来。
- 反过来,别人装了这个插件、你没装,对你没有任何影响。
## 配置项
### 1-编码参数
| 配置项 | 默认 | 说明 |
|---|---|---|
| 启用编码覆盖 | 开 | 关掉则不覆盖编码参数,只保留 VAD 与 WebRTC 处理开关 |
| Opus 码率 (bps) | 96000 | 游戏默认 30000。64000 够用 / 96000 推荐 / 128000 最佳 |
| 采样率 (Hz) | 48000 | 游戏默认 24000,音乐高频被削。可选 16000/24000/32000/48000 |
| 帧长 (毫秒) | 40 | 游戏默认 20。40 抗抖动更均衡,20 延迟最低 |
### 2-音频处理
| 配置项 | 默认 | 说明 |
|---|---|---|
| 关闭语音检测 (VAD) | 开 | 语音检测会把安静/低频段落判为静音停止发送,音乐因此频繁断口 |
| 语音检测阈值 | 0.001 | 仅在未能关闭 VAD 时生效 |
| 关闭 WebRTC 音效处理 | 开 | 关掉 AEC / 噪声抑制 / AGC / 高通滤波 / WebRTC VAD 并旁路处理链。这些算法专为人声设计,会把音乐当噪声压制。**外放音箱而非戴耳机时可能给队友带来回声** |
### 3-传输
| 配置项 | 默认 | 说明 |
|---|---|---|
| 可靠传输 | 关 | 丢包重传,音乐不易被丢包撕裂,但延迟与带宽上升。网络差时可试开 |
### 4-诊断
| 配置项 | 默认 | 说明 |
|---|---|---|
| 输出详细日志 | 开 | 每次建立语音流后打印实际采样率/声道/帧长/码率/采样管道,以及**麦克风输入端的真实格式** |
日志形如:
[实际语音流] 采样率=48000Hz 声道=1 帧长=40ms 码率=96000bps 采样管道=LocalVoiceAudioShort | 麦克风输入: 48000Hz x2
## 关于你本地的 48000Hz / 32bit
- **采样率 48000 是对齐项**:插件请求 48000Hz,正好等于设备格式,Windows 通信角色不会把输入降到 16kHz 再重采样。这是「照 48kHz 优化」的实际含义。
- **位深 32bit 保不住,也不用保**:Opus 是有损编码,内部按 16bit 量化,并且没有 24/32bit 模式。32bit float 只是设备侧的采集格式,进编码器前必然降到 16bit。想提升听感要加**码率**,不是位深。
- **声道会被合并**:Opus 单声道下,设备的 2 声道输入会 downmix 成单声道,音乐的左右声像会丢失。若要立体声必须改 Opus 立体声(码率翻倍、上行带宽翻倍),本版按你要求保持单声道。
- 若日志里「麦克风输入」低于 48000Hz,说明虚拟声卡或系统在采集端就降频了,插件救不回来:去 Voicemeeter 系统设置/Windows 声音设置把设备格式设为 48000Hz,并把该设备从「通信设备」角色取消(声音控制面板 → 通信 → 不执行任何操作)。
## 仍需手动配合
1. **关闭游戏内「按键说话」**(设置 → 音频/控制),否则只在按键时发送。
2. **发送端音量**:游戏内麦克风音量调高;音乐偏小就在 Voicemeeter 的 B1 总线加增益,不要靠堆码率。
## 原理(补丁点)
| 补丁 | 目标 | 作用 |
|---|---|---|
| Prefix | `Recorder.CreateLocalVoiceAudioAndSource` | 建流前直写私有字段 bitrate / samplingRate / frameDuration / voiceDetection / voiceDetectionThreshold / reliableMode,不触发 RestartRecording(避免重启死循环) |
| Postfix | `WebRtcAudioDsp.Awake` | 关 AEC / NS / AGC / HighPass / WebRTC VAD,并设 Bypass |
| Postfix | `PlayerVoiceChat.PhotonVoiceCreated` | 打印实际生效参数、采样管道与麦克风输入格式 |
补丁按组加载,任一组失败只记日志,不影响其余功能。
## 局限说明
- 语音链路的上限没变:Opus 单声道实时编码,音乐达不到推流级音质。96kbps/48kHz 已是可听级(早期网络电台水平)。
- 不碰距离过滤,因此远处队友按游戏原逻辑仍可能收不到你的语音;这属于游戏设计,本插件不干预。
- 若追求真正流畅无损,唯一彻底方案是把音乐做成**游戏内 3D 音源**(AudioSource + 网络同步),完全绕开语音编码。那是另一套实现,本插件不做。
## 兼容性
- BepInEx 5,.NET Framework 4.7.2 目标(Unity Mono),单文件 DLL,无第三方依赖,可与其它 BepInEx 插件共存。