关于 sound-engineer
sound-engineer 面向为游戏、VR/AR 和移动应用制作声音的音频工程师,涵盖空间音频、程序化声音、中间件工作流与应用音效设计,并关注性能和平台音频会话。
主要功能
- 01空间音频方法
- 02程序化声音生成
- 03Wwise 与 FMOD 工作流
- 04交互式音乐与 UX 音效设计
- 05移动端音频会话指导
- 06实时 DSP 技术
适用场景
- 01为 VR 场景设计空间音频
- 02制作多变且匹配表面的脚步声
- 03使用中间件构建自适应游戏音频
- 04为应用添加无障碍反馈音效
MCP 相关
该技能列出用于生成音效的 ElevenLabs MCP、用于检索音频文档的 Firecrawl,以及用于获取平台音频指南的 WebFetch。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ curiositech/ some_claude_skills --skill sound-engineer安装后在 Claude Code 中输入/sound-engineer确认已加载。
附带文件.claude-plugin/plugin.jsonreferences/implementations.md
详细介绍
音效工程师:空间音频、程序化声音与应用 UX 音频
面向游戏、VR/AR 和移动应用的交互媒体音频专家。专长包括空间音频、程序化声音生成、中间件集成和 UX 音效设计。
何时使用此技能
✅ 适用于:
- 空间音频(HRTF、双耳、Ambisonics)
- 程序化声音(脚步声、风声、环境音)
- 游戏音频中间件(Wwise、FMOD)
- 自适应/交互式音乐系统
- UI/UX 音效设计(点击声、通知声、反馈声)
- 声音品牌塑造(音频标识、品牌音效)
- iOS/Android 音频会话管理
- 触觉与音频协调
- 实时 DSP(混响、均衡、压缩)
❌ 不适用于:
- 音乐创作/制作 → DAW 工具(Logic、Ableton)
- 语音合成/克隆 → voice-audio-engineer
- 电影音频后期制作 → 线性编辑工作流
- 播客剪辑 → 标准音频编辑器
- 硬件麦克风设置 → 专门领域
MCP 集成
| MCP | 用途 |
|---|---|
| ElevenLabs | text_to_sound_effects - 生成 UI 音效、通知声、撞击声 |
| Firecrawl | 查询 Wwise/FMOD 文档、DSP 算法和平台指南 |
| WebFetch | 获取 Apple/Android 音频会话文档 |
专家与新手的辨别要点
| 主题 | 新手 | 专家 |
|---|---|---|
| 空间音频 | “只要左右声像移动就行” | 使用 HRTF 卷积实现真正的 3D 音效;了解 VR 头部跟踪所需的 Ambisonics |
| 脚步声 | “用 10-20 个采样” | 程序化合成:变化无限、占用内存极少、由参数驱动 |
| 中间件 | “只要播放声音就行” | 使用 RTPC 控制连续参数、使用 Switches 控制材质、使用 States 控制音乐 |
| 自适应音乐 | “对曲目做交叉淡化” | 水平重新编配(分层)+垂直混音(分轨) |
| UI 音效 | “随便什么点击声都行” | 兼顾品牌一致性、无障碍体验和触觉协调 |
| iOS 音频 | “AVAudioPlayer 就够用” | 熟悉 AVAudioSession 类别、中断处理和音频路由变更 |
| 距离衰减 | 线性衰减 | 使用带参考距离的平方反比衰减;使用对数衰减提升真实感 |
| CPU 预算 | “音频开销很小” | 了解 5-10% 的预算;HRTF 卷积开销很大(每个声源 2ms) |
常见反模式
反模式:大规模使用基于采样的脚步声
表现:20 个脚步声采样 × 6 种表面 × 3 种力度 = 360 个文件(180MB) 问题:内存膨胀,游戏进行 20 分钟后就能听出重复 替代方案:程序化合成——将冲击层与质感层结合,通过参数实现无限变化 适合使用采样的情况:小型游戏、非常特殊的角色音效
反模式:对所有声音使用 HRTF
表现:对 50 个同时发声的声源进行完整的 HRTF 卷积 问题:50 × 2ms = 100ms CPU 时间;耗尽帧预算 替代方案:对 3-5 个重要声源使用 HRTF;对环境底音使用 Ambisonics;对远处或不重要的声音使用简单声像
反模式:忽略音频会话(移动端)
表现:用户接到电话后应用音频停止,且无法恢复
问题:iOS/Android 要求显式管理会话
替代方案:实现 AVAudioSession(iOS)或 AudioFocus(Android);处理音频中断和路由变更
反模式:硬编码声音
表现:PlaySound("footstep_concrete_01.wav")
问题:没有变化,无法控制参数,也无法根据情境调整
替代方案:使用带有 Switches/RTPCs 的中间件事件;对环境音使用程序化生成
反模式:UI 音效过响
表现:每次按钮点击都设为 -3dB,音量与游戏音频相同 问题:UI 音效应当轻柔,避免造成听觉疲劳;否则会违反平台指南 替代方案:将 UI 音效设为 -18 至 -24dB;使用短促的高频瞬态音;遵循系统音量设置
演进时间线
2010 年前:固定音频
- 仅播放采样音频
- 基础立体声声像
- 实时处理能力有限
2010–2015 年:中间件时代
- Wwise/FMOD 成为标准
- RTPC 和 State 系统趋于成熟
- 基础 HRTF 支持
2016–2020 年:VR 音频革命
- 使用 Ambisonics 实现 VR 头部追踪
- 空间音频 API(Resonance、Steam Audio)
- 程序化音频逐渐普及
2021–2024 年:AI 与移动设备
- ElevenLabs/AI 音效生成
- AirPods 的 Apple Spatial Audio
- 程序化音频成为 AAA 标准
- 触觉与音频设计成为一门专业
2025 年及以后:当前最佳实践
- AI 辅助音效设计
- 神经音频编解码器
- 实时语音变换
- 根据照片定制 HRTF
核心概念
空间音频方案
| 方案 | CPU 开销 | 质量 | 使用场景 |
|---|---|---|---|
| 立体声声像 | ~0.01ms | 基础 | 远处的声音、多个声源 |
| HRTF 卷积 | ~2ms/声源 | 出色 | 近处或重要的 3D 声音 |
| Ambisonics | ~1ms 总计 | 良好 | VR、多个声源、头部追踪 |
| 双耳声(简单) | ~0.1ms/声源 | 尚可 | 低成本/移动设备空间音频 |
HRTF:将音频与测得的耳部脉冲响应(512-1024 个抽头)进行卷积。可营造逼真的 3D 定位效果,包括高度感。
Ambisonics:将声场编码为球谐函数(1 阶为 W、X、Y、Z)。具备旋转不变性,适用于多个声源,且效率高。
// Key insight: encode once, rotate cheaply
AmbisonicSignal encode(mono_input, direction) {
return {
mono * 0.707f, // W (omnidirectional)
mono * direction.x, // X (front-back)
mono * direction.y, // Y (left-right)
mono * direction.z // Z (up-down)
};
}
程序化脚步声
程序化音频优于采样音频的原因:
- ✅ 无限变化(不会重复)
- ✅ 占用极少内存(约 50KB,而非 5-10MB)
- ✅ 由参数驱动(速度 → 冲击力)
- ✅ 根据物理材质适配表面
核心合成步骤:
- 冲击声爆发(20ms 噪声 + 共鸣音调)
- 表面质感(碎石 = 颗粒感,草地 = 滤波噪声)
- 碎屑声(分散的微小冲击声)
- 表面均衡(金属 = 明亮,草地 = 沉闷)
// Surface resonance frequencies (expert knowledge)
float get_resonance(Surface s) {
switch(s) {
case Concrete: return 150.0f; // Low, dull
case Wood: return 250.0f; // Mid, warm
case Metal: return 500.0f; // High, ringing
case Gravel: return 300.0f; // Crunchy mid
default: return 200.0f;
}
}
Wwise/FMOD 集成
关键抽象:
- 事件:触发声音(脚步声、爆炸声、环境循环音)
- RTPC:连续参数(速度 0-100、生命值 0-1)
- 切换项:离散选项(表面类型、武器类型)
- 状态:全局情境(音乐强度、水下)
// Material-aware footsteps via Wwise
void OnFootDown(FHitResult& hit) {
FString surface = DetectSurface(hit.PhysMaterial);
float speed = GetVelocity().Size();
SetSwitch("Surface", surface, this); // Concrete/Wood/Metal
SetRTPCValue("Impact_Force", speed/600.0f); // 0-1 normalized
PostEvent(FootstepEvent, this);
}
UI/UX 音效设计
应用音效设计原则:
- 轻柔 - UI 音效音量为 -18 至 -24dB
- 短促 - 大多数交互持续 50-200ms
- 一致 - 整个应用保持相同的音色系列
- 无障碍 - 不要只依赖音频提供反馈
- 与触觉配合 - iOS 触觉反馈应与音频特征相匹配
音效类型:
| 类别 | 示例 | 时长 | 特征 |
|---|---|---|---|
| 点击反馈 | 按钮、切换开关 | 30-80ms | 轻柔、高频点击声 |
| 成功 | 保存、发送、完成 | 150-300ms | 上扬、积极的音调 |
| 错误 | 无效、失败 | 200-400ms | 下行、小调音调 |
| 通知 | 提醒、备忘 | 300-800ms | 鲜明、引人注意 |
| 转场 | 屏幕切换、模态窗口 | 100-250ms | 呼啸声、轻微动感 |
iOS/Android 音频会话
iOS AVAudioSession 类别:
.ambient- 与其他音频混音,并会被响铃开关静音.playback- 中断其他音频,并忽略响铃开关.playAndRecord- 用于语音应用.soloAmbient- 默认类别,会将其他音频静音
关键处理器:
- 中断(电话呼叫)
- 音频路由变化(耳机拔出)
- 次要音频(Siri)
// Proper iOS audio session setup
func configureAudioSession() {
let session = AVAudioSession.sharedInstance()
try? session.setCategory(.playback, mode: .default, options: [.mixWithOthers])
try? session.setActive(true)
NotificationCenter.default.addObserver(
self,
selector: #selector(handleInterruption),
name: AVAudioSession.interruptionNotification,
object: nil
)
}
性能目标
| 操作 | CPU 时间 | 备注 |
|---|---|---|
| HRTF 卷积(512 抽头) | ~2ms/声源 | 使用 FFT 重叠相加 |
| Ambisonic 编码 | ~0.1ms/声源 | 效率很高 |
| Ambisonic 解码(双耳声) | ~1ms 总计 | 支持多个声源 |
| 程序化脚步声 | ~1-2ms | 而每个采样音频占用 500KB |
| 风声合成 | ~0.5ms/帧 | 实时流式处理 |
| Wwise 事件发布 | <0.1ms | 可忽略不计 |
| iOS 音频回调 | 5-10ms 预算 | 48kHz/512 个采样点时 |
预算指南:音频应占用 5-10% 的帧时间。
快速参考
空间音频决策树
- VR 且支持头部追踪? → Ambisonics
- 重要声源较少? → 完整 HRTF
- 背景声源较多? → 简单声像 + 距离衰减
- 移动设备且 CPU 资源有限? → 双耳音频(简单)或声像
何时使用程序化音频
- 环境音(风、雨、火)→ 始终使用程序化音频
- 脚步声 → 大型游戏使用程序化音频,小型游戏使用采样
- UI 音效 → 生成一次,然后缓存
- 撞击声/爆炸声 → 混合方案(程序化音频 + 采样层)
平台音频会话
- 带有音乐的游戏:
.ambient+mixWithOthers - 冥想/专注应用:
.playback(打断音乐) - 语音聊天:
.playAndRecord - 视频播放器:
.playback
集成对象
- voice-audio-engineer - 语音合成和 TTS
- vr-avatar-engineer - VR 音频 + 虚拟形象集成
- metal-shader-expert - GPU 音频处理
- native-app-designer - 应用 UI 音效集成
详细实现:参见 /references/implementations.md
请记住:出色的音频是无形的——玩家能感受到它,却不会注意到它。应专注于烘托体验,而不是炫技。程序化音频可节省内存并消除重复。务必遵守 CPU 预算和平台音频会话要求。