!voicebroadcast - DIY语音播报、技能通报插件

!voicebroadcast - DIY语音播报、技能通报插件

这是一款兼容性非常强,设置简单,功能丰富的语音播报插件。 DIY语音播报插件,可以对自己技能释放、目标的技能释放、团队其他玩家技能释放及DBM技能、倒数等进行自定义的语音播报,搭载TTS自动化语音。 可作为PVP监控目标的技能使用,PVE副本技能提示,个人buff提示,pull倒数换饰品提示等。 建议玩家搭载【JD】语音包、【露露】的副本语音、【露露】的职业语音 一起使用效果更加。

副本&团队PvP信息提示战斗

# 语音播报(!voicebroadcast)

![语音播报插件图标](png.png)

`!voicebroadcast` 是面向魔兽世界时光服(Classic 体系,接口版本 `38002`)的自定义语音提醒插件。它可以根据 DBM 事件、BUFF/DEBUFF、玩家技能、目标施法、团队技能以及生命/法力阈值播放本地音频,或使用游戏客户端 TTS 播报文字。

当前 TOC 版本:`1.8.6`  
SavedVariables:`VoiceBroadcastDB`

## 功能概览

- DBM 普通通告、计时器、开怪倒计时、BOSS 施法、击杀、灭团和阶段切换提醒。
- 自身或当前目标的 BUFF/DEBUFF 获取、消失和层数到达提醒。
- 自身技能施法成功、真实冷却结束提醒,自动忽略公共冷却(GCD)。
- 当前目标或焦点目标开始读条、施法成功提醒。
- 团队/小队成员施法成功、MISS、免疫、抵抗、规避和施法结束提醒。
- 玩家生命值或法力值跨越阈值提醒,并支持恢复后重新武装。
- 本地音频和客户端 TTS 两种播报方式,支持规则试听。
- 通用、死亡骑士及九个经典职业音频分组。
- 多技能、多文本、多计时器 ID 和多玩家名称的单规则匹配。
- 规则新增、启停、删除、搜索、分组显示以及完整配置导入导出。
- 可拖动的小地图按钮、斜杠命令和可开关的调试日志。

## 安装与依赖

将插件目录保持为:

```text
World of Warcraft\_classic_titan_\Interface\AddOns\!voicebroadcast\

建议同时安装以下插件:

依赖 用途 是否必须
LibHUI 已包含在本插件目录中,用于设置界面 是,已内置
JTSound 提供本地语音文件,默认从JTSound\Sound 读取 使用本地音频时需要
DBM 提供通告、计时器、开怪、击杀、灭团和阶段事件 仅 DBM 规则需要
游戏客户端 TTS 音频路径留空时播报备注 仅 TTS 播报需要

安装或更新后,在角色选择界面确认插件已启用,再进入游戏。插件加载成功会在聊天框显示:

[语音播报] 已加载,输入 /cb 打开设置。

快速上手

  1. 输入 /cb,或左键点击小地图上的插件图标。
  2. 选择需要的规则页,例如“自身技能”。
  3. 点击左侧“+ 添加规则”。
  4. 填写备注、技能、触发条件和音频路径。
  5. 点击“试听”验证语音是否能正常播放。
  6. 保持“启用”为开启状态,关闭设置窗口即可。

示例:玩家施放“消失”时播放盗贼职业目录中的 消失.ogg

字段 示例值
页面 自身技能
备注 消失已使用
分组 盗贼
职责 不限
技能/BUFF 消失 或对应技能 ID
触发条件 施法成功
音频路径 消失.ogg

最终播放路径为:

Interface\AddOns\JTSound\Sound\Rogue\消失.ogg

设置界面

设置界面包含七个分页:

页面 用途
DBM 事件 DBM 通告、计时器、首领与阶段相关提醒
BUFF/DEBUFF 光环获取、消失和层数提醒
自身技能 玩家施法成功与冷却完毕提醒
目标施法 当前目标、焦点目标施法提醒
团队技能 团队或小队成员技能事件提醒
资源阈值 自身生命值、法力值百分比提醒
导入导出 生成或导入VB1: 配置字符串

所有规则页都支持:

  • 点击“+ 添加规则”创建规则。
  • 使用“备注”作为规则列表显示名称和 TTS 文本。
  • 单独启用或停用规则。
  • 按备注、技能、音频、匹配文本、事件类型或分组搜索。
  • 点击“试听”立即播放当前规则。
  • 点击“删除”永久移除当前规则。
  • 使用鼠标滚轮或滚动条查看较长的规则详情。

通用配置规则

多值输入

支持多值的字段可以使用英文逗号、中文逗号、英文分号、中文分号或空格分隔,任意一项匹配即可。

642, 1022, 圣盾术

短横线不会作为分隔符,因此跨服玩家名可以正常填写:

玩家甲-服务器A 玩家乙-服务器B

多值规则适用于:

  • 技能/BUFF 名称或 ID
  • DBM 匹配文本
  • DBM 计时器 ID
  • DBM 技能 ID
  • 玩家名称

分组

BUFF/DEBUFF、自身技能、目标施法、团队技能和资源阈值规则支持以下分组:

通用、死亡骑士、德鲁伊、猎人、法师、圣骑士、牧师、盗贼、萨满祭司、术士、战士

分组有两个作用:

  1. 在规则列表中分类显示。
  2. 当音频路径只填写文件名时,决定使用 JTSound\Sound 下的哪个职业目录。

职责和角色条件

非 DBM 页面可以按当前玩家职责限制规则:不限、坦克、输出或治疗。

DBM 页面可以按职责或职业限制规则:所有角色、坦克、治疗、输出,以及十个职业。还可以填写一个或多个玩家名称。职责/职业与玩家名称同时填写时,两者必须都匹配。

职责来自游戏当前的团队职责分配;未正确分配职责时,坦克、治疗或输出条件可能无法命中。

音频与 TTS

所有规则共用相同的播放逻辑,并通过 Master 音频通道播放。

输入方式 示例 实际解析结果
仅文件名 刺骨.ogg,分组选择盗贼 Interface\AddOns\JTSound\Sound\Rogue\刺骨.ogg
相对路径 ItemSet\套装触发.ogg Interface\AddOns\JTSound\Sound\ItemSet\套装触发.ogg
完整路径 Interface\AddOns\JTSound\Sound\Common\警告.ogg 原样使用
留空 备注填写“生命值过低” 使用客户端 TTS 播报备注

技能/BUFF 字段只填写一个名称或 ID,且音频路径为空时,界面会尝试自动填写本地化技能名加 .ogg。多技能输入不会自动生成音频文件名。

支持的常见音频扩展名包括 .ogg.mp3.wav,实际可播放格式以游戏客户端支持情况为准。

DBM 事件提醒

DBM 页面支持以下事件:

事件类型 触发来源 典型用途
普通通告 DBM_Announce 文本警告、开怪通告提前提醒
计时器开始 DBM_TimerBegin 指定计时条剩余若干秒时提醒
开怪倒计时 DBM_Pull 开怪前角色分工或准备提醒
BOSS 施法成功 战斗日志 按技能 ID 监听敌对首领技能
击杀首领 DBM_Kill 击杀提示
灭团 DBM_Wipe 灭团提示
阶段切换 DBM_SetStage 进入指定阶段时提醒

DBM 规则可以组合以下筛选条件;留空表示不限制:

  • 匹配文本:对通告文本或首领模块名称进行不区分大小写的子串匹配。
  • 计时器 ID:精确匹配一个或多个 DBM 计时器 ID。
  • 首领阶段、副本名称、首领模块:通过三级菜单选择,最终按 DBM mod.id 匹配。
  • 技能 ID:匹配一个或多个技能 ID。
  • 计时器类型:例如 cdnextstagepullcastberserk 等。
  • 提前秒数:在倒计时剩余该秒数时播报。
  • 角色条件、玩家名称:限制规则仅对当前角色或指定玩家生效。

字段是否参与匹配取决于 DBM 事件是否提供对应数据:计时器 ID 和计时器类型用于“计时器开始”,提前秒数用于“普通通告”“计时器开始”和“开怪倒计时”,技能 ID 主要用于“普通通告”“计时器开始”和“BOSS 施法成功”。首领阶段与副本选项用于定位首领模块,实际按最终选择的 DBM 模块 ID 匹配。

内置三级首领目录覆盖:

P1  熔火之心、经典世界首领
P2  毒蛇神殿、风暴要塞、外域世界首领
P3  纳克萨玛斯、永恒之眼、黑曜石圣殿
P4  祖尔格拉布、十字军试炼
P5  太阳之井高地、祖阿曼
P6  奥杜尔
P7  玛瑟里顿的巢穴、格鲁尔的巢穴、卡拉赞
P8  黑翼之巢、安其拉废墟、奥妮克希亚的巢穴
P9  安其拉神庙、世界首领绿龙
P10 冰冠堡垒、红玉圣殿
终章 海加尔山、黑暗神殿

示例:DBM 计时器提前 5 秒

字段 示例值
事件类型 计时器开始
计时器 ID 从调试日志取得的计时器 ID
首领阶段/副本/首领模块 按实际首领选择
技能 ID 对应首领技能 ID,可留空
计时器类型 cd,不确定时选“不限”
提前秒数 5
备注 技能五秒后到来
音频路径 留空,使用 TTS

计时器被停止、更新、暂停或恢复时,插件会同步取消或重新安排尚未播放的提醒,避免旧计时器误播。

示例:开怪倒计时剩余 5 秒提醒

可选择两种事件来源:

方案 事件类型 匹配文本 提前秒数
监听 DBM 开怪事件 开怪倒计时 可留空 5
监听“25秒后开怪”等普通通告 普通通告 开怪Pull 5

普通通告倒计时支持识别类似以下文本:

25秒后开怪
Pull in 25 sec

倒计时结束、取消、首领开战、击杀或灭团时,未播放的普通通告排程会失效。

示例:BOSS 施法成功

字段 示例值
事件类型 BOSS施法成功
技能 ID 首领技能 ID
角色条件 坦克
备注 坦克注意首领技能
音频路径 警告.ogg

首领施法优先按技能 ID 匹配;技能 ID 为空时,也可以在“匹配文本”中填写精确的技能名称。

示例:阶段切换

字段 示例值
事件类型 阶段切换
匹配文本 阶段 2
首领模块 选择对应 BOSS
备注 进入第二阶段

BUFF/DEBUFF 监控

支持监控自身或当前目标的指定光环:

  • 获取:首次获得、刷新或增加层数时触发。
  • 消失:移除或减少层数事件时触发。
  • 层数到达:层数从阈值以下跨越到阈值或以上时触发一次;光环消失后可以再次触发。

技能/BUFF 可填写名称、技能 ID 或多个值。来源可以选择“仅自己”或“仅目标”。

示例:自身获得 BUFF

字段 示例值
分组 通用
技能/BUFF BUFF 名称或 ID
类型 BUFF
触发条件 获取
来源 仅自己
备注 增益已获得
音频路径 增益.ogg

示例:目标 DEBUFF 到达 5 层

字段 示例值
技能/BUFF DEBUFF 名称或 ID
类型 DEBUFF
触发条件 层数到达
触发层数 5
来源 仅目标
备注 减益五层
音频路径 留空,使用 TTS

层数判断会优先读取单位当前的实际 DEBUFF 层数;无法读取时才使用战斗日志提供的层数。

当前版本的“类型”选项会保存到规则中,但战斗日志匹配仍以技能/BUFF、来源和触发条件为准,不单独使用 BUFF/DEBUFF 类型过滤。建议使用唯一的技能 ID 避免名称歧义。

自身技能提醒

支持两种触发条件:

  • 施法成功:玩家自身产生 SPELL_CAST_SUCCESS 时触发。
  • 冷却完毕:技能先进入真实冷却,再恢复可用时触发;1.5 秒及以下的公共冷却不会被视为真实冷却。

示例:多个技能任意一个冷却完毕

字段 示例值
分组 圣骑士
职责 坦克
技能/BUFF 642, 1022
触发条件 冷却完毕
备注 防御技能已就绪
音频路径 防御技能就绪.ogg

每个技能会独立追踪冷却状态,但同一次刷新中一条规则最多播放一次。

目标施法提醒

目标施法页面支持:

  • 施法成功。
  • 开始读条。
  • “仅目标”:只监控当前目标。
  • “目标+焦点目标”:同时监控当前目标和焦点目标。

示例:目标或焦点开始读条

字段 示例值
技能/BUFF 需要打断的技能 ID
触发条件 开始读条
来源 目标+焦点目标
备注 注意打断
音频路径 打断.ogg

目标或焦点变化时插件会立即更新监控 GUID。

团队技能监控

仅监控当前团队或小队成员(包括自己)的技能事件。支持以下触发条件:

触发条件 含义
施法成功 SPELL_CAST_SUCCESS
MISS-全部 任意带missTypeSPELL_MISSED
MISS-仅免疫 IMMUNE
MISS-仅抵抗 RESIST
MISS-未命中+招架+抵抗 MISSRESISTPARRYDODGEBLOCKDEFLECT
开始读条 SPELL_CAST_START
施法结束 SPELL_CAST_FAILED

示例:团队嘲讽被免疫

字段 示例值
分组 通用
技能/BUFF 嘲讽类技能 ID,可填写多个
触发条件 MISS-仅免疫
备注 嘲讽免疫
音频路径 留空,使用 TTS

团队成员变化时,插件会自动刷新团队/小队 GUID 缓存。

生命/法力阈值

资源阈值只监控玩家自身。规则只有在数值跨过阈值时才播放,持续停留在阈值一侧不会重复刷屏。

示例:生命值过低

字段 示例值
资源类型 生命值
触发条件 低于阈值
阈值百分比 30
重新武装阈值 50
备注 生命值过低
音频路径 留空,使用 TTS

生命值首次降到 30% 或以下时播放;恢复到 50% 或以上后,下一次降到 30% 才会再次播放。

示例:法力值恢复充足

字段 示例值
资源类型 法力值
触发条件 高于阈值
阈值百分比 80
重新武装阈值 40
备注 法力充足

法力值到达 80% 或以上时播放;降到 40% 或以下后重新武装。

配置导入导出

进入“导入导出”页:

  1. 点击“生成导出字符串”。
  2. 复制以 VB1: 开头的字符串并发送给其他玩家。
  3. 对方将字符串粘贴到导入框。
  4. 点击“导入配置”。

导入会替换字符串中包含的六类规则,并自动补齐当前版本新增字段。小地图位置、图标显隐和调试开关不会被导出或替换。

导入前建议先导出当前配置留作备份。导入操作会直接替换现有规则,没有撤销按钮。

配置保存在:

WTF\Account\<账号>\SavedVariables\VoiceBroadcastDB.lua

请勿在游戏运行时手工修改 SavedVariables;退出游戏后再备份或编辑。

小地图按钮

  • 左键:打开或关闭设置界面。
  • 按住左键拖动:沿小地图边缘调整图标位置。
  • /cb minimap:隐藏或重新显示图标。

图标位置和显隐状态会保存到 VoiceBroadcastDB

斜杠命令

命令 功能
/cb 打开或关闭设置界面
/voicebroadcast /cb 的完整别名
/cb show 打开或关闭设置界面
/cb open 打开或关闭设置界面
/cb settings 打开或关闭设置界面
/cb minimap 切换小地图图标显隐
/cb debug 切换调试模式
/cb help 显示命令帮助

调试与排错

输入 /cb debug 开启调试模式后,聊天框会输出 DBM 回调参数、规则匹配过程,以及与自己、团队或小队有关的战斗日志摘要。排错完成后应再次输入命令关闭调试,避免战斗时产生大量信息。

点击“试听”没有声音

  1. 检查 JTSound 是否已安装并启用。
  2. 检查文件名、扩展名和目录大小写。
  3. 如果只填写文件名,确认规则分组与音频所在职业目录一致。
  4. 尝试填写从 Interface\ 开始的完整路径。
  5. 音频路径留空时,确认客户端支持并启用了 TTS,且备注不为空。

规则不触发

  1. 确认规则已启用。
  2. 优先使用技能 ID,避免本地化名称差异。
  3. 检查职责、职业和玩家名称筛选是否符合当前角色。
  4. BUFF/DEBUFF 的“仅目标”只认当前目标,目标切换后监控对象也会变化。
  5. 目标施法规则只监控当前目标,或当前目标加焦点目标,不监控任意单位。
  6. 团队技能规则只接受当前团队/小队成员的事件。
  7. DBM 规则需要 DBM 已加载并成功注册回调,可打开调试模式查看原始参数。

冷却完毕不播报

  • 技能必须先进入超过 1.5 秒的真实冷却。
  • 仅产生公共冷却的技能不会触发。
  • 多技能规则中的技能 ID 或名称必须能被 GetSpellCooldown 正确识别。

DBM 提前提醒不播报

  • “提前秒数”必须大于 0,且不能大于计时器总剩余时间。
  • 计时器 ID、首领模块、技能 ID、类型、匹配文本等非空条件必须全部匹配。
  • 普通通告提前提醒仅能从带秒数的中文或英文通告中解析倒计时。
  • 计时器被停止、暂停、覆盖或首领战结束后,原排程会失效。

项目文件

文件 职责
!voicebroadcast.toc 插件元数据、版本、SavedVariables 和加载顺序
!voicebroadcast.lua 配置、事件、匹配、播放、DBM、小地图、命令和导入导出
Settings.lua 基于 LibHUI 的设置界面
LibHUI/ 插件内置的轻量设置界面库
png.png 插件及小地图图标
rebuild.md 开发修改记录

兼容性说明

  • 目标客户端接口版本为 38002
  • 插件不修改 JTSound 中的任何音频文件,只引用其路径。
  • DBM 未安装时,非 DBM 功能仍可使用;DBM 事件规则不会触发。
  • 客户端不提供 C_VoiceChat.SpeakText 时不会播放 TTS,并会在首次失败时给出提示。
  • 配置初始化会补齐缺失字段并保留既有规则数据。