
Godot 录音 Demo 拆解4 步把麦克风声音存成 WAV【免费下载链接】godot-demo-projectsDemonstration and Template Projects项目地址: https://gitcode.com/GitHub_Trending/go/godot-demo-projects这个官方 Demo 演示了 Godot 录音的最小完整链路麦克风输入经专用总线进入 AudioEffectRecord录音效果器停止后回放或一键导出 WAV 文件。最终交付物一个 640x480 的窗口点 Record 开始录、再点一次停止Play 可回放刚才的声音Save WAV To 把结果写到user://record.wav。没有任何波形界面产出就是一段可播放、可落盘的录音。 跑起来之前的三件事引擎版本Godot 4.7渲染器用 CompatibilityCompatibility 渲染器见 project.godot入口场景MicRecord.tscn已配置为 main scene直接按 F5 运行麦克风权限项目设置里开了enable_audio_inputtrue这是 Godot 4 捕获音频输入的总开关本地跑一般直接生效仓库克隆下来后进入audio/mic_record目录打开项目即可没有第三方依赖。 拆解核心链路整条链路就四步建总线 → 挂麦克风流 → 切录制状态 → 回放/导出。全部逻辑在 MicRecord.gd 一个脚本里。1. 建一条静音的 Record 总线录音的前提是有一条只录不播的总线。配置在 default_bus_layout.tresbus/1/name Record bus/1/mute true bus/1/effect/0/effect SubResource(AudioEffectRecord_fo272)注意mute true这个细节这条总线被静音意味着麦克风的声音会经过总线被录进去但不会送进扬声器。跑起来你会发现不静音的话你会实时听到自己的声音外放设备直接啸叫。2. 把麦克风流挂到这条总线上场景里有一个隐藏的AudioStreamPlayer它的 stream 是AudioStreamMicrophone麦克风音频流stream SubResource(1) # AudioStreamMicrophone autoplay true bus Record三个属性就是全部接线工作自动播放、输出到 Record 总线。麦克风数据从进入这条总线的那一刻起就持续被 AudioEffectRecord 缓存与录制开关无关。3. 用按钮切换录制状态_ready()里先按名字拿到效果器实例之后 Record 按钮只做开关动作if effect.is_recording_active(): recording effect.get_recording() effect.set_recording_active(false) else: effect.set_recording_active(true)get_recording()返回的是AudioStreamWAVWAV 音频流对象此时数据已在内存里。紧接着三行set_mix_rate / set_format / set_stereo把界面上选的参数应用到这个对象上——这就是为什么下拉框改动会立即生效无需重新录。4. 回放并导出 WAV回放只把流对象塞给播放器$AudioStreamPlayer.stream recording $AudioStreamPlayer.play()导出则是一个方法调用recording.save_to_wav(save_path)save_path来自 LineEdit默认user://record.wav。界面上Open User Folder按钮调用OS.shell_open直接打开用户目录方便确认文件落盘位置。 参数速查界面下拉框对应 MicRecord.gd 里的三个变量录完再改也即时生效参数可选值适用场景Format8-bit / 16-bit / IMA ADPCM语音用 16-bit 足够想压小体积用 ADPCMMix rate11025 / 16000 / 22050 / 32000 / 44100 / 48000 Hz默认 44100接近 CD 音质Stereo开 / 关关成单声道数据量减半保存路径任意默认user://record.wav相对用户目录可改任意 res/user 路径⚠️ 常见卡点录出来是静音九成是项目设置里enable_audio_input没开。Godot 4 里这是独立开关不开的话麦克风流没有数据。实时听到自己声音 / 啸叫检查 Record 总线是否静音。本 Demo 的静音是刻意的改总线布局时别顺手把mute关掉。找不到保存的 WAVuser://不是项目目录是各平台独立的用户数据目录Windows 下在%APPDATA%或用户目录中。点界面上的Open User Folder或看状态栏打印的globalize_path绝对路径。 延伸方向recording.get_data()能拿到原始 PCM 字节喂给_draw()就能画振幅波形参考仓库里 audio/spectrum 的做法把频谱分析叠在录音界面上复制一条 Record 总线挂不同音源可以试验录环境音 录人声分开落盘这条总线 AudioEffectRecord AudioStreamWAV的链路对任何需要本地拾音的场景语音聊天、口述记录、调试工具都直接可复用平台权限相关的坑建议直接翻仓库 issues 搜 audio input前人踩过的都有记录。【免费下载链接】godot-demo-projectsDemonstration and Template Projects项目地址: https://gitcode.com/GitHub_Trending/go/godot-demo-projects创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考