在Python中播放WAV文件

2023-11-27

我尝试用 PyGame 来播放这样的 WAV 文件:

import pygame
pygame.init()

pygame.mixer.music.load("mysound.wav")
pygame.mixer.music.play()
pygame.event.wait()

但它改变了声音,我不知道为什么! 我读这个链接解决方案,但无法解决我播放波形文件的问题!

对于这个解决方案,我不知道应该导入什么?

s = Sound() 
s.read('sound.wav') 
s.play()

对于这个解决方案 /dev/dsp 在新版本的 linux 中不存在:

from wave import open as waveOpen
from ossaudiodev import open as ossOpen
s = waveOpen('tada.wav','rb')
(nc,sw,fr,nf,comptype, compname) = s.getparams( )
dsp = ossOpen('/dev/dsp','w')
try:
  from ossaudiodev import AFMT_S16_NE
except ImportError:
  if byteorder == "little":
    AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
  else:
    AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
dsp.setparameters(AFMT_S16_NE, nc, fr)
data = s.readframes(nf)
s.close()
dsp.write(data)
dsp.close()

当我尝试 pyglet 时它给了我这个错误:

import pyglet

music = pyglet.resource.media('mysound.wav')
music.play()

pyglet.app.run()
--------------------------

nima@ca005 Desktop]$ python play.py
Traceback (most recent call last):
  File "play.py", line 4, in <module>
    music = pyglet.resource.media('mysound.wav')
  File "/usr/lib/python2.7/site-packages/pyglet/resource.py", line 587, in media
    return media.load(path, streaming=streaming)
  File "/usr/lib/python2.7/site-packages/pyglet/media/__init__.py", line 1386, in load
    source = _source_class(filename, file)
  File "/usr/lib/python2.7/site-packages/pyglet/media/riff.py", line 194, in __init__
    format = wave_form.get_format_chunk()
  File "/usr/lib/python2.7/site-packages/pyglet/media/riff.py", line 174, in get_format_chunk
    for chunk in self.get_chunks():
  File "/usr/lib/python2.7/site-packages/pyglet/media/riff.py", line 110, in get_chunks
    chunk = cls(self.file, name, length, offset)
  File "/usr/lib/python2.7/site-packages/pyglet/media/riff.py", line 155, in __init__
    raise RIFFFormatException('Size of format chunk is incorrect.')
pyglet.media.riff.RIFFFormatException: Size of format chunk is incorrect.
AL lib: ReleaseALC: 1 device not closed

您可以使用PyAudio。举个例子,在我的 Linux 上它可以工作:

#!usr/bin/env python  
#coding=utf-8  
  
import pyaudio  
import wave  
  
#define stream chunk   
chunk = 1024  
  
#open a wav format music  
f = wave.open(r"/usr/share/sounds/alsa/Rear_Center.wav","rb")  
#instantiate PyAudio  
p = pyaudio.PyAudio()  
#open stream  
stream = p.open(format = p.get_format_from_width(f.getsampwidth()),  
                channels = f.getnchannels(),  
                rate = f.getframerate(),  
                output = True)  
#read data  
data = f.readframes(chunk)  
  
#play stream  
while data:  
    stream.write(data)  
    data = f.readframes(chunk)  
  
#stop stream  
stream.stop_stream()  
stream.close()  
  
#close PyAudio  
p.terminate()  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中播放WAV文件 的相关文章

  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • 如何屏蔽 PyTorch 权重参数中的权重?

    我正在尝试在 PyTorch 中屏蔽 强制为零 特定权重值 我试图掩盖的权重是这样定义的def init class LSTM MASK nn Module def init self options inp dim super LSTM
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • 如何在 Ubuntu 上安装 Python 模块

    我刚刚用Python写了一个函数 然后 我想将其做成模块并安装在我的 Ubuntu 11 04 上 这就是我所做的 创建 setup py 和 function py 文件 使用 Python2 7 setup py sdist 构建分发文
  • Python 中的六边形自组织映射

    我在寻找六边形 自组织映射 http en wikipedia org wiki Self organizing map在Python上 准备好模块 如果存在的话 绘制六边形单元格的方法 将六边形单元作为数组或其他方式使用的算法 About
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • Dask DataFrame 的逐行处理

    我需要处理一个大文件并更改一些值 我想做这样的事情 for index row in dataFrame iterrows foo doSomeStuffWith row lol doOtherStuffWith row dataFrame
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • python中函数变量的作用域

    假设我们有两个函数 def ftpConnect ftp FTP server ftp login ftp cwd path def getFileList ftpConnect files ftp nlst print files 如果我
  • 如何在 Windows 上使用 Python 3.6 来安装 Python 2.7

    我想问一下如何使用pip install对于 Python 2 7 当我之前安装并使用 Python 3 6 时 我现在必须使用 Windows 上的 Python 版本 pip install 继续安装 Python 3 6 我需要使用以
  • 如何为多组精灵创建随机位置?

    我尝试使用 blit 和 draw 方法进行 for 循环 并为 PlayerSprite 和 Treegroup 使用不同的变量 for PlayerSprite in Treegroup surface blit PlayerSprit
  • Pandas:根据列名进行列的成对乘法

    我有以下数据框 gt gt gt df pd DataFrame ap1 X 1 2 3 4 as1 X 1 2 3 4 ap2 X 2 2 2 2 as2 X 3 3 3 3 gt gt gt df ap1 X as1 X ap2 X a
  • 在 Windows 上使用 IPython 笔记本时出现 500 服务器错误

    我刚刚在 Windows 7 Professional 64 位上全新安装了 IPython 笔记本 我采取的步骤是 从以下位置安装 Python 3 4 1http python org http python org gt pip in
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • 在谷歌C​​olab中使用cv2.imshow()

    我正在尝试通过输入视频来对视频进行对象检测 cap cv2 VideoCapture video3 mp4 在处理部分之后 我想使用实时对象检测来显示视频 while True ret image np cap read Expand di
  • 使用 lambda 函数更改属性值

    我可以使用 lambda 函数循环遍历类对象列表并更改属性值 对于所有对象或满足特定条件的对象 吗 class Student object def init self name age self name name self age ag
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • 具有指定置信区间的 Seaborn 条形图

    我想在 Seaborn 条形图上绘制置信区间 但我已经计算出置信区间 如何让 Seaborn 绘制我的置信区间而不是尝试自行计算它们 例如 假设我有以下 pandas DataFrame x pd DataFrame Group 1 0 5
  • 使用 Keras 和 fit_generator 绘制 TensorBoard 分布和直方图

    我正在使用 Keras 使用 fit generator 函数训练 CNN 这似乎是一个已知问题 https github com fchollet keras issues 3358TensorBoard 在此设置中不显示直方图和分布 有

随机推荐

  • 像 PHP 一样使用 Request.Form 处理 HTML 输入元素数组

    我怎样才能在asp net上正确接收这些输入数组
  • jQuery 1.9.1 $.event.handle.apply 替代品

    我最近将我的一个项目更新到 jQuery 1 9 1 我无法再使用 event handle apply 方法 我搜索并发现 我可以放置jquery migrate js 我只是想确认一下是否还有其他选择 我的 google fu 在这里失
  • MongoDB GridFs用C#,如何存储图像等文件?

    我正在开发一个以 mongodb 作为后端的网络应用程序 我想让用户将图片上传到他们的个人资料中 例如链接的个人资料图片 我正在使用带有 MVC2 的 aspx 页面 并且我读到 GridFs 库用于将大型文件类型存储为二进制文件 我到处寻
  • ActionName 的目的

    使用 ActionName 属性为操作方法设置别名有什么好处 在为用户提供使用其他名称调用操作方法的选项方面 我确实没有看到它有多大好处 指定别名后 用户只能使用别名调用操作方法 但如果这是必需的 那么为什么用户不更改操作方法的名称而不是为
  • 当 reshape 无法猜测时变变量的名称时,重塑 r 中的数据

    我有一个包含超过 1500 列的宽格式数据集 由于许多变量都是重复的 我想将其重塑为长形式 然而 r 抛出一个错误 Error in guess varying Failed to guess time varying variables
  • 如何在 C#.NET 中跨线程锁定控制台?

    我有一个logger处理各种带有漂亮颜色的信息显示的类 是的 但是 由于它写入控制台分开的步骤 即 将颜色设置为红色 写入文本 将颜色设置为灰色 写入文本 以便呈现 错误 描述 错误为红色 但我有一个多线程应用程序 因此这些步骤可能会混淆并
  • 从 SQL Server 列获取 XML 节点作为逗号分隔列表

    我有一个数据存储在 xml 列中 并且需要一个以逗号分隔的子节点列表 使用下面的脚本 我只能得到 A B C 请帮助我使用 xquery 获取 A B C 简单地用逗号替换空格没有帮助 因为我们的数据里面有空格 create table T
  • 查找给定整数序列的排列数,这些排列产生相同的二叉搜索树

    给定一个整数数组arr 5 6 1 当我们以相同的顺序使用此输入构建 BST 时 我们将 5 作为根 6 作为右子节点 1 作为左子节点 现在 如果我们的输入更改为 5 1 6 我们的 BST 结构仍然相同 那么给定一个整数数组 如何找到输
  • YouTube Android 播放器 API 在新的 YouTube 版本中解组时抛出“BadParcelableException ClassNotFoundException:asc”

    向 YouTube Android Player API 库工程师提交错误 请参阅 android youtube api 标签 在过去的一个半星期里 我注意到这个奇怪的 BadParcelableException 在我们的应用程序中稳步
  • 为什么我在运行 Python 时在 Spyder 中收到“启动内核时发生错误”?

    我已经在 Windows 8 1 系统中安装了 Anaconda python 3 7 但是 在从 Spyder 控制台运行 Python 代码时 出现以下错误 An error occurred while starting the ke
  • 从 char* 获取 istream

    我有一个 char 和从库接收的数据长度 我需要将数据传递给采用 istream 的函数 我知道我可以创建一个字符串流 但这将复制所有数据 而且 数据肯定会有 0 因为它是一个 zip 文件 并且创建字符串流将获取数据 直到我认为第一个 0
  • 如何使 JScrollPane 滚动以跟随输入焦点?

    我有一个带有大面板的 Swing 应用程序 该面板被包裹在JScrollPane 用户通常通过选项卡在面板的子组件之间移动 因此当他们使用选项卡切换到视图之外的某些内容时 我希望滚动窗格自动滚动 以便具有输入焦点的组件始终可见 我尝试过使用
  • Delphi自定义动画-碰撞检测

    我正在使用自定义绘图 2D 动画 并且正在尝试找出如何检测移动物体何时与地图中的墙壁碰撞 用户按住键盘上的方向键来移动对象 地图存储为点的数组结构 地图中的墙壁可能是有角度的 但没有弯曲的墙壁 使用地图结构 FMap TMap 在我下面的代
  • 触摸后关闭弹出窗口

    我在我的里面创建了一个弹出窗口MainViewController当使用某个按钮触摸时UIPopoverPresentationController并像 WWDC 2014 中所示那样设置它的委托 方法如下 MainViewControll
  • C 和 C++ 中带有 const 限定符的数组指针

    考虑以下程序 int main int array 9 const int p2 9 array 它在 C 中编译得很好 参见现场演示here 但在 C 中编译失败 默认情况下 GCC 会给出以下警告 参见现场演示here prog c I
  • Scala REPL:如何查找函数类型?

    在 Scala REPL 中可以找到值类型 scala gt val x 1 x Int 1 scala gt t x Int 然而 Scala REPL 不显示函数的类型信息 scala gt def inc x Int x 1 inc
  • SQLiteDatabase多线程锁定模式

    我使用此类来管理与底层 SQLiteDatabase 的连接 public class BasicDataSource protected DatabaseHandler dbHelper protected volatile SQLite
  • 使用 PyObjC 与 Mountain Lion 的通知中心合作

    我正在尝试从 python 脚本向 Mountain Lion 发送通知 并对通知的点击做出反应 发送通知现在可以完美地找到 但我无法让 Lion 在单击时回调我的脚本 这就是我所做的 我实现了一个通知类 该类实例的唯一目的是通过调用来提供
  • 在分段实时 MP4 流中发送定期元数据?

    正如主题所建议的 我想知道是否可以在分段 MP4 直播流中定期发送有关流内容的元数据 我使用以下命令 1 来获取碎片 MP4 ffmpeg i rtsp admin email protected c v copy an movflags
  • 在Python中播放WAV文件

    我尝试用 PyGame 来播放这样的 WAV 文件 import pygame pygame init pygame mixer music load mysound wav pygame mixer music play pygame e