You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python中用js2py执行JS播放WAV文件时遇Audio未定义错误求助

解决Python中通过JS调用音频文件的问题

你遇到的错误原因很明确:js2py只是在Python环境中模拟了基础的JavaScript运行环境,但它不包含浏览器特有的Web API——Audio对象是浏览器提供的用于处理音频的API,所以在js2py里找不到这个对象,自然会抛出ReferenceError。

下面给你两种可行的解决方案,根据你的需求选择:

方案1:直接用Python播放音频(最推荐)

既然你最终的目的是播放音频,完全不需要绕JS这一层,Python有很多成熟的音频处理库,简单易用:

用playsound库(轻量快速)

这是最简单的方案,只需要两行代码:
首先安装库:

pip install playsound

然后编写播放代码:

from playsound import playsound
playsound("file.wav")

用pygame库(支持更复杂的音频控制)

如果需要暂停、循环、音量调节等功能,可以用pygame:
安装库:

pip install pygame

播放代码示例:

import pygame

# 初始化音频 mixer
pygame.mixer.init()
# 加载音频文件
pygame.mixer.music.load("file.wav")
# 开始播放
pygame.mixer.music.play()

# 等待音频播放完成(否则程序会直接退出)
while pygame.mixer.music.get_busy():
    pygame.time.Clock().tick(10)

方案2:如果必须通过JS播放(比如要复用JS逻辑)

如果你的场景必须依赖JavaScript代码来处理音频,那需要找一个包含完整浏览器环境的JS运行引擎,比如用PyQt5的QWebEngineView来模拟浏览器:

首先安装PyQt5:

pip install PyQt5

然后编写代码:

from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView
import sys

# 初始化Qt应用
app = QApplication(sys.argv)
# 创建浏览器视图对象
web_view = QWebEngineView()

# 构造包含JS播放逻辑的HTML内容
html_content = '''
<html>
    <body>
        <script>
            // 这里可以直接使用浏览器的Audio API
            var snd = new Audio("file.wav");
            snd.play();
            // 音频播放完成后自动退出程序
            snd.onended = function() {
                window.close();
            };
        </script>
    </body>
</html>
'''

# 加载HTML内容
web_view.setHtml(html_content)
# 如果不需要显示浏览器窗口,可以隐藏它
# web_view.hide()

# 启动Qt事件循环,直到音频播放完成退出
sys.exit(app.exec_())

这个方案本质是用Qt内置的浏览器组件来运行你的JS代码,拥有完整的浏览器Web API支持,所以Audio对象能正常工作。


内容的提问来源于stack exchange,提问作者Harshit Trivedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:59:10