The audio waveform isn’t displayed sometimes if an audio component has a change event attached

用户在 Gradio Blocks 中使用 Audio 组件,并为其绑定了 change 事件回调函数(例如根据音频输入是否为空来控制按钮的交互状态)。当加载某些音频文件时,波形图不渲染,音频也无法播放;移除 change 事件绑定后问题消失。

The audio waveform isn't displayed sometimes if an audio component has a change event attached

The audio waveform isn’t displayed sometimes if an audio component has a change event attached

快速结论:该问题出现在 Gradio Audio 组件绑定了 change 事件时,加载某些音频文件后波形图不显示且无法播放。优先排查音频文件的位深度(如 24-bit)是否被 Gradio 自动转换处理,并确认 Gradio 版本是否为 4.19.1。

问题场景

用户在 Gradio Blocks 中使用 Audio 组件,并为其绑定了 change 事件回调函数(例如根据音频输入是否为空来控制按钮的交互状态)。当加载某些音频文件时,波形图不渲染,音频也无法播放;移除 change 事件绑定后问题消失。

报错原文

gradio\processing_utils.py:392: UserWarning: Trying to convert audio automatically from int32 to 16-bit int format.
  warnings.warn(warning.format(data.dtype))
Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
...
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
ERROR:    Exception in ASGI application
...
  File "C:\Users\jorge\Desktop\gradio_test\lib\site-packages\gradio\processing_utils.py", line 392, in ...
...
exceptiongroup.ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
...

原因分析

可能原因:当 Audio 组件绑定 change 事件后,Gradio 在处理音频文件时可能触发了自动格式转换(例如从 int32 到 16-bit int),转换过程与前端波形渲染产生冲突或超时,导致波形图无法正常显示。该问题在遇到 24-bit 位深等非常规格式的音频文件时更容易复现,但并非所有环境下都能稳定复现。

环境排查

  • Gradio 版本:确认是否为 4.19.1(问题报告时的版本)
  • 操作系统:Windows 10(问题报告环境)
  • 浏览器:Chrome(最新版)
  • Python 版本:3.9 或 3.11(均出现)
  • 音频文件位深:检查是否为 24-bit、int32 等非标准 16-bit 格式
  • 网络环境:本地运行和 Colab notebook 上均可复现

解决步骤

  1. 检查音频文件格式:使用 ffprobe 或 Python 库(如 soundfile)检查音频文件的编码格式和位深度。优先使用标准 16-bit PCM WAV 文件测试。
  2. 移除 change 事件临时验证:注释掉与 Audio 组件绑定的 change 事件代码,确认问题是否消失——这将帮助定位事件绑定是否为触发条件。
  3. 升级 Gradio:可优先尝试升级到最新版本(>4.19.1),查看是否已修复此问题。
  4. 转换音频文件位深:如果确认是 24-bit 或 int32 格式,使用工具(如 ffmpeg)将音频转换为 16-bit 16kHz 或 44.1kHz 标准格式后再加载。
  5. 简化事件回调:如果问题持续,尝试在 change 事件回调中仅做最基本操作(如日志输出),看是否影响波形显示。

验证方法

在问题修复后,加载之前导致异常的音频文件,观察 Audio 组件是否正常渲染波形图(一条实心波形填充),并检查能否点击播放按钮正常播放音频。同时确认 Gradio 终端无 UserWarning 关于音频格式转换的提示。

参考来源

gradio-app/gradio #7490

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 13879

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注